ようへいの日々精進XP

よかろうもん

Nagios に API でアクセスすることが出来る nagira を触ってみる(2)

はじめに

  • 前回の続き
  • パッシブ監視を軽く触ってみる

参考


構築

  • こちらで構築した
  • ちなみに dockerfileこちら(※ nagira の起動はコンテナにログインしてから /etc/init.d/nagira restart する)

尚、 dockerfile で構築した場合には関係するプロセスは monit で監視、起動、停止が行われる(以下、monit の画面)。

f:id:inokara:20140217012256p:plain


どんなことが出来る?

リクエスト URI

前回からの引き続きとしてどんなことが出来るのかを整理してみる。以下の全てが API 経由で操作が行える。

  • 監視メトリクスの取得
  • 監視対象へのパッシブ監視
  • Nagios 設定自体の取得

http://${nagios_url}:4567/_api で取得出来る内容を確認出来る。

curl -s http://${nagios_url}:4567/_api | jq .

を実行すると以下のように表示される。

{
  "PUT": [
    "/_status/:host_name/_services",
    "/_status/:host_name/_services/:service_description",
    "/_status/:host_name/_services/:service_description/_return_code/:return_code/_plugin_output/:plugin_output",
    "/_status",
    "/_status/:host_name",
    "/_host_status/:host_name"
  ],
  "HEAD": [
    "/_config",
    "/_objects",
    "/_objects/:type",
    "/_objects/:type/:name",
    "/_status/:hostname/_services/:service_name",
    "/_status/(?<hostname>w([w-.]+)?w)/_(?<service>(services|hostcomments|servicecomments))",
    "/_status(/_hosts)?",
    "/_status/(?<hostname>w([w-.]+)?w)",
    "/_api",
    "/_runtime",
    "/"
  ],
  "GET": [
    "/_config",
    "/_objects",
    "/_objects/:type",
    "/_objects/:type/:name",
    "/_status/:hostname/_services/:service_name",
    "/_status/(?<hostname>w([w-.]+)?w)/_(?<service>(services|hostcomments|servicecomments))",
    "/_status(/_hosts)?",
    "/_status/(?<hostname>w([w-.]+)?w)",
    "/_api",
    "/_runtime",
    "/"
  ]
}

パッシブ監視

パッシブ監視について

今更だが Nagios のパッシブ監視についてメモ。

  • 基本的に Nagios が行っている監視はアクティブ監視(Nagios 側から監視対象に対してポーリングする)
  • 対してパッシブ監視は Nagios サーバー以外のプロセスから監視を行い、結果を Nagios で結果を処理させる

nagira を経由してパッシブ監視を行う

以下のような監視結果ファイルを用意する。(Nagios 以外のアプリケーションで監視した結果)

{
 "status_code":"0",
 "plugin_output" : "ping OK"
}

このファイルを host_check.json というファイル名で保存して以下のようなリクエストを nagira に対して投げると...

curl -s -XPUT -H "Content-type: application/json;" -d @host_check.json "http://172.17.0.2:4567/_status/localhost" | jq .

以下のようにレスポンスが返ってくる。

{
  "object": [
    {
      "messages": [],
      "result": true,
      "data": {
        "action": "PROCESS_HOST_CHECK_RESULT",
        "host_name": "localhost",
        "plugin_output": "ping OK",
        "status_code": "0"
      }
    }
  ],
  "result": true
}

パッシブ監視を使えば...

  • 外部アプリケーションの結果等を Nagios で一元管理することが出来る
  • Nagios に飛ばす監視結果 JSON 形式で扱えることで簡単に他のアプリケーションとの連携が取れそう
  • でも、イマイチ、機能について理解出来ていない(すんません)

引き続き...

  • パッシブ監視の理解を深める
  • 出来れば全ての API コールについて確認していきたい