AnsibleでAdagios入れてみたけど、こいつ超イケメン
Posted on 2014/06/25(Wed) 01:10 in technical
はじまりはじまり
みんなAdagiosって知ってる?nagiosのフロントエンドなんだけど!これこれ!
超モダンでかっこいいWebUIを持ってて、もう「え?nagios?ダサくない?」なんて言わせないぜ!
バックエンドにはicingaとかshinkenを使うことも出来るので、nagiosおよび互換監視エンジン向けWebフロントエンドと言う認識で良いと思います。
構成
トポロジ:
| Ansible | --- | SW | --- | Adagios |
Ansible:
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
Adagios:
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
警告
Ubuntu 14.04がaptで入れちゃうDjangoが1.6系なのだけど、Adagiosの至る所で使われている from django.conf.urls.defaults import * という表記が Django 1.6で廃止されて、とりあえず現状はAdagiosが修正されるまで待とうかな、と思ってUbuntu 12.04.4を使うことにしています。
インストール
方法はおおよそ公式の通りです。
https://github.com/opinkerfi/adagios/wiki/Installing-Adagios-from-source-on-Debian
また、監視エンジンとの組み合わせは以下の通りです。(つまり、公式のインストール方法におおよそ準拠します)
- Adagios
- Nagios3
例によって、Ansible playbookを書いたので、インストールはこれで済ませます。:
$ git clone https://github.com/ainoniwa/ansible-playbooks.git $ cd ansible-playbooks $ git checkout 06139a413f $ cd adagios $ echo "192.168.122.152" > hosts $ ansible-playbook main.yml -i hosts -k -K SSH password: sudo password [defaults to SSH password]: PLAY [all] ******************************************************************** <中略> PLAY RECAP ******************************************************************** 192.168.122.152 : ok=39 changed=38 unreachable=0 failed=0
通報
前述のとおり、Djangoのバージョン問題があるので、基本的にはUbuntu 12.04系でしか動作しません。
インストールが完了したら、 http://192.168.122.152/adagios/ にアクセスし、BASIC認証(playbookではadagios/adagios)を抜けたらこんな画面に出会える...はずですがどうでしょう。

この時点で、既に完成度の高いNagiosフロントエンドっぽく見えませんか?見えませんか、そうですか。
外観を散歩する
まずは、ホストの状態を確認していきます。左サイドバーからHostsを選択。

全ホストの状態を確認することが出来ます。(もちろん、ここではlocalhostだけです)
localhostの横の矢印をクリックすると、配下のサービスの監視結果も確認することが出来ます。

次に、localhostを選択すると、監視ホストのサマリ画面に移動します。

ホストの監視はpingによって実現されており、localhostは当然応答を返すので、Statusはオールグリーンです。
Check outputでは最後に実施したコマンドの出力が確認でき、同時にPerformance Metricsも取得しているため、応答時間も確認することが出来ます。
Performance Metricsは、pnp4nagiosを経由してグラフ描画をしており、pnp列のグラフボタンをマウスオーバーすることで、Adagiosの画面からも確認することが出来ます。

Informationタブは、設定情報などを確認することができます。

Historyは、実際にサービスがUp/Downしたり、監視値がTriggerを引いた場合のログを確認することが出来ます。

通報
ここでは試しにsshで21人分ログインしてアラートを出してみています。
しかもだよ、AdagiosはGraph専用タブまであるんだよ!

一応、デフォルトでは4h/25h/7day/1month/1yearで分かれてる。
pnp4nagiosのページを見ると、初期設定がそうなってるぽいので、変更は効くかもしれない(未検証)。
あとは変数設定の画面。

と、デバッグ用のデータ取得画面(全データが出力されてるので、設定がおかしいと思ったら確認できるます)

下の方

次に、Servicesの画面も見てみよう。なかなか見やすい一覧画面だと思う。

例えばHTTPのページはこんな感じ。

HTTPレスポンスのグラフも描けるのでかなり見やすい。

REPORTSのLog画面では、ステートの変化以外にもシステムログも一部確認できる。

後は、ホストグループの一覧とか。

まだ開発中だけど、Performance Dataの一覧ページもある(グラフはマウスオーバーしないと出ない)

監視ノードの追加
先日見ていたmuninやShinkenはWebUI上から監視設定が出来なかったが、Adagiosは余裕で出来る。
上のバーからConfigure、または左サイドバーからConfigurationを選択すると、設定画面になる。

設定方法自体は、nagiosと同様なので、
- ホストの追加
- コマンドの作成
- サービスの追加
が基本パターンになる。
例えばこんな感じでホストを追加する(日本語も割と普通に扱える)


もう一度上のバーからConfigureを選んで、今度はServiceにSSHを設定してみる。


Host nameのところでさっき追加したホストを追加する。

Save changesを押して設定は完了だ。

後は右上のnagios再起動ボタンを押す。

