監視

Raspberry Pi Zero で温度センサーと赤外線センサーを使ってサーバーとネットワーク機器を自動で冷やしてみた

Raspberry Pi Zero を買って放置したまま1年経ち、 夏を前にサーバーの冷却を考えていたのでタイトル通り、 Raspberry Pi と 温度センサー&赤外線センサーを使って夏を乗り切ろうっていう記事です。 ちなみに結局温度センサーは接続したものの 今回はCPUの温度やSSDの温度をトリガーとして赤外線センサーを使うので 使いませんでした?   Canon IXY 430F (4.3mm, f/2.7, 1/30 sec, ISO500)ちなみに僕は電子工作に関して全く知識がありません。 抵抗値の計算すらできません。それでもできたのでネットは偉大ですね。     買ったもの Canon IXY 430F (4.3mm, f/2.7, 1/30 sec, ISO400)・1/2W 100Ω ・1/2W 1kΩ ・ADT7410 温度センサー ・OSRB38C9AA 赤外線リモコン受信モジュール ・OSI5LA5113A 赤外線LED ・OSI5FU5111C-40 赤外線LED 何となく2種類買った ・EIC-801 ブレッドボード ・ブレッドボード・ジャンパーコード     接続 Canon IXY 430F (4.3mm, f/2.7, 1/30 sec, ISO320)基本的に赤外線LEDは1つが良い(波形が安定する?)らしいのですが 赤外線LED自体の有効照射範囲(?)が15°とかなので3つぐらい設置してみました。 ちなみに抵抗の接続の仕方などは計算ツールみたいのを使った結果を 何となく配置しただけです。 ジャンパーコードは オス – オス を買い忘れたので 抵抗の足を使いました?     WiringPiで制御する ここがとても参考になりました。 http://www.feijoa.jp/laboratory/raspberrypi/infrared2/ LIRCがも何のか分かってないけど ネットで引っかかるLIRCを使った記事ではうまくいきませんでした。     シェルスクリプトでエアコンを操作する [crayon-5b04573bc27f7498212965/]     Zabbixのメディアタイプに登録する Zabbixのメディアタイプに登録します。 手順は面倒なので割愛です。     トリガーを作成する 今回はサーバー、ルーター、スイッチのCPU温度のいずれかが 60℃を超えたらエアコンがONになるって感じ。     アクションを作成する トリガー名にEaconを含めておけば、アクションもこんな感じで設定できます。     動作確認 動画を撮って載せるのは面倒くさいのでしないんですけど エアコンを切って家をでるとSlackから通知がきます。 数分後に温度を確認すると60℃を下回っていい感じ。   素晴らしい~~~ ただ、このまま運用すると 60℃超える → エアコンON → 59℃辺りになる → エアコンOFF(ループ) となるので閾値だったり、トリガー条件をもうちょっと考えないとダメですね。

ZabbixでJWT/トークンを用いたAPIサーバーの監視を行う

ZabbixのWebシナリオ、Web監視の機能でトークンを使ったAPIサーバーの監視方法を 覚書として。 runscopeとかSaaSはあるものの月1万円近くかかるので 大した規模でないAPIサーバーならZabbixでオススメしたい。   トークンを取得するのにユーザー認証が必要なので変数に登録しておく。     Response bodyにトークンが入っているので変数の部分で正規表現をして変数にぶち込む。 regex:の後ろが正規表現が使えるようになる。 この画像の例だと [crayon-5b04573bc2a43639536523/] がボディに入っていて、 {token}にはexasllSKJasKBA_-a.asdaZZZokが入ってくる。 ここで使える正規表現はPOSIX     最初のステップで変数に入れたtokenという変数はここでも使える。 SaaSも良いけど、小規模でいいならZabbixも便利ですよ。 Zabbix嫌いな人多すぎる。

ZabbixでLXC Containerを監視する

