今回やるネタはこれ。
簡単なんだけど、30時間くらいかかった(´・ω・`)
とりあえずZABBIXサーバ上のFTPサービスを監視対象としました。
■■PHPの仕込み
PHPでツイートする基本についてはこちらで勉強。PHPからTwitterツイート(2015年2月版)
http://qiita.com/tsunet111/items/9309801cd3e3bcf6e32a
PHP 5分で出来る!Twitter API アプリケーション認証(Application-only authentication)
https://blog.apar.jp/php/2778/
PHPでTwitterへ自動でツイートするツールを作る
http://9-bb.com/php-twitter/
上記サイトをパクって参考にPHPファイルを作りました。
未だに== と = の違いがわかってないです。この辺が苦労しました。if分の時は条件だから == で、変数に入れる値は = って感じなのかな(汗)あとautoload.phpの指定はフルパスで書いてください。下の方の行は、実際ツイートする前にローカルログに吐き出させてみた時の残骸。
<?php // OAuthライブラリの読み込み require "/usr/lib/zabbix/alertscripts/alert-tweet/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //認証情報4つ $consumerKey = "XXXXXXXX"; $consumerSecret = "XXXXXXXX"; $accessToken = "XXXXXXXX"; $accessTokenSecret = "XXXXXXXX"; //接続 $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); //status文字変更 if ($argv[2] == 'OK' ) { $status = '復旧なう'; } else { $status = '障害なう'; } $body = "[わいシステム] " . $argv[1] . " " . "状況:" . $argv[2] . " [" . $status . "]" ; //ツイート $res = $connection->post("statuses/update", array("status" => $body )); //レスポンス確認 //var_dump($res); //テストファイル出力 //$date = date('c'); //$log1 = $date . $body ; //file_put_contents("/var/log/zabbix/tweet-alert.log" , $log1);
ZABBIXから渡される{TRIGGER.STATUS}を見て文字を変えるようにしてます。
スクリプトファイルは /usr/lib/zabbix/alertscripts に置きました。
アブラハムさんのtwitteroauthをダウンロードしてフォルダ名は”alert-tweet”に
リネームしてまるごと置いておきます。
[root@wiki-web-2 alertscripts]# ls -lR .: 合計 16 drwxrwxrwx 4 zabbix zabbix 4096 5月 15 09:28 2016 alert-tweet -rwxrwxrwx 1 zabbix zabbix 1018 5月 22 12:37 2016 alert-tweet.php ./alert-tweet: 合計 32 -rwxrwxrwx 1 zabbix zabbix 1100 4月 21 08:23 2016 LICENSE.md -rwxrwxrwx 1 zabbix zabbix 1000 4月 21 08:23 2016 README.md -rwxrwxrwx 1 zabbix zabbix 983 4月 21 08:23 2016 autoload.php -rwxrwxrwx 1 zabbix zabbix 982 4月 21 08:23 2016 composer.json -rwxrwxrwx 1 zabbix zabbix 685 4月 21 08:23 2016 phpmd.xml -rwxrwxrwx 1 zabbix zabbix 274 4月 21 08:23 2016 phpunit.xml drwxrwxrwx 3 zabbix zabbix 4096 4月 21 08:23 2016 src drwxrwxrwx 3 zabbix zabbix 4096 4月 21 08:23 2016 tests ./alert-tweet/src: 合計 308 -rwxrwxrwx 1 zabbix zabbix 1851 4月 21 08:23 2016 Config.php -rwxrwxrwx 1 zabbix zabbix 692 4月 21 08:23 2016 Consumer.php -rwxrwxrwx 1 zabbix zabbix 1073 4月 21 08:23 2016 HmacSha1.php -rwxrwxrwx 1 zabbix zabbix 6194 4月 21 08:23 2016 Request.php -rwxrwxrwx 1 zabbix zabbix 2063 4月 21 08:23 2016 Response.php -rwxrwxrwx 1 zabbix zabbix 1731 4月 21 08:23 2016 SignatureMethod.php -rwxrwxrwx 1 zabbix zabbix 833 4月 21 08:23 2016 Token.php -rwxrwxrwx 1 zabbix zabbix 13344 4月 21 08:23 2016 TwitterOAuth.php -rwxrwxrwx 1 zabbix zabbix 146 4月 21 08:23 2016 TwitterOAuthException.php drwxrwxrwx 2 zabbix zabbix 4096 4月 21 08:23 2016 Util -rwxrwxrwx 1 zabbix zabbix 3418 4月 21 08:23 2016 Util.php -rwxrwxrwx 1 zabbix zabbix 250607 4月 21 08:23 2016 cacert.pem ./alert-tweet/src/Util: 合計 4 -rwxrwxrwx 1 zabbix zabbix 606 4月 21 08:23 2016 JsonDecoder.php ./alert-tweet/tests: 合計 628 -rwxrwxrwx 1 zabbix zabbix 1383 4月 21 08:23 2016 AbstractSignatureMethodTest.php -rwxrwxrwx 1 zabbix zabbix 381 4月 21 08:23 2016 ConsumerTest.php -rwxrwxrwx 1 zabbix zabbix 995 4月 21 08:23 2016 HmacSha1Test.php -rwxrwxrwx 1 zabbix zabbix 705 4月 21 08:23 2016 TokenTest.php -rwxrwxrwx 1 zabbix zabbix 10128 4月 21 08:23 2016 TwitterOAuthTest.php drwxrwxrwx 2 zabbix zabbix 4096 4月 21 08:23 2016 Util -rwxrwxrwx 1 zabbix zabbix 505 4月 21 08:23 2016 bootstrap.php -rwxrwxrwx 1 zabbix zabbix 215694 4月 21 08:23 2016 kitten.jpg -rwxrwxrwx 1 zabbix zabbix 559 4月 21 08:23 2016 sample_env -rwxrwxrwx 1 zabbix zabbix 383631 4月 21 08:23 2016 video.mp4 ./alert-tweet/tests/Util: 合計 4 -rwxrwxrwx 1 zabbix zabbix 1258 4月 21 08:23 2016 JsonDecoderTest.php
■■ZABBIX登録
ZABBIXの基本構造
①アイテム:何を監視するか
②トリガー:アイテムがどういう状態になったら障害ステータスとするか
③アクション:どういう条件で、どういう手段で発報するか
この3つを設定します。
設定>ホストで確認すると、アイテムやトリガーの登録状況を確認できますね。
人力でアイテムとトリガーを登録してもいいですが、面倒なのでテンプレートを使いました。
ZABBIXサーバとして稼働しているのがうちだと”LANP2 副系(稼働系)”なのでホスト名をクリック
そして開いた画面でFTPテンプレートを登録。
ZABBIXサーバのアイテムに登録されたことを確認
ZABBIXサーバのトリガーに登録されたことを確認
設定>アクション>アクションの作成
・アクション
タイトルだけつけてデフォルト。
・アクションの実行条件
”トリガー” ”=” でFTPトリガーを指定。
・アクションの実行内容
こんな感じ。コマンドはsudoする必要無しです。
「php /usr/lib/zabbix/alertscripts/alert-tweet.php “{TRIGGER.NAME}” “{TRIGGER.STATUS}”」
ZABBIXのGUIはクドいので、追加や更新ボタンの押し忘れに注意。これでZABBIXサーバ上のvsftpdのstart/stopでツイートされるようになります。
この基本を抑えれば、あらゆるZABBIXアラートをツイートできるかとおもいます。
One thought on “PHPでも勉強するか! その5 ZABBIXからツイートする”