2018年4月16日月曜日

Cacti で snmp を使ったデータ取得(AlaxalA温度)

スクリプトを使ったメモリ使用状況をと思っていましたが、その前に snmpを使ったデータ取得をしてみることにしました。ちなみに取得するデータは一つだけです。うまくいったら複数取得に進もうと思います。

AlaxalA の温度取得の MIB は .1.3.6.1.4.1.21839.2.2.18.2.1.3.1.3.1.1 になります。バージョンが 0.x台の Cactiでの snmpデータ取得が書かれているサイトですと、値の取得時は [Data Input Methods] で Input Methods を作成となっていましたが、1.x 台ですと Input Methods の指定をする必要は無いようです。(というか、プルダウンコンボの選択肢は「Script/Command」と「Script Server」だけでした。)

cacti_00

自分は次の手順で登録を行ないました。

【Step.1: Data Template の作成】

  1. [Console]→"Templates"→[Data Source]をクリック
  2. Data Templatesバーの右端"+"をクリックし、項目の入力

    Data Templates
       Name AlaxalA - Temperature
  3. Data Source
       Name: |host_description| - Temperature
       Data Input Method: Get SNMP Data
       Data Source Profile:System Dedault
       Data Source Active: Data Source Activeにチェックを入れる

    Data Source Item
       Internal Data Source Name:Temperature
       Minimum Value ("U" for No Minimum):0
       Maximum Value ("U" for No Maximum):0
       Data Source Type:GAUGE
    cacti_01

    項目入力後、Createボタンをクリック。

  4. Custom Data [data input: Get SNMP Data] が画面下部に追加されるので、
      OID:.1.3.6.1.4.1.21839.2.2.18.2.1.3.1.3.1.1
      SNMP Version: 2
    を入力して Saveボタンをクリック。


次はグラフテンプレートを作成します。

【Step.2: Graph Template の作成】

  1. [Console]-"Templates"→[Graph]をクリック
  2. Graph Templatesバー右端の"+"をクリック。

  3. 項目が多いので、入力・変更した点のみ記述
    Tempate [new]
       Name:AlaxalA - Temperature

    Graph Template Options
       Common Options
        Title:|host_description| - Temperature
        Vertical Label (--vertical-label):Temperature - Celsius

    Scaling Options
        Auto Scale: チェックを外す
       Upper Limit (--upper-limit): 55
    cacti_02

    Auto Scale は動作保証温度50℃(ファン無しは45℃)に対する絶対値のグラフを見たいの外しました。
    Upper Limit は 55℃まで見たいので 55 にしましたが、10単位で表示されるようで、作成されたグラフを見たら 60になっていました。
    ※変更なし部分はたたんであります。

    項目入力後、Createボタンをクリック。
    cacti_02
  4. Graph Template Items と Graph Item Inputs が上部に追加されますので、表示したい項目を入力します。各パラメータの意味はパソコンおやじさんのRRDTool+Cactiによるサーバ監視(Linux編)が詳しいです。
    グラフの色ですが、Cacti のスキンを Classic以外にすると、全色表示されません。(全色表示されると逆に選ぶのが大変だったりますが...)
    とりあえずこんな感じで作ってみました。
    cacti_03
    cacti_04
    で、表示されたのがこちら。
    cacti_05
    なんか殺風景でかっこわるい。
  5. 他のグラフテンプレートを見てみると、Graph Template Itemsの Text Format に表示用の文字が入っていたので指定してみました。結果がこちら。
    cacti_06
    cacti_07
    概ね希望通りの表示なのでokとします。欲を言えば
    ・小数点以下を一桁に
    ・度数の後に℃を表示したい(マルチバイト文字は化けるので×)


値一つの snmpデータの表示ができたので、次は複数値の表示挑戦予定です。

2018/04/20 追記
 既存のグラフテンプレートを見ると、今回の設定と違っていました。GPRINT は GPRINT だけのものが選択されていました。Consolidation Function (CF Type)で MAX とか LAST を選ぶようです。次のように変更をしました。

