PHPでも勉強するか! その8 ZABBIXでTLキーワード監視1

 
最終的に実はこれがやりたかったんです。ZABBIXでTLキーワード監視をして、アラートをツイートする。お友達のプリさんの全面協力の元、本プログラムの開発を行いました。この場を借りて深くお礼申し上げます。m(_ _)m
 
 
■今回のお題
 
スクリーンショット 2016-05-30 22.15.48
 
15分の間に特定キーワードが何回つぶやかれたかをカウントしトリガーにかかったらツイートします。
 

[root@wiki-web-2 externalscripts]# cat tweet_wordcounter.php
#!/usr/bin/php
<?php
// OAuthライブラリの読み込み
require "/usr/lib/zabbix/alertscripts/alert-tweet/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
//認証情報4つ
$consumerKey = "XXXXXXXXXX";
$consumerSecret = "XXXXXXXXXX";
$accessToken = "XXXXXXXXXX";
$accessTokenSecret = "XXXXXXXXXX";
//接続
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
//変数定義
$id = $argv[1];
$LastMin1 = 15 ;
$tweetcount = 0 ;
//タイムライン取得
$tweets_obj = $connection->get("statuses/user_timeline", array(
 "screen_name" => $id ,
 "count" => "100",
 "include_rts" => "true",
));
//echo "------------------------------------\n\n";
//繰り返し開始
for ($i = 0; $i < count( $tweets_obj ); $i++) {
 //echo $tweets_obj[$i]->created_at . "\n";
        //文字検索
        $mojikakunin = $tweets_obj[$i]->text ;
        if(preg_match( "/$argv[2]/" , $mojikakunin)) {
                //echo $tweets_obj[$i]->created_at . "\n";
                        //ツイート日時
                        $date1 = $tweets_obj[$i]->created_at;
                        $tweettime1 = date('Y-m-d H:i:s', strtotime($date1));
                        //echo $tweettime1 . " ツイート時間";
                        //echo "\n";
                        //現在時間
                        $date2 = time() ;
                        $nowtime = date( 'Y-m-d H:i:s' , $date2 ) ;
                        //echo $nowtime . " 現在時間" ;
                        //echo "\n";
                        //時間差分算出
                        $datetime1 = date_create( $tweettime1 );
                        $datetime2 = date_create( $nowtime );
                        $interval = $datetime1->diff($datetime2);
                        //差分算出
                        $diffday1 =  $interval->format('%Y-%m-%d') ;
                         //echo $diffday1 . " 日にち差" . "\n" ;
                        $difftime1 =  $interval->format('%H') ;
                         //echo $difftime1 . " 時間差 Hour" . "\n" ;
                        $difftime2 =  $interval->format('%i') ;
                         //echo $difftime2 . " 時間差 Minint" . "\n" ;
                       //一定時間内ならツイートを表示
                        if( $diffday1 == "00-0-0" and $difftime1 == "00" and $difftime2 < $LastMin1 ) {
                                //echo "No " . $i . "\n" ;
                                //echo "ツイート時間:" . $tweettime1 . "\n" ;
                                //echo $tweets_obj[$i]->text . "\n" ;
                                //echo "----------\n";
                                ++$tweetcount ;
                        } else {
                                //echo " 該当ツイート無し " ;
                        }
        }
}
//echo "時間内のツイート数 " . $tweetcount . "\n" ;
echo $tweetcount ;

 
 
/usr/lib/zabbix/externalscripts に設置します。引数はIDとキーワードの2つを指定します。ユーザのタイムラインは1回に200件までしか取得できませんのでスクリプトは15分に1回実施することにしました。
 
 
 

——————————-
 
■■■ 設定 ■■■

 
スクリーンショット 2016-05-30 22.27.28
 
アイテムをバンバン登録します。
 
 
スクリーンショット 2016-05-30 22.27.33
 
中身はこんな感じです。キーの書き方はこんな感じで書いてください。更新間隔は900秒=15分です。
 


 
スクリーンショット 2016-05-30 22.28.07
 
続いてトリガー。連載で何度も言ってますがトリガー名は重要です。カテゴリ毎に僕はタグ付けをしてそれをアクションでフィルタして使ってます。なので[TL状況]とつけています。 
 
スクリーンショット 2016-05-30 22.28.15
プリさんのミクさん度というトリガーの中身。直近のチェック(15分に1回)で4回超え(5回以上)だったらアラートです。
 
 
スクリーンショット 2016-05-30 22.28.39
プリさんの変態度というトリガーです。これは複合要素で、画像の説明枠に記載されている条件を書いてます。条件式ビルダーを使ってもいいでしょう。
 
 


 
スクリーンショット 2016-05-30 22.29.09
 
グラフ登録をします。ZABBIXの登録はシンプルで
1 ホスト
2 トリガー
3 グラフ
4 アクション
この順とこの4項目を設定するんだ、と覚えておけば楽勝です。
 
次回に続きます。
 
 
 

コメントを残す

2 thoughts on “PHPでも勉強するか! その8 ZABBIXでTLキーワード監視1”