読者です 読者をやめる 読者になる 読者になる

すてにゃん氏の技術ぶろぐ

技術っぽいこと書きます

Mackerelを使ってTwitterを監視してみよう

Advent Calendar mackerel

Mackerel Advent Calendar 2015 12月11日の記事です。
昨日の担当は @kuchitama さんでした。
qiita.com
blog.share-wis.com


こんにちは、 すてにゃん( id:stefafafan ) といいます。Mackerelチームに配属している新入社員です。自分は元々大学ではWeb系のことはほとんどやっていなかったので、サーバ監視もほぼ無縁でした(おそらくそういったエンジニアも多いと思います。)Mackerelはそういうサーバとかに全然詳しくないエンジニアに対してもとてもやさしくて、実はサーバ以外のことも色々監視できるので今回は私の好きなTwitterを監視してみました。

手順は以下のとおりです。

Mackerelにユーザ登録する

まずはユーザ登録しましょう。登録はとても簡単です(最初の2週間はトライアル期間で色々な機能が試せて、その後フリープランにうつります)。
Sign Up · Mackerel

登録したらチュートリアルとかが表示されると思うのでそのへんをやってみると良いと思います。

サービスを登録する

左側にサイドバーがあると思います。そこに Services という項目があるのでクリックして、新しいサービスを追加してみましょう。サービス名とメモを自由に指定してあげましょう。ここまで出来たらこういう画面になるかと思います。
f:id:stefafafan:20151204175234p:plain

Roles と Service Metrics という2つのタブがありますが、今回は Service Metrics のタブを使います。Service Metrics タブに行くと実際に試せる curl コマンドがあるのでそれを実行してみるとグラフが表示されます。簡単!!

Twitter APIを叩く

今回はとりあえず自分のTLの流速を観測したいと思い、Python用のTwitterライブラリのTweepyを使って1分間に流れてくるツイート数を集計してみました。今回はMackerelの記事なのでTwitterAPI、tweepyの使い方などは以下の記事を参照してください。
stefafafan.hatenablog.com

サービスメトリックをPOSTする

さて、Twitterからツイート数などが集計したらどうすればいいのでしょうか。
上のcurlコマンドを見た方ならわかると思いますが、name, time, valueの3項目をPOSTするだけでグラフに値が反映されます。サービスメトリックの名前と取得時間と値ですね。
これの配列を作り、JSONをPOSTすればよいだけです。私は以下のようなJSONをPOSTしました。

[
  {
      'name': 'twitter.userstream.stefafafan_tweet_count',
      'time': 1449221691,
      'value': userFeedCount
  },
  {
      'name': 'twitter.userstream.timeline_tweet_count',
      'time': 1449221691,
      'value': homefeedCount
  },
  {
      'name': 'twitter.userstream.retweeted_tweet_count',
      'time': 1449221691,
      'value': retweetedFeedCount
  }
]

なおPOSTの仕方についてですが、自分の好きな言語でJSON化してリクエストを送ればいいだけですが、例えば Python だと以下のようなPython向けのMackerelクライアントがあるので便利です。
github.com

これを使えば上記の metrics 配列をこのように簡単にPOSTできます:

client = Client(mackerel_api_key='<API key>')
client.post_service_metrics('<Service name>', metrics)

優越感に浸る

上記の簡単なステップにより無事TLを美しくMackerelのグラフで監視できるようになりました。
f:id:stefafafan:20151204182626p:plain

一目で深夜の流速の速さに対する、午前4~5時の流速の遅さが比較できて楽しいです。
自分のツイート・リツイート・それ以外のツイートでわけて集計してPOSTしてるのでそういう感じのグラフになっています。
この記事で「Mackerelって難しそうだから触れていない…」って人がちょっとでも触ってみようって気分になれたら嬉しいですね。

ここから先もっと色々するとしたら、例えば流速が100ツイート/分のときにアラートを発生させてSlackに流してみるとかすると楽しいかもしれません。
みなさんもぜひMackerelを色々なものに活用してみてください。

ということでMackerel Advent Calendar 2015、12月11日の記事でした。
明日の担当は la_luna_azul さんです。