PHPでも勉強するか! その6 ZABBIXでツイート数をグラフ化する 1


いよいよおまちかねのTwitterAPIです。
やっぱりそこに人がいると面白いしやる気が持続します。

■今回のお題

スクリーンショット 2016-05-29 23.53.46

指定ユーザのツイッター数を取得しグラフ化します。

■PHPコード

[root@wiki-web-2 externalscripts]# cat tweetcount.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 = 60;
$tweetcount = 0 ;

//タイムライン取得
$tweets_obj = $connection->get("statuses/user_timeline", array(
 "screen_name" => $id ,
 "count" => "200",
 "include_rts" => "true",
));


//echo "------------------------------------\n\n";

//var_dump($tweets_obj);

//繰り返し開始
for ($i = 0; $i < count( $tweets_obj ); $i++) {

 //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 ;

■注意など
・TwitterOAuthライブラリを使います
・60分に1回取得するようにZABBIXで設定するので、60分以内のツイートの件数を算出します。
・自分がフォロワーである必要ななく誰のタイムラインでもとってこれますが
 鍵付きユーザはどうなるか試してません。
・1回に取得できるツイートは200件までです。
 →60分以内に200回以上ツイートするユーザをグラフ化したかったら
  30分、15分に1回など間隔を狭める必要アリ。
・ リツート件数も含めたいので「 ”include_rts” => “true”, 」 を書き足す。
・ライブラリの場所はフルパスで書く。
 「require “/usr/lib/zabbix/alertscripts/alert-tweet/autoload.php”; 」
・ユーザIDは引数で指定

■■■■設定方法■■■■ 

■■1
ツイッターのDeveloperページでアプリを登録する

参考 Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome

ケータイ電話の登録がうざくて、090-xxxx-xxxxだったら
90-xxxx-xxxxみたいに頭の0をとる。
連続して送ると1日空ける必要あり。

アプリを登録して認証キーを4つ控えておく。

■■3
ライブラリを仕込む。
個人的な都合で、/usr/lib/zabbix/alertscripts に。
前回の記事参照。
http://kokoro.bf1.jp/blog/archives/11721

■■3
スクリプトの場所は個人的な都合で/usr/lib/zabbix/externalscripts内に。
Twitter APIのPHPプログラムはネットにもたくさん載ってるので
今回もパクり参考にさせてもらった。

■■4
PHPファイルの権限を修正する。
chown -R zabbix:zabbix *.php
chmod 755 *.php

■■5
試しに実施してみる。60分以内のツイート件数が合ってることを確認。

[root@wiki-web-2 externalscripts]# php tweetcount.php mo_mo_tarou2001
0[root@wiki-web-2 externalscripts]#

■■6
ここからはZABBIX上で。
Virtual Machineでホスト登録をする

■■7
アイテム登録をする
スクリーンショット 2016-05-30 00.46.10

スクリーンショット 2016-05-30 00.46.15

ユーザIDは引数で指定。

■■8
グラフを登録する
スクリーンショット 2016-05-30 00.49.21

これでグラフまでOK。

—————————

若い声優さん1000人登録して、勢い監視もできちゃう!
ZABBIX、なんてすごいツールなんだお
AA_140755228874612500

ちなみにBOTだとだいたい一定時間に決まった数ツイートをするため
監視してもあまりおもしろくないです。

今回はグラフ化するところまで。
この続きについては、トリガー登録して、ツイートが一定期間なければ
「この人死んでるかも」とツイートする人間死活監視を設定する予定。

■余談

スクリプトがうまく動かない時は、単体でphpファイルを動かしてみたり、
agentログを確認しよう。

[root@wiki-web-2 externalscripts]# cd /var/log/zabbix/
[root@wiki-web-2 zabbix]# ll

-rw-rw-r-- 1 zabbix zabbix   19529  5月 29 22:07 2016 zabbix_agentd.log
-rw-rw-r-- 1 zabbix zabbix 4853321  5月 29 22:57 2016 zabbix_server.log


Leave a comment

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

One thought on “PHPでも勉強するか! その6 ZABBIXでツイート数をグラフ化する