今回やるネタはこれ。

簡単なんだけど、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からツイートする”