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": {
(略)
},
"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 一覧
Events/Clients/Checks/Stashes に Datacenter 毎のタブ
これで、色々な管理画面を転々としなくても、一つの管理画面で透過的に扱えるようになります。
それでは、よい Sensu Life を。