Nagios Successfully reloadedと表示されたら、設定は問題なく適用されているだろう。
Hostsの画面を見に行こう。しばらくしたら結果が取得できるはずだ。

警告
さて、ここで問題になるのは、localhostのSSHがサービス監視対象から消えていることだ。
/etc/nagios3/conf.d/services_nagios2.cfg のグルーピングと監視ノード設定変更時の折り合いが悪い。というか。
デフォルトではnagios3のService監視は全てのノードに対応することになるのだけど、先程のようにノードを追加するとhost_nameが追加されて、Serviceが全体適用から単体適用に変わってしまう。
(一応、SSHのService画面右上にもそうWARNINGが表示されている)
なので、nagios3のデフォルト設定が悪いと割り切って、収まりのいいように全てを設定し直すか、
新しく追加したノードをssh-serversに収容し、Service側には触れないか、と言う2択になると思う。
まぁ、SSHは動いていて当然と言う認識も無いではないので、後者で良いかもしれない。
今回の場合であれば、先の設定を削除した後 Configuration->Hosts->Show hostgroups(Commandsの下側にあるやつ)->ssh-servers->Members から新規ノードを追加するのが正道かと思う。
ちなみに、設定をテキストで、と言う場合、各設定画面の右側にある「Geek Edit」を使用することで、コピペによる設定の流し込みも可能である。至れり尽くせりであるな。

コマンドの方は長くなるので省略するけど、きっと画面の指示に従っていけば簡単...だといいなぁ。
でもまぁ、普通のnagios同様、新しいコマンド作るのはちょっと面倒だよ...。
OKConfigを使ってみる
OKConfigと言うのは、Adagiosと同じところが作っているコンフィグサポート用のツールのようだ。
とは言え、Adagios側でほとんどの設定がこなせてしまうので、何が出来るのと言う感じなので、Network Scanだけ紹介してみる。

で、スキャンネットワークを指定してScan Network。

結果が出てくると、こんな感じになる。

警告
adagiosのOkConfigインストールページには特に書いてないんですけど、fpingがインストールされていないとNetwork Scanは使えません。
Addボタンを押すと、そこから監視ホストを追加することが出来ます。

!危険!
今はバグいので見るだけにしておきましょう。
ただ、OkConfigから見える形でGroupが作成されていないと、設定必須で怒られます(そしてOkConfig経由でGroupを設定していないと、Group nameに何も出ないという...)

!危険!
Group設定をしていないとホストを追加できないのに、Group設定するとnagiosがエラー吐く状態なので、見学だけです。
まぁその、ある程度名前解決やサービススキャンをしてくれるので、追加すべきホストの判別はかなり容易だと思う。
残念ながら自動監視設定はしてくれないが、本来のnagiosに関するcfgファイルを自分で変更することになるだろう。
警告
なのでまぁ、今のところOkConfigはインストールしない方が無難かもしれない。これが入ると設定が /etc/nagios/okconfig に吸い込まれて、うまく画面と整合性取れない状態になりそう。
設定のバージョン管理とかサービス状態とか
ここで、右上の歯車から、Object Historyを見てみよう。


今までの設定や、適当にこねくり回したログを見ることが出来る。
右側のdiffを押すと、どのような変更が行われたかを見ることが出来るため、CUIベースでの設定変更に必要な学習にも役立つ。

そのほか、設定の健康度確認や、


Nagiosの明示的な停止、再起動などが実施できる。

総評
見た目や操作性はかなり良いので、単なるnagiosフロントエンドとして使う分には、現状最強ではないかと思う。
少なくとも、icinga-webやnagiosの標準的なWebUIよりは見やすく、かつpnp4nagiosを通じたグラフ描画機能のお陰で、リソース部分も一部カバーすることが出来る。
厳しいのは、adagiosとnagiosとOkConfigの設定が微妙に噛み合っていないので、片方で設定してあるGroupがもう片方では設定されていないなど、コンフィグファイルの影響範囲が不明瞭なことがある。
その点については、必要な設定をしてみて、探っていく必要がある。
残念ながら可視化(グラフ化)については最低限提供されているという状態で、カスタマイズにはおぼつかない部分があるものの、UI的には綺麗に繋がっているため、今後の発展に期待している。
Roadmapを見ると、Future releases(https://github.com/opinkerfi/adagios/wiki/Roadmap)には:
Ability to query performance data (think sql syntax) and create dashboard with custom perfdata metrics
と言う表記があり、かなり期待できるのではないかと思う。
また、コンフィグの管理やNagiosの状態確認にも気を配っており、過去の変更点を追って変更箇所を探ることが出来るなど、変更履歴としても十分機能する可能性がある。
って言うかカバー範囲が超広くて紹介しきれんぞこれ。
Nagiosから離れられないけど、UIを何とかしたい方がもし居るようであれば、是非調査して欲しいプロダクトでした。
いいよー、adagiouカッコいいよー。
おしまい。