クックパッドを 支えるZabbix
2015/11/20
自己紹介
•加藤 優仁 •クックパッド株式会社 •Twitter:EugeneK •検索、バックアップ、監視等
クックパッドとは
日本最大のレシピサービス
クックパッドとは
•月間約6000万ユーザ •1000台以上のサーバを稼働
Zabbix事情
•アイテム数20万弱 •2000監視項目以上/秒 •トリガー数約5万 •Zabbixサーバは1台だけ
Zabbixサーバ
•クックパッド自体がAWS上 •ZabbixもAWSで運用 •m2.4xlargeインスタンス •MySQLサーバが同居
Zabbix環境
•バージョン2.4.7を使用 •proxy、senderも利用(後述) •随時チューニングを実施(後述)
導入経緯
•以前はNagios + Munin •2014年6月頃から置き換え
Zabbixにした理由
•サーバ台数増によってNagiosのポーリングが遅延した ‣ Zabbixのアクティブ監視で負荷を下げて解決
•サーバ台数増によってMuninのグラフ生成が遅い ‣ 都度描画するZabbixならグラフが遅れない
Zabbixにした理由
•死活監視と性能監視が別サービス ‣ Zabbixならどっちもできる
Zabbixにした理由
AWSのサービス監視•RDS、ELB等 •Cloud Watchのメトリクスを取得してzabbix-senderで送信するスクリプトを実行
•Agent等の監視を使わないホストとして設定
チューニング(zabbix)•Pollers ‣ グラフを見て過不足ないように調節
•innodb_buffer_pool_size ‣ メモリの許す限り大きく割当
•innodb_flush_log_at_trx_commit ‣ 0に設定 (IO負荷を低減)
チューニング(MySQL)
増減するサーバ
•トラフィックに応じてサーバが自動で増減する(オートスケール)
•時間帯、季節によって大きく変動 •コストを抑えるために増減
監視の追従
•増減するサーバに応じて監視も自動で増減させている
自動登録(増台時)•自動登録の機能を使ってサーバ起動時に監視対象に入れる
•ディスカバリによる自動登録は使っていない
•プロビジョニングツールと連携して適切なテンプレートを適用
自動削除(縮退時)
定期的に実行されるスクリプトでAWSの情報とZabbixの情報を突合して停止したサーバをZabbix APIを使って削除
グラフ一覧•スクリーンをいちいち設定するのは面倒
•Muninに慣れていた •Muninっぽいビューがあれば… •独自に開発
Munin View
•Zabbix APIを使ってホストの一覧、グラフの一覧取得
•ホストグループ内のホストのグラフURLを生成して表示
zv
•似たようなOSSツール •弊社菅原が開発 https://github.com/winebarrel/zv
オペレーション効率化
•ckpd-zabbix-*コマンド •各サーバに組み込みのrubyスクリプト
•Zabbix APIを使って自動的に設定してくれる
ckpd-zabbix-maintenance
•メンテナンス設定を自動で行う •主に手動で作業するときにアラートを抑止するために使っている
ckpd-zabbix-maintenance
ckpd-zabbix-enable
•モニタリングを有効化する •停止していたサーバを起動後に自動実行させて使う
ckpd-zabbix-enable
ckpd-zabbix-disable
•モニタリングを無効化する •サーバを無期限停止するときに停止直前に使っている
ckpd-zabbix-disable
ckpd-zabbix-cli•APIの動作確認を行うときに使用
•リクエストのJSONを与えるとAPIコールをして結果を表示する
ckpd-zabbix-*•各コマンドはcliへのエイリアス •コマンドごとに定形のAPIコールをしているだけ
•監視対象が自分自身の有効・無効を設定できるので自動化に役立つ
chatops
•アラートがチャット上に流れる •誰が対応中かなどの情報が自然と共有できる
•メンテナンス設定もチャットから行える
•誰が作業中かすぐにわかる •設定の仕方を覚えなくていい •裏でボットがAPIをコールしている
chatops
あわせてよみたい
クックパッドにおけるサーバ監視と運用の工夫 http://techlife.cookpad.com/entry/2015/04/28/100000
PR
クックパッドは積極採用中です! https://recruit.cookpad.com/