AnsibleでAdagios入れてみたけど、こいつ超イケメン

Posted on 2014/06/25(Wed) 01:10 in technical

はじまりはじまり

みんなAdagiosって知ってる?nagiosのフロントエンドなんだけど!これこれ!

http://adagios.org/

超モダンでかっこいい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)を抜けたらこんな画面に出会える...はずですがどうでしょう。

adagios_ansible_001.png

この時点で、既に完成度の高いNagiosフロントエンドっぽく見えませんか?見えませんか、そうですか。

外観を散歩する

まずは、ホストの状態を確認していきます。左サイドバーからHostsを選択。

adagios_ansible_002.png

全ホストの状態を確認することが出来ます。(もちろん、ここではlocalhostだけです)

localhostの横の矢印をクリックすると、配下のサービスの監視結果も確認することが出来ます。

adagios_ansible_003.png

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

adagios_ansible_004.png

ホストの監視はpingによって実現されており、localhostは当然応答を返すので、Statusはオールグリーンです。

Check outputでは最後に実施したコマンドの出力が確認でき、同時にPerformance Metricsも取得しているため、応答時間も確認することが出来ます。

Performance Metricsは、pnp4nagiosを経由してグラフ描画をしており、pnp列のグラフボタンをマウスオーバーすることで、Adagiosの画面からも確認することが出来ます。

adagios_ansible_005.png

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

adagios_ansible_006.png

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

adagios_ansible_007.png

通報

ここでは試しにsshで21人分ログインしてアラートを出してみています。

しかもだよ、AdagiosはGraph専用タブまであるんだよ!

adagios_ansible_008.png

一応、デフォルトでは4h/25h/7day/1month/1yearで分かれてる。

pnp4nagiosのページを見ると、初期設定がそうなってるぽいので、変更は効くかもしれない(未検証)。

あとは変数設定の画面。

adagios_ansible_009.png

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

adagios_ansible_010.png

下の方

adagios_ansible_011.png

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

adagios_ansible_012.png

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

adagios_ansible_013.png

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

adagios_ansible_014.png

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

adagios_ansible_015.png

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

adagios_ansible_016.png

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

adagios_ansible_017.png

監視ノードの追加

先日見ていたmuninやShinkenはWebUI上から監視設定が出来なかったが、Adagiosは余裕で出来る。

上のバーからConfigure、または左サイドバーからConfigurationを選択すると、設定画面になる。

adagios_ansible_018.png

設定方法自体は、nagiosと同様なので、

  1. ホストの追加
  2. コマンドの作成
  3. サービスの追加

が基本パターンになる。

例えばこんな感じでホストを追加する(日本語も割と普通に扱える)

adagios_ansible_019.png adagios_ansible_020.png

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

adagios_ansible_021.png adagios_ansible_022.png

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

adagios_ansible_023.png

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

adagios_ansible_024.png

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

adagios_ansible_025.png

Nagios Successfully reloadedと表示されたら、設定は問題なく適用されているだろう。

Hostsの画面を見に行こう。しばらくしたら結果が取得できるはずだ。

adagios_ansible_026.png

警告

さて、ここで問題になるのは、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」を使用することで、コピペによる設定の流し込みも可能である。至れり尽くせりであるな。

adagios_ansible_027.png

コマンドの方は長くなるので省略するけど、きっと画面の指示に従っていけば簡単...だといいなぁ。

でもまぁ、普通のnagios同様、新しいコマンド作るのはちょっと面倒だよ...。

OKConfigを使ってみる

OKConfigと言うのは、Adagiosと同じところが作っているコンフィグサポート用のツールのようだ。

とは言え、Adagios側でほとんどの設定がこなせてしまうので、何が出来るのと言う感じなので、Network Scanだけ紹介してみる。

adagios_ansible_029.png

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

adagios_ansible_030.png

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

adagios_ansible_031.png

警告

adagiosのOkConfigインストールページには特に書いてないんですけど、fpingがインストールされていないとNetwork Scanは使えません。

Addボタンを押すと、そこから監視ホストを追加することが出来ます。

adagios_ansible_032.png

!危険!

今はバグいので見るだけにしておきましょう。

ただ、OkConfigから見える形でGroupが作成されていないと、設定必須で怒られます(そしてOkConfig経由でGroupを設定していないと、Group nameに何も出ないという...)

adagios_ansible_034.png

!危険!

Group設定をしていないとホストを追加できないのに、Group設定するとnagiosがエラー吐く状態なので、見学だけです。

まぁその、ある程度名前解決やサービススキャンをしてくれるので、追加すべきホストの判別はかなり容易だと思う。

残念ながら自動監視設定はしてくれないが、本来のnagiosに関するcfgファイルを自分で変更することになるだろう。

警告

なのでまぁ、今のところOkConfigはインストールしない方が無難かもしれない。これが入ると設定が /etc/nagios/okconfig に吸い込まれて、うまく画面と整合性取れない状態になりそう。

設定のバージョン管理とかサービス状態とか

ここで、右上の歯車から、Object Historyを見てみよう。

adagios_ansible_035.png adagios_ansible_036.png

今までの設定や、適当にこねくり回したログを見ることが出来る。

右側のdiffを押すと、どのような変更が行われたかを見ることが出来るため、CUIベースでの設定変更に必要な学習にも役立つ。

adagios_ansible_037.png

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

adagios_ansible_038.png adagios_ansible_039.png

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

adagios_ansible_040.png

総評

見た目や操作性はかなり良いので、単なる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カッコいいよー。

おしまい。