nagios on aws / monitering casual talk #1

Post on 05-Dec-2014

678 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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 と階層分けた方が精

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

include@nagios.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)へのリンクを足しておくと地味に便利。

以上でございます。

top related