Nagios Conference 2013 - Nick Scott - Nagios Network Analyzer
Nagios on AWS / Monitering Casual Talk #1
-
Upload
ryo-kuroda -
Category
Technology
-
view
676 -
download
2
description
Transcript of Nagios on AWS / Monitering Casual Talk #1
Nagios運用例(on AWS)Sqaleの場合
Monitoring Casual Talk #1Ryo Kuroda @lamanotramaパペボ所属
淡々と紹介します
Nagiosの運用事例を目にすることがあまり無いので、自分のやり方に不安を感じる。
みんな実際どうなのよ?
Agenda● 環境
● コンフィグレイアウト
● コンフィグ自動生成
● 設定管理、デプロイ
環境
● 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)
コンフィグレイアウト
各種object設定ファイル
/etc/nagios/objects/sqale/*.cfg/etc/nagios/objects/sqale ->/var/webistrano/nagios/current (deploy path)
● サービスのobject用に一個深く掘ってる● 過去に複数商材の設定が混ざってカオス化した
(のをメンテして椅子投げた)● パッケージデフォの *.cfg と階層分けた方が精
神衛生上よい● デプロイもしやすいよ
cfg_file=/etc/nagios/objects/commands.cfgcfg_dir=/etc/nagios/objects/sqale
● commands.cfgだけはそのまま使っているが、
他は無駄が多く使いづらい
● sqale/commans.cfgには自分で追加定義した
分だけ
コンフィグの自動生成
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
使ってるモジュール
use Net::Amazon::EC2 0.18;use Net::Amazon::EC2::PaperboyAttributes;use Text::Xslate;use Text::Diff;
Net::Amazon::EC2::PaperboyAttributes ?
インスタンスの運用ルール(tag)に合わせて便利メソッドを生やしてる。
$instance->roles; # ['bsae', 'build']$ec2->describe_roles # { build => [ 'build001', 'build002' ... ], app => [ ...
これらをbackup、puppet等他の自動化の仕組みでも使います。けど、roleタグは今後止めるかもしんない …
監視対象から外したい
grep ! $_->inactive, @instances;
全てのインスタンスはlaunch後に自動で監視対象に入るが、検証用等で、監視に入れたくないものもある。
roles.cfg
各role毎に内側、外側で2つのhostgroupオブジェクトを定義。
hosts.cfg
roleと同様に内外で別々に定義。同じインスタンスでも、それぞれ監視すべきサービスは違う。
DiffText::Diffで既存ファイルのと差分をチェックし、変
更があった時だけreload。差分は標準出力に吐く ->メールで履歴が追える。
設定管理、デプロイ
GitHub設定はGitHubのプライベートリポジトリで管理。
webistranoデプロイはwebからクリック一発。
webistranoで(が)やってること
serviceやcommandを足したりテンプレート(*.tx)を変更したらデプります。
1. /var/webistrano/sqale/releses/ 以下に最新の設定がrsyncで送られる
2. /var/webistrano/sqale/current にリンクが貼り直される
3. cfg-gen.plを実行して、コンフィグ生成
4. nagios reload5. 終わったらikachan経由でIRCに通知(失敗、成功)
その他
define command { command_name notify-host-by-ikachan
アラートもikachanでIRCに送ってます。ikachan大活躍。
リポジトリへのリンク
webのサイドバーにリポジトリ(のhistory)へのリンクを足しておくと地味に便利。
以上でございます。