cacti_04-2

2018年3月12日月曜日

cacti でダッシュボード(もどき)

機器登録も完了して、ほぼ運用体制が完了。こうなるとダッシュボードっぽいものが欲しくなってきました。

デフォルトでは用意されていないので、グーグル先生にきいてみたところ DDN LAB'SさんのCactiで好きなグラフだけ集めたダッシュページを作るが参考になりそうです。

でさっそく htmlファイルを作成してみました。Cacti が動いているローカルサーバのロードアベレージとメモリの状態。
cacti_dashboard01

これでいいかなと思ったのですが、動的にグラフを作成するため数が少ない時は問題なのですが、しょぼい自サーバでノード数が多くなるとリロード時に表示する数分グラフ作成が走るので、画面表示に時間がかかりすぎました。

じゃぁMRTGみたいにグラフのPNGファイルを作っておけばいいんじゃないと思い、5分ごとにグラフを作ることにしました。rrdtool のオプションとか全然知らないので、

  • グラフ表示右端歯車マークをクリック
  • 遷移した場面右端のスパナ(?)みたいなマークをクリック

で表示された RRDtool Command を参考にシェルを作成しました。--start とか --end とかはUNIXタイムで指定してあげる必要がありそうです。

シェルの中で指定することもできるんでしょうけど、自分のスキルでは力及ばず解決に至りませんでした。力業で perlスクリプトを作り、戻り値をセットすることで逃げました。

Cacti が 5分ごとに動いているので、グラフ作成用のシェルを Cactiが動いた後の1分後に動かすようにしました。1,6,11 ... 56 って指定するのが面倒なので調べてみたところ、

# cat /etc/cron.d/cacti
*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
1-56/5 * * * *  root    /root/script/makegraph.sh > /dev/null 2>&1

って書いてあげれば自分の要望を満たしてくれることが分かりました。こんな書き方もできるんですねぇ。

で、できたのが↓こちら。
cacti_dashboard02

15分平均はいらないので、最終的には次のようにしました。
cacti_dashboard03

個人的にはこれで満足できるレベル。メモリ使用状況が freeコマンドで表示される free の値が気に入らないので、次は標準で用意されているデータテンプレートとグラフテンプレートを使うのをやめ、自分用に一から作ってみることにします。(freeコマンドとfree値ではなく、availableの値を空き容量として表示させたい。かつ2Gと4Gに線を引いてみたい。)

2018年2月19日月曜日

Cacti 1.1.33 から 1.1.35 にアップグレードする

ブラウザが Chrome の場合はキャッシュクリアが必要なことが分かったので、1.1.33 から 1.1.35 にアップグレードしてみた。

んー、何の問題もなく完了。失敗は成功の母というが、まさにその通りですね。失敗した数だけ成長している! (のか?)

2018年2月18日日曜日

LED電球切れた...

LDA7L-H-V5
2012年7月3日にオーム社のLED電球を買い、2個ある片側を交換。

特に問題もなかったので、その年の暮れ(?)だったかにアイリスオーヤマの LDA7L-H-V5 を追加購入し、両方LED化しました。

オーム社のLEDにしなかったのは記憶にないのですが、おそらくアイリスオーヤマの方がモノが良いのではないかと判断した気がします。




ところが、本日後から買ったアイリスオーヤマの LED電球が切れてしまいました。当たりはずれはあるものの、自分の中ではアイリスオーヤマの株が下がりました...

CM-A40GL
代わりに買ったのが、近所のスーパーで安かったドウシシャのCMA40GL。518円税込みでした。

オーム社とドウシシャ、今度はどちらが先に切れるか? 5年半先行しているオーム社が切れるのが先だとは思いますが、その日がいつになるか?

2018年2月6日火曜日

Cacti のアップグレード失敗は ESXi が原因でした... (←ではない!)

