Edited at
SensuDay 16

Uchiwa で複数の Sensu をまとめて管理しよう

More than 3 years have passed since last update.

Sensu Advent Calendar 16日目です。

とある事情で、複数のインフラを抱えることになりました。

当然監視もしなければいけないのですが、それぞれ独立なネットワークになっていて、監視どうしようかなーと考えていました。


  • 今まで Sensu 使ってたし、それを使って各インフラのACLを調整して監視できるようにするかな?

  • いやいやないない。それぞれのインフラに個別の Sensu を用意するか。

  • でも、管理画面2つに増えるのいやだな。

などと考えていましたが、どうにもしっくりこない。

そんなおり、Sensu の標準ダッシュボードとなった Uchiwa をよく見ると、Datacenter という項目があることがわかりました。

見てみると、どうやら


  • Uchiwa <-> sensu-server は 1対多 の関係を取ることができ、それぞれの sensu-server は Datacenter という分類になる。

ということのようです。

そこで、複数の sensu-server を配置して Uchiwa から全部管理してみることにしました。


実験


複数の sensu-server を扱う Uchiwa の設定

Uchiwa の json で、以下のように sensu を array にして、すべての sensu-api のエンドポイントを記載しておけばよいようです。


uchiwa.json

{

"uchiwa": {
(略)
},
"sensu": [
{
"name": "sensu-a",
"host": "<sensu-a-api host>",
"port": <sensu-a-api port>,
(略)
},
{
"name": "sensu-b",
"host": "<sensu-b-api host>",
"port": <sensu-b-api port>,
(略)
},
{
"name": "sensu-c",
"host": "<sensu-c-api host>",
"port": <sensu-c-api port>,
(略)
}
]
}

ちなみに、uchiwa-chef を使っている場合は、attribute を下記のように渡せば、上記のような json を生成してくれます。

"uchiwa": {

"settings": {
(略)
},
"api": [
{
"name": "sensu-a",
"host": "<sensu-a host>",
"port": <sensu-a port>,
(略)
},{
"name": "sensu-b",
"host": "<sensu-b host>",
"port": <sensu-b port>,
(略)
},{
"name": "<sensu-c>",
"host": "<sensu-c host>",
"port": <sensu-c port>,
(略)
}
]
}


Uchiwa からの見え方

設定が終わって、正しく各sensu-api と疎通がとれていれば、下記のように見えます。


右上の雲マークから Datacenter 一覧

スクリーンショット 2014-12-15 21.09.58.png


Events/Clients/Checks/Stashes に Datacenter 毎のタブ

スクリーンショット 2014-12-15 21.10.20.png

これで、色々な管理画面を転々としなくても、一つの管理画面で透過的に扱えるようになります。

それでは、よい Sensu Life を。