Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Nagios運用例
(on AWS)
Sqaleの場合
Monitoring Casual Talk #1
Ryo Kuroda @lamanotrama
パペボ所属
淡々と紹介します
Nagiosの運用事例を目にすることがあまり無いの
で、自分のやり方に不安を感じる。
みんな実際どうなのよ?
Agenda
● 環境
● コンフィグレイアウト
● コンフィグ自動生成
● 設定管理、デプロイ
環境
● http://sqale.jp
● AWS
● 20ちょっとのインスタンス (EC2+RDS)
● Nagiosサーバ一台
○ 色々兼用のc1.medium
○ Amazon Linux 64bit
● 名前解決は /etc/hosts の...
コンフィグレイアウト
各種object設定ファイル
/etc/nagios/objects/sqale/*.cfg
/etc/nagios/objects/sqale
->/var/webistrano/nagios/current (deploy path)
● ...
include
@nagios.cfg
cfg_file=/etc/nagios/objects/commands.cfg
cfg_dir=/etc/nagios/objects/sqale
● commands.cfgだけはそのまま使っている...
コンフィグの自動生成
cfg-gen.pl
cronで定期的にEC2のAPIを叩くスクリプトを実行
してコンフィグファイルを生成。
objects/sqale/cfg-gen/bin/cfg-gen.pl
objects/sqale/cfg-gen/temlates...
使ってるモジュール
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->de...
監視対象から外したい
grep ! $_->inactive, @instances;
全てのインスタンスはlaunch後に自動で監視対象に入るが、検
証用等で、監視に入れたくないものもある。
roles.cfg
各role毎に内側、外側で2つのhostgroupオブジェ
クトを定義。
hosts.cfg
roleと同様に内外で別々に定義。同じインスタンス
でも、それぞれ監視すべきサービスは違う。
Diff
Text::Diffで既存ファイルのと差分をチェックし、変
更があった時だけreload。
差分は標準出力に吐く ->メールで履歴が追える。
設定管理、デプロイ
GitHub
設定はGitHubのプライベートリポジトリで管理。
webistrano
デプロイはwebからクリック一発。
webistranoで(が)やってること
serviceやcommandを足したりテンプレート(*.tx)を
変更したらデプります。
1. /var/webistrano/sqale/releses/ 以下に最新の設
定がrsyncで送られる
...
その他
define command {
command_name notify-host-by-ikachan
アラートもikachanでIRCに送ってます。ikachan大
活躍。
リポジトリへのリンク
webのサイドバーにリポジトリ(のhistory)へのリン
クを足しておくと地味に便利。
以上でございます。
Upcoming SlideShare
Loading in …5
×

Nagios on AWS / Monitering Casual Talk #1

1,559 views

Published on

Published in: Technology
  • Be the first to comment

Nagios on AWS / Monitering Casual Talk #1

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

×