もう一台仮想マシンを作成し、原因追及を使用と思った時のことでした。NIC は認識しているのにネットワーク接続ができない。接続中をチェックし、OKボタンをクリックするも再確認をするとチェックが外れている。なぜ?!

ESXi

そういえばメモリーリークで NIC を認識しても接続ができない BUG があったような... ちなみに使用している ESXi のバージョンは ESXi 5.1 Update 2 (5.1.0 1483097) で既知の不具合、本番環境はだいぶ前に ESXi 5.1 Express Patch 4 (5.1.0 1612806) に上げたことを思い出しましたよ。

本番環境に合わせてこちらもパッチを当てておけばよかったです... ssh で入る設定もしていないので、ログも見られず。でも多分当たり。(年末あたりからシステム入れ替え予定なので、検証用の ESXi はパッチを当てず運用予定。← いいのか?)

一人用検証環境(HP MicroServer メモリ6Gショボショボ環境)なので、仮想マシンをシャットダウンして ESXi を再起動。全ての問題は解決しました!

Cacti 1.1.33 のインストール設定も ok でした。バージョンアップしたときも、こちらが原因でうまく動いていないように見えたのかもしれませんね。

再起動前の変な環境でも、Chrome は×、Firefox だと〇だったので、ブラウザによるものかなと思ったりしたのですが、再起動後はどちらのブラウザでも問題ありませんでした。

2018/02/07 追記
 また Console → [Management] → Devices で snmp取得がぐるぐる回る現象が発生。Chrome のキャッシュを削除したら治った。おかしくなった(実はなっていない?!)ときは Chrome のキャッシュを削除するようにしよう。

 NIC が接続できなかったのは ESXi のBUGに起因するけど、Cacti の表示がおかしくなったのは Chromeのキャッシュで確定ですかね。別マシンから Chrome でアクセスすれば問題なかったし、問題のある端末でも Firefoxに変えたらOKだったので。

2018/02/19 追記
 アップグレード時に自分で

3.アップグレード確認の画面に遷移
 注意書きを一通り読む

と書いておきながら、全然読んでいませんねぇ。Chrome使っているならキャッシュをクリアしろって書いてあるじゃないですか... 謎が解けました!

2018年2月4日日曜日

Cacti 1.1.28 から 1.1.33 にアップグレードは失敗でした...

問題なく終了したと思ったのですが、なにかがうまくいっていなかったようです... グラフの更新とか問題なかったのでokだと思っていたのですが。

既存デバイスを consoleタブ → [Management] → Devices から選択(新規デバイスつ登録時も同じ)すると 1.1.28 はサクッと SNMP Information が表示されるのですが、1.1.33 ではぐるぐる回っているだけで待てども終了する兆し無し。

キャプチャするのを逃しましたが、SNMP のバージョンを v2 で指定しているのに、v3 の項目が表示されたりしてなにかがおかしくなっているようです。

1.1.28
capture_window-device-1.1.28

1.1.33
capture_window-device-1.1.33

スナップショットから戻しと思いましたが、okだと思い削除しており後の祭り状態。データ取り始めて数日なので、諦めて 1.1.33 で再構築することにしました。

phpファイルの上書きだけなので、yum のアップデートで特に問題になるとは思っていませんでした。ちょっと見通しが甘かったですね...

次回バージョンアップの機会で再チャレンジです。

2018/02/06 追記
 もしかしたら全然問題なくアップデートできていたのかもしれません。ESXi のメモリーリークが原因だったのかも。

2018/02/19 追記
 アップグレード時に自分で

3.アップグレード確認の画面に遷移
 注意書きを一通り読む

と書いておきながら、全然読んでいませんねぇ。Chrome使っているならキャッシュをクリアしろって書いてあるじゃないですか... 謎が解けました!

2018年2月1日木曜日

Cacti 1.1.28 から 1.1.33 にアップグレードする

設定も終わり、トラフィック監視もそれとなくできている今日この頃。月初になったので CentOS関連の更新があるかと思い確認したところ

