堀内 晨彦
@hico_horiuchi
Filter・Mutator・Aggregate
の使いドコロ
自己紹介
Akihiko Horiuchi
香川大学 修士2年
bit.ly/hiconyan
研究室のインフラと掃除担当
Emacs / Ruby / Rails / Golang
Hubot / Sensu / Ansible
15/10/02 2
Sensu Deep Talks #1
15/10/02 3
Sensu with Golang
http://www.slideshare.net/hico_horiuchi/sensu-with-golang
JANOG LT night #1
15/10/02 4
Sensuでネットワーク監視やってみた
http://www.slideshare.net/hico_horiuchi/sensu-50675554
Sensu構成@研究室
15/10/02 5
sensu-server + kibana
Nginx + Dokuwiki
GitLab
Ruby on Rails
Ubuntu + KVM
・ 物理サーバ (15台)
・ 仮想サーバ (19台)
・ スイッチ (4台)
・ 構成管理は AnsibleHubot
(hico-horiuchi/huboco)
Filter 編
1 / 3
15/10/02 6
Filter とは?
●  Filter とは?
○  Handler で処理する Event をフィルタリング
○  環境の分別・通知の削減などが目的
●  Filter の設定方法
○  /etc/sensu/conf.d/filter.json などを用意
○  "attributes" でフィルタリングする項目を定義
(Event 内の Client や Check も指定可能)
○  "negate" で不一致のフィルタリングも可能
○  Handler に複数設定可能 ("filter" , "filters")
15/10/02 7
https://sensuapp.org/docs/latest/filters
Filter の使用例
●  環境の分別 (本番環境のみハンドリング)
●  通知の削減 (60回毎にハンドリング)
15/10/02 8
"filters": {
"production": {
"attributes": {
"client": {
"environment": "production"
"filters": {
"recurrences": {
"attributes": {
"occurrences": "eval: value == 1 || value % 60 == 0"
eval: で Ruby の式を評価可能
Mutator 編
2 / 3
15/10/02 9
Mutator とは?
●  Mutator とは?
○  Handler で処理する Event を編集
○  ロジックの共有・ハンドリングの簡素化などが目的
●  Mutator の設定方法
○  /etc/sensu/conf.d/mutator.json などを用意
○  "command" で実行する Mutator を指定
(コマンドは Sensu Server 上で実行)
○  標準入出力で JSON をやり取り
○  Handler に1つだけ設定可能 ("mutator")
15/10/02 10
https://sensuapp.org/docs/latest/mutators
Mutator の使用例
●  情報の付加 (Sensu Server のホスト名)
●  他にも Community Plugins では…
○  Graphite 用に "output" を整形して出力 (graphite.rb)
○  営業時間中かどうかを付加 (officehours.rb)
15/10/02 11
# datacenter.rb

require 'rubygems' if RUBY_VERSION < '1.9.0'
require 'json'

event = JSON.parse(STDIN.read, symbolize_names: true)
event.merge!(datacenter: `hostname`.strip)
puts JSON.dump(event)
Aggregate 編
3 / 3
15/10/02 12
Aggregate とは?
●  Aggregate とは?
○  Check の実行毎に各 Client のステータスを集計
(ok , warning , critical , unknown の台数)
○  Sensu API で提供 (/aggregates)
●  Aggregate の設定方法
○  各 Check の設定に aggregate: true を追加
(standalone: true の場合には無効)
○  集計結果は Uchiwa で閲覧可能
15/10/02 13
https://sensuapp.org/docs/latest/api-aggregates
uchiwa-web@pull#69
15/10/02 14
Add aggregate progress bar
Aggregate の使用例
●  Check
○  check-aggregate.rb (Community Plugins)
○  warning や critical が一定割合を超えたら通知
●  Metrics
○  aggregate-metrics.rb (Community Plugins)
○  各ステータスのメトリクスを出力
15/10/02 15
sensu.aggregates.check-cpu.ok 125 1380251999
sensu.aggregates.check-cpu.warning 0 1380251999
sensu.aggregates.check-cpu.critical 0 1380251999
sensu.aggregates.check-cpu.unknown 0 1380251999
sensu.aggregates.check-cpu.total 125 1380251999
お知らせ
? / 3
15/10/02 16
Sensu with Golang
●  hico-horiuchi/ohgi
○  扇: Sensu command-line tool by Golang
○  高速な動作,シンプルな表示
●  hico-horiuchi/sensu-plugins-go
○  Sensu plugins & libraries by Golang
○  Check , Metrics , Handler のGo言語実装
15/10/02 17
Sensu Deep Talks #3
2016年3月開催予定!
会場を提供して頂ける方を募集中
15/10/02 18

Filter・Mutator・Aggregateの使いドコロ

  • 1.
  • 2.
  • 3.
    Sensu Deep Talks#1 15/10/02 3 Sensu with Golang http://www.slideshare.net/hico_horiuchi/sensu-with-golang
  • 4.
    JANOG LT night#1 15/10/02 4 Sensuでネットワーク監視やってみた http://www.slideshare.net/hico_horiuchi/sensu-50675554
  • 5.
    Sensu構成@研究室 15/10/02 5 sensu-server +kibana Nginx + Dokuwiki GitLab Ruby on Rails Ubuntu + KVM ・ 物理サーバ (15台) ・ 仮想サーバ (19台) ・ スイッチ (4台) ・ 構成管理は AnsibleHubot (hico-horiuchi/huboco)
  • 6.
    Filter 編 1 /3 15/10/02 6
  • 7.
    Filter とは? ●  Filterとは? ○  Handler で処理する Event をフィルタリング ○  環境の分別・通知の削減などが目的 ●  Filter の設定方法 ○  /etc/sensu/conf.d/filter.json などを用意 ○  "attributes" でフィルタリングする項目を定義 (Event 内の Client や Check も指定可能) ○  "negate" で不一致のフィルタリングも可能 ○  Handler に複数設定可能 ("filter" , "filters") 15/10/02 7 https://sensuapp.org/docs/latest/filters
  • 8.
    Filter の使用例 ●  環境の分別(本番環境のみハンドリング) ●  通知の削減 (60回毎にハンドリング) 15/10/02 8 "filters": { "production": { "attributes": { "client": { "environment": "production" "filters": { "recurrences": { "attributes": { "occurrences": "eval: value == 1 || value % 60 == 0" eval: で Ruby の式を評価可能
  • 9.
    Mutator 編 2 /3 15/10/02 9
  • 10.
    Mutator とは? ●  Mutatorとは? ○  Handler で処理する Event を編集 ○  ロジックの共有・ハンドリングの簡素化などが目的 ●  Mutator の設定方法 ○  /etc/sensu/conf.d/mutator.json などを用意 ○  "command" で実行する Mutator を指定 (コマンドは Sensu Server 上で実行) ○  標準入出力で JSON をやり取り ○  Handler に1つだけ設定可能 ("mutator") 15/10/02 10 https://sensuapp.org/docs/latest/mutators
  • 11.
    Mutator の使用例 ●  情報の付加(Sensu Server のホスト名) ●  他にも Community Plugins では… ○  Graphite 用に "output" を整形して出力 (graphite.rb) ○  営業時間中かどうかを付加 (officehours.rb) 15/10/02 11 # datacenter.rb require 'rubygems' if RUBY_VERSION < '1.9.0' require 'json' event = JSON.parse(STDIN.read, symbolize_names: true) event.merge!(datacenter: `hostname`.strip) puts JSON.dump(event)
  • 12.
    Aggregate 編 3 /3 15/10/02 12
  • 13.
    Aggregate とは? ●  Aggregateとは? ○  Check の実行毎に各 Client のステータスを集計 (ok , warning , critical , unknown の台数) ○  Sensu API で提供 (/aggregates) ●  Aggregate の設定方法 ○  各 Check の設定に aggregate: true を追加 (standalone: true の場合には無効) ○  集計結果は Uchiwa で閲覧可能 15/10/02 13 https://sensuapp.org/docs/latest/api-aggregates
  • 14.
  • 15.
    Aggregate の使用例 ●  Check ○ check-aggregate.rb (Community Plugins) ○  warning や critical が一定割合を超えたら通知 ●  Metrics ○  aggregate-metrics.rb (Community Plugins) ○  各ステータスのメトリクスを出力 15/10/02 15 sensu.aggregates.check-cpu.ok 125 1380251999 sensu.aggregates.check-cpu.warning 0 1380251999 sensu.aggregates.check-cpu.critical 0 1380251999 sensu.aggregates.check-cpu.unknown 0 1380251999 sensu.aggregates.check-cpu.total 125 1380251999
  • 16.
  • 17.
    Sensu with Golang ● hico-horiuchi/ohgi ○  扇: Sensu command-line tool by Golang ○  高速な動作,シンプルな表示 ●  hico-horiuchi/sensu-plugins-go ○  Sensu plugins & libraries by Golang ○  Check , Metrics , Handler のGo言語実装 15/10/02 17
  • 18.
    Sensu Deep Talks#3 2016年3月開催予定! 会場を提供して頂ける方を募集中 15/10/02 18