この記事は Zabbix Advent Calendar 2016 の13日目の記事です。 前回の12日目の記事は KAZ0225さんの「Zabbix APIの検証はAdvanced REST Clientが便利です!」です! 今回は LXC Container を Zabbix で監視してみようという内容です。 なんで Docker じゃなくて LXC なのかはあまり突っ込まないでください。 ちなみに11月29日に同じような記事を書いていますがリライトといった形になります。 [blogcard url=”https://luispc.com/server/2016/11/29/8746″][/blogcard]     問題 LXC のコンテナを監視するとき zabbix-agent 入れればいいんじゃね?と私は思っていました。 LXC は KVM とは違ってハイパーバイザでBIOS含めハードウェアをエミュレートせず、OSが利用するリソースを隔離することで仮想化しています。 そして LXC Container に zabbix-agent を入れてグラフを見てみるとこんなことが起こります。   引用: ZabbixにおけるDocker監視の方法 http://www.zabbix.com/img/zabconf2015_jp/presentations/04_zabconf2015_watanabe.pdf こちらのスライドは Docker に関することが書かれていますが LXC でも同じことが言えます。 では、どうするのかというと LXC には lxc コマンドが実装されています。 例に lxc-info を出すと cgroupsでリソース管理されているのを lxc-info で整形してくれていています。 lxc コマンドをパースしていって Zabbix に登録します。     Zabbix-LXC 既にいい感じのが GitHub にありました。 [blogcard url=”https://github.com/Lelik13a/Zabbix-LXC”][/blogcard]   がこれだと複数のNICを割り当てているとトラフィック量が取得できなかったり、 LLDが機能しなかったりしたのでフォークしてみた。 [blogcard url=”https://github.com/rluisr/Zabbix-LXC”][/blogcard] Zabbix3.2で動作確認済み。     機能 修正→ LLDを使ってコンテナを自動追加 修正→ lxc-infoで確認できるリソースの監視 修正→ コンテナに1つ以上のNICがある場合でもIN/OUTの転送量が取得できる(合算するように) 追加→ ディスクの使用量をパーセンテージで 追加→ Proxmoxを使用している場合にZabbixに登録される表示名にホスト名を指定(そのまんまだとid (ex 100, 101とか)で登録される) 正直デメリットもあって、LLD側のスクリプトはPHPで書いた。 いつかは Perl で書き直したい所存…。 アイテムとしてはこんな感じです。   インストール sudoコマンド、PHPの環境が必要です。   LXCホストOS上にて sudo ./install.sh を実行 [crayon-5b04573bc2ac6360386773/]   テンプレートのインポート [crayon-5b04573bc2aca183563600/]   コンテナが登録されるまで待つ(600秒)   あとは好きなようにできるので grafana と連携すれば Zabbix をデータソースとして使用できるのでめちゃくちゃ便利   次回は nakayama_yasuhiro…

ZabbixでLinuxのソフトウェアRAIDを監視する【mdadm】

ソフトウェアRAIDにこの前を手を出してZabbixでどうにかできないかと思ってたらこんな記事を見かけた。 Zabbixエージェントで LinuxのソフトウェアRAIDを監視する egrepですごい正規表現をしてるけどイマイチ何やってるか分からないしもっといい方法がありそうだと思った。 mdadmでRAIDを作成すると、RAIDの状態が /proc/mdstat に保存される。 ディスクが2枚で、RAID1だとすると正常であれば [crayon-5b04573bc2b92892222297/] どっちかがぶっ壊れたりすると [crayon-5b04573bc2b97991402668/] UU → _U だったり U_ になったりする。 ここでトリガーが起こせる。   [crayon-5b04573bc2b9a034893609/] “grep -o”を使うとマッチした文字数分の行が返ってくる。それをwcで行数を数えれば正規表現を使わずに監視できる。 トリガーの条件式としては2じゃないときに発生させればいいので [crayon-5b04573bc2b9c562419817/] こうすれば多分発生する。 あとはZabbix agent側のconfに [crayon-5b04573bc2b9e995565853/] これを追加すれば監視ができるようになると思う。

ZabbixでSquidのFile descriptor諸々監視をする。

Squidが時たま調子が悪くて、一つの要因にFile descriptorに目を付けてるけどこれじゃない感じもある。 cache.logにも決まり文句もないし。 ともあれ虱潰しにしようということで、Zabbixで監視をしてみます。   Zabbixの外部スクリプトの場所を確認しよう [crayon-5b04573bc2cb0988913900/] “ExternalScripts=/usr/lib/zabbix/externalscripts” ここに外部スクリプトを起きます。   squidclientを入れよう [crayon-5b04573bc2cb4460715697/] squidclientで情報を取得しに行くのでsquidを入れます。 squidclientだけ入れることはできないんだろうか。   外部スクリプト本体 [crayon-5b04573bc2cb6309313732/] https://gist.github.com/rluisr/76bf3845a5daafdb40c7 このファイルをさっきのディレクトリへ保存し [crayon-5b04573bc2cba401478486/] シェルスクリプトと、Pythonが割りとメジャーらしいけどどっちも分からないのでPHPで書くことにしました。 一度ファイルに保存してるのは行数指定で変数にぶち込みたかったから。 例えば Maximum number of file descriptors の数値が欲しい時は [crayon-5b04573bc2cbc940420240/] とすれば、数値(実際には文字列)だけが返ってきます。 [crayon-5b04573bc2cbe641487208/] とすれば、Number of file desc currently in useが返ってきます。   Squidに登録 アイテムの追加から、こんな感じに設定すれば取得可能。 データ型は”文字列”でないと取得できません。 一つ一つアプリケーションを追加していくのはダルいのでテンプレートを作成しておくといいです。 トリガーとしては、Maximum number of file descriptorsが65535となっており Number of file desc currently in useが65000を超えるとアクションを起こすように。 自動でSquidを再起動するようにアクションを仕掛けてもいいですね!!!