PHPでも勉強するか! その5 ZABBIXからツイートする

 
今回やるネタはこれ。
 
GW-20160522-132207
簡単なんだけど、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つを設定します。
 
設定>ホストで確認すると、アイテムやトリガーの登録状況を確認できますね。
GW-20160522-134900
 
 
人力でアイテムとトリガーを登録してもいいですが、面倒なのでテンプレートを使いました。
ZABBIXサーバとして稼働しているのがうちだと”LANP2 副系(稼働系)”なのでホスト名をクリック
そして開いた画面でFTPテンプレートを登録。
GW-20160522-135548
 
ZABBIXサーバのアイテムに登録されたことを確認
GW-20160522-135907
 
ZABBIXサーバのトリガーに登録されたことを確認
GW-20160522-135929
 
設定>アクション>アクションの作成
・アクション
 タイトルだけつけてデフォルト。
・アクションの実行条件
 ”トリガー” ”=” でFTPトリガーを指定。
 
GW-20160522-140510
 
・アクションの実行内容
 こんな感じ。コマンドはsudoする必要無しです。
 
  「php /usr/lib/zabbix/alertscripts/alert-tweet.php “{TRIGGER.NAME}” “{TRIGGER.STATUS}”」
 
 
 

GW-20160522-140520
ZABBIXのGUIはクドいので、追加や更新ボタンの押し忘れに注意。これでZABBIXサーバ上のvsftpdのstart/stopでツイートされるようになります。
この基本を抑えれば、あらゆるZABBIXアラートをツイートできるかとおもいます。
 
 
 
 

コメントを残す

One thought on “PHPでも勉強するか! その5 ZABBIXからツイートする”