「Cacti」の版間の差分

提供: fukudat.net
ナビゲーションに移動検索に移動
 
(同じ利用者による、間の13版が非表示)
1行目: 1行目:
Cacti は、データロギングツール RRDtool (Round-Robin Data tool) のGUIフロントエンド。
+
[https://docs.cacti.net/ Cacti] は、データロギングツール RRDtool (Round-Robin Data tool) のGUIフロントエンド。
  
 
fukudat.net (Ubuntu 16.04) にインストールして、家庭内アプリケーションの運用管理に利用中。外部からはアクセスできないように設定されている。
 
fukudat.net (Ubuntu 16.04) にインストールして、家庭内アプリケーションの運用管理に利用中。外部からはアクセスできないように設定されている。
11行目: 11行目:
 
</pre>
 
</pre>
  
MySQL, PHP7 など必要なパッケージも自動的にインストールされる。
+
MySQL, PHP など必要なパッケージも自動的にインストールされる。
  
 
インストール中に configuration が走り、apache2、mysql の設定が行われる。
 
インストール中に configuration が走り、apache2、mysql の設定が行われる。
17行目: 17行目:
 
== Configure  ==
 
== Configure  ==
  
http://fukudat.net/cacti にアクセスして、User = admin でログイン。パスワードを設定する。
+
* http://fukudat.net/cacti にアクセスして、User = admin でログイン。パスワードを設定する。(初期パスワードは admin なのですぐに変える。)
 
+
* 画面左下の Configuration をクリック。Users を選択。guest にチェックを入れて、action = Delete を選び、Go で guest ユーザを削除。
画面左下の User Management をクリック。guest ユーザを選んで Delete + GO で guest ユーザを削除。
+
* ssh でサーバーにログインして、/usr/share/cacti/sites に .htaccess ファイルを作り、アクセス可能なユーザの設定を行う(気休め)。
 
+
* 最初から、Memory Usage, Load Average, Logged In Users, Processes のグラフが記録されている。Graph タブを選択すると表示される。
ssh でサーバーにログインして、/usr/share/cacti/sites に .htaccess ファイルを作り、アクセス可能なユーザの設定を行う(気休め)。
 
 
 
最初から、Memory Usage, Load Average, Logged In Users, Processes のグラフが記録されている。Graph タブを選択すると表示される。
 
  
 
=== SNMP の設定 ===
 
=== SNMP の設定 ===
39行目: 36行目:
  
 
=== Cacti UI での設定 ===
 
=== Cacti UI での設定 ===
 
https://localhost/cacti にアクセス。user = admin でログインして、パスワードを設定。
 
  
 
Device → localhost を開き、
 
Device → localhost を開き、
51行目: 46行目:
 
==== Network Traffic Graph の追加 ====
 
==== Network Traffic Graph の追加 ====
  
Device → localhost → Associated Data Query の Add Data Query で "SNMP - Interface Statistics" を選択して Add
+
* Device → localhost → Associated Data Query の Add Data Query で "SNMP - Interface Statistics" を選択して Add
 +
* New Graphs → Data Query "SNMP - Interface Statistics" セクションに network interface (lo, eth0 など) がリストされているはずなので、チェックして Create
  
New Graphs → Data Query "SNMP - Interface Statistics" セクションに network interface (lo, eth0 など) がリストされているはずなので、チェックして Create
+
==== CPU Usage Graph の追加 ====
 +
 
 +
* Device → localhost → Associated Graph Template の Add Graph Template で "ucd/net - CPU Usage" を選択して Add
 +
* New Graphs → Graph Template セクションの "Create: ucd/net - CPU Usage" をチェックして Create
  
 
== 任意のデータの時系列グラフ化 ==
 
== 任意のデータの時系列グラフ化 ==
  
=== データ収集 ===
+
=== データ収集コマンド ===
 +
 
 +
その時刻の最新の情報を出力する次のようなコマンド (script) を作っておく。
 +
 
 +
<pre>
 +
$ command-name  param1 param2 ...
 +
field1:value1 field2:value2 ...
 +
</pre>
  
その時刻の最新の情報を出力するコマンドを作成する。例えば、/usr/local/bin/cacti-temperature という温度を測定するコマンドを考える。
+
ここで、param1, param2... はコマンドに与える引数で、Cactiから見た入力フィールドの値になる。
 +
field1:value1, field2:value2... はコマンドが標準出力に出力する文字列で、field が Cacti 絡みた出力フィールド、value がその値となる。
  
 +
例えば、"cacti-temperature" というコマンドは引数で指定する "device-name" が測った温度と湿度が以下の形式で stdout に出力されるものとする。
 
<pre>
 
<pre>
$ cacti-temperature "device-name"
+
$ cacti-temperature U1
 +
t:25.7 h:55.4
 
</pre>
 
</pre>
  
を実行すると、"device-name"  で指定したデバイスが測った温度と湿度が以下の形式で stdout に出力されるものとする。
+
=== グラフ作成 ===
 +
コマンドが用意できたら、Cacti UI を以下のように操作する。
 +
 
 +
* Data Collection >> Data Input Methods をクリック
 +
* Data Input Methodsセクションの右上 + をクリック
 +
* Name: 適当な名前をつける
 +
* Input Type: Script/Command
 +
* Input String: コマンドのfull pathと引数に名前をつけてを<, >で囲って入力する.例えば, /path/to/command <param1> <param2>
 +
* Createボタンをクリック
 +
* 入力フィールド(コマンドへの引数)それぞれについて,Input Fieldsの右上Addをクリックして以下を入力
 +
** Field: 上記Input Stringで指定した引数を一つ選ぶ
 +
** Friendly Name: わかりやすい名前をつける
 +
** Regular Expression Match: 引数がマッチすべき正規表現.空でもよい.
 +
** Allow Empty Input: 引数が空でもよければチェック
 +
** Special Type Code: ふさわしい型があったらそれを入力
 +
* 出力フィールド(コマンドの出力変数)それぞれについて,Output Fieldsの右上Addをクリックして以下を入力
 +
** Field: フィールド名 (コマンドが出力するものと一致すること)
 +
** Friendly Name: わかりやすい名前をつける
 +
** Update RRD File: この値を使うならチェック
 +
以上でData Input Methodは登録完了.
  
 +
続いてこのData Input Methodを使ったData Sourceの定義.
 +
* Management >> Data Sources をクリック
 +
* Data Sourcesセクションの右上Addをクリック
 +
* Selected Data Template: None
 +
* Host: None
 +
* Createをクリック
 +
* Data Source: 適当な名前をつける (/var/lib/cacti/rra/の下にこの名前で始まるファイルができて,そこにデータが溜まる)
 +
* Data Source Path: なにも指定しない
 +
* Data Input Method: 上で作成したData Input Methodを選ぶ
 +
* 出力フィールドごとに以下を入力する
 +
** Internal Data Source Name: 出力フィールド名
 +
** Minimum Value: 最低値.存在しない場合はU
 +
** Maximum Value: 最大値.存在しない場合はU
 +
** Data Source Type: GUAGE, COUTNER, DERIVE, ABSOLUTE
 +
** Heartbeat: 600
 +
** Createをクリック
 +
** まだ出力フィールドがある場合はNewをクリックして繰り返す
 +
以上でData Sourceの登録完了.
 +
 +
このData Sourceを使ったグラフを作る.
 +
* Management >> Graph Managementをクリック
 +
* Graph Managementセクションの右上Addをクリック
 +
* Selected Graph Template: None
 +
* Host: None
 +
* Createをクリック
 +
* Title: グラフのタイトル
 +
* 後はデフォルトのままでCreateをクリック
 +
* このグラフに表示したいグラフアイテムそれぞれについて,Graph Itemセクションに右上Addを押して以下を入力
 +
** Data Source: 上で作成したデータソースの出力フィールドを選ぶ
 +
** Color: グラフの色を選ぶ
 +
** Opacity/Alpha Channel: 不透明度を選ぶ
 +
** Graph Item Type: 折れ線グラフならLine[123]
 +
** Consolidation Function: 値を集計する演算
 +
** 後はデフォルトでCreateをクリック
 +
 +
最後に、作ったグラフを Graph Tree に配置する。
 +
* Graph Tree >> グラフを配置したい Tree を選択 (まだ作っていなければ、Add で作成する)
 +
* Tree Items の Add を押す
 +
* Parent Item = root
 +
* Tree Item Type = Graph
 +
* Graph = 上で作った Graph を選ぶ
 +
* Round Robin Archive = 表示したい Graph の時間スケールを選ぶ (Daily)
 +
 +
=== グラフが更新されなかったら? ===
 +
 +
まずデータを格納している rrd ファイルが <code>/var/lib/cacti/rra/</code> の下にできているかどうか確認する。
 +
できていない、あるいは更新日時が新しくなっていなければ、pollar が動作していない。
 +
 +
pollar cache を更新してみる。
 
<pre>
 
<pre>
t:温度 h:湿度
+
$ cd /usr/share/cacti/cli/
 +
$ php rebuild_poller_cache.php
 
</pre>
 
</pre>
  
=== Cacti UI での設定 ===
+
mysql で cacti の poller_item が更新されているか確認。
 +
<pre>
 +
$ mysql -u root -p cacti
 +
$ select * from poller_item;
 +
</pre>
  
==== Data Input Method の作成 ====
+
== プラグイン ==
Cacti にadminでログインし、サイドメニューから、"Data Input Method" を選択。
 
  
右上の "Add" をクリック。"Name" に分かりやすい名前(例: temperature)を入力。
+
=== murlin ===
"Input Type"には  Script/Command を選ぶ。
+
[https://docs.cacti.net/userplugin:murlin murlin] は Cacti で URL Monitoring を行うプラグイン。
"Input String"にはコマンド名 (例: /usr/local/bin/cacti-temperature) を入力。
 
"Create" をクリックして新しい Data Input Method を作成する。
 
  
==== Data Fieldの定義 ====
+
=== thold ===
引き続き、このコマンドが入出力するフィールドを定義する。
+
[https://docs.cacti.net/plugin:thold#thold thold] は Cacti で閾値条件でメールを出すプラグイン。
  
* Input Fields 行の右端の "Add" ボタンを押す。
+
== データ移行プロジェクト ==
* "Friendly Name" には分かりやすいフィールド名(例: device name)を入力。
 
* "Create" をクリックして新しい Data Input Field を作成する。
 
  
* 次に、Output Field 行の右端の "Add" ボタンを押す。
+
* 温度計 C0, U1, U2 済み
* "Field" にはコマンドが出力するタグの値 (例: t とか h) を入力。
+
* 温度計 T1, T2 済み
* "Friendly Name" には分かりやすい名前 (例: temperature とか relative humidity) を入力。
+
* ガイガーカウンター gm10 済み
* "Create" をクリックして新しい Data Output Field を作成する。
+
* IIJmio 済み
  
==== Data Sourceの定義 ====
+
== 参考文献 ==
次にこれまで定義した Data Input Method を使って、Data Source を定義する。
+
* https://docs.cacti.net/
  
* 左のサイドメニューから、"Data Sources" を選択。
+
[[Category:How-To]][[Category:fukudat.net]]
* 右上の "Add" ボタンを押す。
 
* "Template", "Host" は共に None を選択。
 
* "Name" に Data Source の名前を入力 (例: temperature-デバイス名)
 
* "Data Source Path" はブランク。
 
* "Data Input Method" には先ほど作成した Data Input Method (例: temperature) を選択。
 
* "Internal Data Source Name" には、この Data Source 内で unique な名前をつける (例: temperature-デバイス名)
 

2021年10月16日 (土) 00:40時点における最新版

Cacti は、データロギングツール RRDtool (Round-Robin Data tool) のGUIフロントエンド。

fukudat.net (Ubuntu 16.04) にインストールして、家庭内アプリケーションの運用管理に利用中。外部からはアクセスできないように設定されている。

Install

シンプルに apt-get

$ sudo apt-get update
$ sudo apt-get install cacti

MySQL, PHP など必要なパッケージも自動的にインストールされる。

インストール中に configuration が走り、apache2、mysql の設定が行われる。

Configure

  • http://fukudat.net/cacti にアクセスして、User = admin でログイン。パスワードを設定する。(初期パスワードは admin なのですぐに変える。)
  • 画面左下の Configuration をクリック。Users を選択。guest にチェックを入れて、action = Delete を選び、Go で guest ユーザを削除。
  • ssh でサーバーにログインして、/usr/share/cacti/sites に .htaccess ファイルを作り、アクセス可能なユーザの設定を行う(気休め)。
  • 最初から、Memory Usage, Load Average, Logged In Users, Processes のグラフが記録されている。Graph タブを選択すると表示される。

SNMP の設定

/etc/snmp/snmpd.conf を編集して、1行追加。

rocommunity private localhost

snmpd を起動し、今後は自動で起動するように設定。

$ sudo systemctl start snmpd
$ sudo systemctl enable snmpd

Cacti UI での設定

Device → localhost を開き、

  • SNMP Version = Version 1
  • SNMP Community = private

と入力し、Save ボタンを押す。

システム監視グラフの追加

Network Traffic Graph の追加

  • Device → localhost → Associated Data Query の Add Data Query で "SNMP - Interface Statistics" を選択して Add
  • New Graphs → Data Query "SNMP - Interface Statistics" セクションに network interface (lo, eth0 など) がリストされているはずなので、チェックして Create

CPU Usage Graph の追加

  • Device → localhost → Associated Graph Template の Add Graph Template で "ucd/net - CPU Usage" を選択して Add
  • New Graphs → Graph Template セクションの "Create: ucd/net - CPU Usage" をチェックして Create

任意のデータの時系列グラフ化

データ収集コマンド

その時刻の最新の情報を出力する次のようなコマンド (script) を作っておく。

$ command-name  param1 param2 ...
field1:value1 field2:value2 ...

ここで、param1, param2... はコマンドに与える引数で、Cactiから見た入力フィールドの値になる。 field1:value1, field2:value2... はコマンドが標準出力に出力する文字列で、field が Cacti 絡みた出力フィールド、value がその値となる。

例えば、"cacti-temperature" というコマンドは引数で指定する "device-name" が測った温度と湿度が以下の形式で stdout に出力されるものとする。

$ cacti-temperature U1
t:25.7 h:55.4

グラフ作成

コマンドが用意できたら、Cacti UI を以下のように操作する。

  • Data Collection >> Data Input Methods をクリック
  • Data Input Methodsセクションの右上 + をクリック
  • Name: 適当な名前をつける
  • Input Type: Script/Command
  • Input String: コマンドのfull pathと引数に名前をつけてを<, >で囲って入力する.例えば, /path/to/command <param1> <param2>
  • Createボタンをクリック
  • 入力フィールド(コマンドへの引数)それぞれについて,Input Fieldsの右上Addをクリックして以下を入力
    • Field: 上記Input Stringで指定した引数を一つ選ぶ
    • Friendly Name: わかりやすい名前をつける
    • Regular Expression Match: 引数がマッチすべき正規表現.空でもよい.
    • Allow Empty Input: 引数が空でもよければチェック
    • Special Type Code: ふさわしい型があったらそれを入力
  • 出力フィールド(コマンドの出力変数)それぞれについて,Output Fieldsの右上Addをクリックして以下を入力
    • Field: フィールド名 (コマンドが出力するものと一致すること)
    • Friendly Name: わかりやすい名前をつける
    • Update RRD File: この値を使うならチェック

以上でData Input Methodは登録完了.

続いてこのData Input Methodを使ったData Sourceの定義.

  • Management >> Data Sources をクリック
  • Data Sourcesセクションの右上Addをクリック
  • Selected Data Template: None
  • Host: None
  • Createをクリック
  • Data Source: 適当な名前をつける (/var/lib/cacti/rra/の下にこの名前で始まるファイルができて,そこにデータが溜まる)
  • Data Source Path: なにも指定しない
  • Data Input Method: 上で作成したData Input Methodを選ぶ
  • 出力フィールドごとに以下を入力する
    • Internal Data Source Name: 出力フィールド名
    • Minimum Value: 最低値.存在しない場合はU
    • Maximum Value: 最大値.存在しない場合はU
    • Data Source Type: GUAGE, COUTNER, DERIVE, ABSOLUTE
    • Heartbeat: 600
    • Createをクリック
    • まだ出力フィールドがある場合はNewをクリックして繰り返す

以上でData Sourceの登録完了.

このData Sourceを使ったグラフを作る.

  • Management >> Graph Managementをクリック
  • Graph Managementセクションの右上Addをクリック
  • Selected Graph Template: None
  • Host: None
  • Createをクリック
  • Title: グラフのタイトル
  • 後はデフォルトのままでCreateをクリック
  • このグラフに表示したいグラフアイテムそれぞれについて,Graph Itemセクションに右上Addを押して以下を入力
    • Data Source: 上で作成したデータソースの出力フィールドを選ぶ
    • Color: グラフの色を選ぶ
    • Opacity/Alpha Channel: 不透明度を選ぶ
    • Graph Item Type: 折れ線グラフならLine[123]
    • Consolidation Function: 値を集計する演算
    • 後はデフォルトでCreateをクリック

最後に、作ったグラフを Graph Tree に配置する。

  •  Graph Tree >> グラフを配置したい Tree を選択 (まだ作っていなければ、Add で作成する)
  • Tree Items の Add を押す
  • Parent Item = root
  • Tree Item Type = Graph
  • Graph = 上で作った Graph を選ぶ
  • Round Robin Archive = 表示したい Graph の時間スケールを選ぶ (Daily)

グラフが更新されなかったら?

まずデータを格納している rrd ファイルが /var/lib/cacti/rra/ の下にできているかどうか確認する。 できていない、あるいは更新日時が新しくなっていなければ、pollar が動作していない。

pollar cache を更新してみる。

$ cd /usr/share/cacti/cli/
$ php rebuild_poller_cache.php 

mysql で cacti の poller_item が更新されているか確認。

$ mysql -u root -p cacti
$ select * from poller_item;

プラグイン

murlin

murlin は Cacti で URL Monitoring を行うプラグイン。

thold

thold は Cacti で閾値条件でメールを出すプラグイン。

データ移行プロジェクト

  • 温度計 C0, U1, U2 済み
  • 温度計 T1, T2 済み
  • ガイガーカウンター gm10 済み
  • IIJmio 済み

参考文献