先日の記事で紹介したLibrato管理ツール「lbrt」にテンプレート機能を付けました。
基本的な使い方は以下の通り。
template "dstat" do chart "load_avg" do type "line" stream do metric "dstat.#{context.space_name}.load_avg" type "gauge" source "*" group_function "breakout" summary_function "average" end end end space "my-host-001" do include_template "dstat" end
Alert・Serviceでも同様に使うことができます。
以下のような書き方もできます。
template "dstat" do space context.hostname + context.my_id do chart "load_avg" do type "line" stream do metric "dstat.#{context.space_name}.load_avg" type "gauge" source "*" group_function "breakout" summary_function "average" end end end end contest[:my_id] = "100" include_template "dstat", hostname: "my-host"
template
メソッドの呼び出しはトップレベルのみですが、include_template
はどこでも使えます。
template "my stream" do stream do metric "dstat.#{context.space_name}.load_avg" type "gauge" source "*" group_function "breakout" summary_function "average" end end space "my-host-001" do chart "load_avg" do type "line" include_template "my stream" end end
利用例①: テンプレートをホストごとSpace(ダッシュボード)に適用する
# requireでテンプレートを他のファイルに分けることもできます template "dstat" do chart "load_avg" do type "line" stream do metric "dstat.#{context.space_name}.load_avg" type "gauge" source "*" group_function "breakout" summary_function "average" end end end space "my-host-001" do include_template "dstat" end space "my-host-002" do include_template "dstat" end space "my-host-003" do include_template "dstat" # このホストはMySQLのチャートも表示する chart "mysql qps" do type "line" stream do metric "mysql.qps" type "gauge" source "*" group_function "breakout" summary_function "average" end end end
利用例②: テンプレートをホストごとのアラート適用する
# requireでテンプレートを他のファイルに分けることもできます template "alert set1" do alert "#{context.hostname}/login-delay" do description "desc" attributes "runbook_url"=>"http://example.com" active true rearm_seconds 600 rearm_per_signal false condition do type "below" metric_name 'login-delay' source nil threshold 4.0 summary_function "sum" end service "mail", "my email" end alert "#{context.hostname}/login-delay2" do description "desc" attributes "runbook_url"=>"http://example.com" active true rearm_seconds 600 rearm_per_signal false condition do type "below" metric_name 'login-delay2' source nil threshold 4.0 summary_function "sum" end service "mail", "my email" end end include_template "alert set1", hostname: 'host1' "host2".tap do |host| include_template "alert set1", hostname: host # host2はMySQLも監視する alert "#{host}/mysql.qps" do description "desc" attributes "runbook_url"=>"http://example.com" active true rearm_seconds 600 rearm_per_signal false condition do type "below" metric_name 'mysql.qps' source nil threshold 4.0 summary_function "sum" end service "mail", "my email" service "hipchat", "my hipchat" end end
これでまた、Zabbixが不要な世界に一歩近づき、人類の進歩と平和に貢献することができました。