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

ログってなんぼ

日々のメモです

TreasureData:テーブル内のデータ件数をZabbixでモニタする

zabbix infra

TreasureDataにあるテーブルの件数をZabbixで監視したメモ。

tdコマンドでテーブルの件数はわかるので、HiveQL流すまでもないなということで作業開始。

厳密に知りたければクエリ投げたほうがいいんだろうけど、今回はデータ量の傾向をモニタしたいだけでダッシュボードレベルの表示で全然問題ないので。

td command で確認

# td db:list
+--------------+-----------+
| Name         | Count     |
+--------------+-----------+
| test         | 395898355 |
| xxxx         | 7446907   |
| xxxxxxxxxxxx | 204917    |
| xxxxxxxxx    | 174831    |
+--------------+-----------+

おっとこれはDB内の件数でした。でも普通に件数が表示されているのでzabbixに送る事はできそうですね。ということでテーブルの件数を見てみる。

# td table:list
| test         | testtable       | log  | 396,030,168 | 2.8 GB  | 2013-12-20 03:56:36 +0000 |

(´;ω;`)ウッ… カンマ・・・

見るとこ間違えてた

table:list 見てどうする・・・ table:showで確認

# td table:show test testtable
Name      : test.testtable
Type      : log
Count     : 396890834
Schema    : (
    no:string
    type:string
.
.
.
)

これこれコレだヨヽ(`Д´)ノウワァァァン!!

作業内容

zabbixにホスト登録してある任意のホスト

自分の場合は、サービスのKPI的指標やグロースハック的なものを収集するサーバーを専用で立てているのでそのサーバーにスクリプトを仕込みました。

td-accountコマンドでログイン済みが前提

*/10 * * * * root td table:show a8ad implog | grep "Count" | awk '{print $3}' > /tmp/td.tablecount.testtable.txt

上記スクリプトで数だけをファイルに出力しておく

# cat /tmp/td.tablecount.testtable.txt
396890834

ファイル出来ました。

zabbix側

まず、zabbix_getコマンドで値が取れるかどうか確認

# zabbix_get -s IP_ADDR -k system.run["cat /tmp/td.tablecount.testtable.txt"]
396890834

OK

アイテム登録

system.run[cat /tmp/td.tablecount.testtable.txt]

system.runを使うなら、なんで最初からこっちに直接スクリプト書かないのかというとですね、system.runはタイムアウトが3秒だからです・・・

3秒以上かかる処理をsystemu.runに書きたければ

zabbix_agentd.conf のタイムアウト時間を変更すればOKです。

Timeout=30

ただしデフォルト3秒、最大でも30秒なので自分はできるだけsystem.runで指標を取得する場合はファイルをcatするだけにしています。

というわけで

めでたくグラフが生成され始めました。

Image20131220

zabbixは数値データをファイルに書き出しておくだけで簡単に監視できるのでいいですね。