Nagios on AWS / Monitering Casual Talk #1

24
Nagios運用例 (on AWS) Sqaleの場合 Monitoring Casual Talk #1 Ryo Kuroda @lamanotrama パペボ所属

description

 

Transcript of Nagios on AWS / Monitering Casual Talk #1

Page 1: Nagios on AWS / Monitering Casual Talk #1

Nagios運用例(on AWS)Sqaleの場合

Monitoring Casual Talk #1Ryo Kuroda @lamanotramaパペボ所属

Page 2: Nagios on AWS / Monitering Casual Talk #1

淡々と紹介します

Nagiosの運用事例を目にすることがあまり無いので、自分のやり方に不安を感じる。

みんな実際どうなのよ?

Page 3: Nagios on AWS / Monitering Casual Talk #1

Agenda● 環境

● コンフィグレイアウト

● コンフィグ自動生成

● 設定管理、デプロイ

Page 4: Nagios on AWS / Monitering Casual Talk #1

環境

Page 5: Nagios on AWS / Monitering Casual Talk #1

● http://sqale.jp● AWS● 20ちょっとのインスタンス (EC2+RDS)● Nagiosサーバ一台

○ 色々兼用のc1.medium○ Amazon Linux 64bit

● 名前解決は /etc/hosts の自動更新で○ <IP> <Name>.sqale.jp○ <Private IP> <Name>.sqale.lan

Sqale (closed beta)

Page 6: Nagios on AWS / Monitering Casual Talk #1

コンフィグレイアウト

Page 7: Nagios on AWS / Monitering Casual Talk #1

各種object設定ファイル

/etc/nagios/objects/sqale/*.cfg/etc/nagios/objects/sqale ->/var/webistrano/nagios/current (deploy path)

● サービスのobject用に一個深く掘ってる● 過去に複数商材の設定が混ざってカオス化した

(のをメンテして椅子投げた)● パッケージデフォの *.cfg と階層分けた方が精

神衛生上よい● デプロイもしやすいよ

Page 8: Nagios on AWS / Monitering Casual Talk #1

[email protected]

cfg_file=/etc/nagios/objects/commands.cfgcfg_dir=/etc/nagios/objects/sqale

● commands.cfgだけはそのまま使っているが、

他は無駄が多く使いづらい

● sqale/commans.cfgには自分で追加定義した

分だけ

Page 9: Nagios on AWS / Monitering Casual Talk #1

コンフィグの自動生成

Page 10: Nagios on AWS / Monitering Casual Talk #1

cfg-gen.plcronで定期的にEC2のAPIを叩くスクリプトを実行してコンフィグファイルを生成。

objects/sqale/cfg-gen/bin/cfg-gen.plobjects/sqale/cfg-gen/temlates/{hosts.tx,roles.tx}

この2つが出来る。

objects/sqale/roles.cfg (≒hostgroups.cfg)objects/sqale/hosts.cfg

Page 11: Nagios on AWS / Monitering Casual Talk #1

使ってるモジュール

use Net::Amazon::EC2 0.18;use Net::Amazon::EC2::PaperboyAttributes;use Text::Xslate;use Text::Diff;

Page 12: Nagios on AWS / Monitering Casual Talk #1

Net::Amazon::EC2::PaperboyAttributes ?

インスタンスの運用ルール(tag)に合わせて便利メソッドを生やしてる。

$instance->roles; # ['bsae', 'build']$ec2->describe_roles # { build => [ 'build001', 'build002' ... ], app => [ ...

これらをbackup、puppet等他の自動化の仕組みでも使います。けど、roleタグは今後止めるかもしんない …

Page 13: Nagios on AWS / Monitering Casual Talk #1

監視対象から外したい

grep ! $_->inactive, @instances;

全てのインスタンスはlaunch後に自動で監視対象に入るが、検証用等で、監視に入れたくないものもある。

Page 14: Nagios on AWS / Monitering Casual Talk #1

roles.cfg

各role毎に内側、外側で2つのhostgroupオブジェクトを定義。

Page 15: Nagios on AWS / Monitering Casual Talk #1

hosts.cfg

roleと同様に内外で別々に定義。同じインスタンスでも、それぞれ監視すべきサービスは違う。

Page 16: Nagios on AWS / Monitering Casual Talk #1

DiffText::Diffで既存ファイルのと差分をチェックし、変

更があった時だけreload。差分は標準出力に吐く ->メールで履歴が追える。

Page 17: Nagios on AWS / Monitering Casual Talk #1

設定管理、デプロイ

Page 18: Nagios on AWS / Monitering Casual Talk #1

GitHub設定はGitHubのプライベートリポジトリで管理。

Page 19: Nagios on AWS / Monitering Casual Talk #1

webistranoデプロイはwebからクリック一発。

Page 20: Nagios on AWS / Monitering Casual Talk #1

webistranoで(が)やってること

serviceやcommandを足したりテンプレート(*.tx)を変更したらデプります。

1. /var/webistrano/sqale/releses/ 以下に最新の設定がrsyncで送られる

2. /var/webistrano/sqale/current にリンクが貼り直される

3. cfg-gen.plを実行して、コンフィグ生成

4. nagios reload5. 終わったらikachan経由でIRCに通知(失敗、成功)

Page 21: Nagios on AWS / Monitering Casual Talk #1

その他

Page 22: Nagios on AWS / Monitering Casual Talk #1

define command { command_name notify-host-by-ikachan

アラートもikachanでIRCに送ってます。ikachan大活躍。

Page 23: Nagios on AWS / Monitering Casual Talk #1

リポジトリへのリンク

webのサイドバーにリポジトリ(のhistory)へのリンクを足しておくと地味に便利。

Page 24: Nagios on AWS / Monitering Casual Talk #1

以上でございます。