[rot@cacti ~]$ sudo yum check-update
[sudo] A0gaku のパスワード:
読み込んだプラグイン:fastestmirror, langpacks
base                                                     | 3.6 kB     00:00
epel/x86_64/metalink                                     | 7.7 kB     00:00
epel                                                     | 4.7 kB     00:00
extras                                                   | 3.4 kB     00:00
mariadb                                                  | 2.9 kB     00:00
updates                                                  | 3.4 kB     00:00
(1/4): epel/x86_64/updateinfo                              | 879 kB   00:00
(2/4): extras/7/x86_64/primary_db                          | 166 kB   00:00
(3/4): epel/x86_64/primary_db                              | 6.2 MB   00:00
(4/4): updates/7/x86_64/primary_db                         | 6.0 MB   00:01
Loading mirror speeds from cached hostfile
  * base: ftp.riken.jp
  * epel: ftp.riken.jp
  * extras: ftp.riken.jp
  * updates: ftp.riken.jp

cacti.noarch                       1.1.33-1.el7                          epel
epel-release.noarch                7-11                                  epel
tzdata.noarch                      2018c-1.el7                           updates
yum.noarch                         3.4.3-154.el7.centos.1                updates

と Cacti 1.1.33 がリリースされていました。rpm は 1.1.28 の次に 1.1.33 でしたね。Changelog を見ると色々と更新されていました。先々のことを鑑み、アップグレードをしてみます。

アップグレードの方法ですが、次の方針で行うことにしました。

  1. cronを止める
    # vi /etc/cron.d/cacti
    先頭に '#' を入れ、cron を無効化
  2. ESXi に入れてあるのでスナップショットの作成
  3. yum で cacti のアップデート
    # yum update -y cacti
  4. spine のソースを落としコンパイル → インストールまで
  5. ブラウザで管理画面にログイン
    今回は設定の確認だけで、特に変更する箇所(赤字)はありませんでした
  6. cronを動かす
    # vi /etc/cron.d/cacti
    先頭の '#' を削除し、cron を有効化

特に問題もなくアップグレードができました。本当だったら DBのバックアップとか旧Cacti環境のバックアップが必要なんでしょうけど、ダメだったらスナップショットから戻す方針で作業を実施しました。

5分以内に完了しなかったので、ログが 1回分欠落しているけど許容範囲ということで。

終わってから気が付きましたが、項番4. の spine のインストールですが、make を完了し make install 待ちにしておくと時間短縮ができましたね... 項番5. のチェックで修正が入るとダメですけど。

---
2018/02/19 追記
 自分の場合、監視する台数も少ないんで spine → cmd.php に切り替えて、アップデート後のんびりと spine を入れてあげればいいですね。焦らなくていいので、こちらの方法がベストかも。
---

作業時の画面ショットはこんな感じ。

1.管理画面にアクセス
 Beginボタンをクリック
capture_window-upd1

2.パラメータチェックの画面に遷移
 赤字の項目は無し
capture_window-upd2

3.アップグレード確認の画面に遷移
 注意書きを一通り読む
capture_window-upd3

4.アップグレード成功の画面に遷移
 ダメだったら潔く(?)スナップショットから 1.1.28 の旧環境に戻す
capture_window-upd4

5.ログを確認してみる
 1回分ロスト、想定内
 ※14:40 の RRDsProcessed:60 になっているのは何だろう?
capture_window-upd_log


2018/02/04 追記
 グラフの更新がうまくいっているので問題ないと思っていましたが、実は失敗していました...

2018/02/06 追記
 問題無かったのかもしれません。ESXi のメモリーリークが原因でした。 

2018/02/19 追記
 
↑ メモリーリークは NIC が接続できないには関連していましたが、cacti のバージョンアップとは無関係の模様。

 アップグレード時に自分で

3.アップグレード確認の画面に遷移
 注意書きを一通り読む

と書いておきながら、全然読んでいませんねぇ。Chrome使っているならキャッシュをクリアしろって書いてあるじゃないですか... 謎が解けました!