監視をテーマに参加者全員がゆるふわに好き放題しゃべる Monitoring Casual Talk に参加してきました
Zussar: http://www.zusaar.com/event/521056
発表した内容はこちら。監視の話なのかどうかは謎
MHA for MySQLの基本構成と弊社で使っているMHA管理ツールの紹介です。masterha_managerの設定とプロセス管理、そしてオンラインでのマスター切り替えをWebUIから行えるの非常に便利なツールです。オープンソースになってないのに喋りました。すみません。
今回感じたのが、モニカジ参加者かいわいでの監視ツールが zabbix か munin + nagios に固まってきている点。zabbix勢はツールの使いこなしに悩んでいて、nagios勢は設定ファイルの自動生成あたりがホットな話題という感じでした。
弊社は cloudforecast + データセンターの監視サービス + 一部nagios の環境。サーバ管理ツールとの連携とかあまりしていないので、監視漏れは気をつけていないとでてくるし、そろそろツールの改良,自動化などを考えたいと思っているところ。
ちなみに nagiosの設定ファイルは Data::Section::Simple と Xslateで生成してる。
#!/usr/bin/env perl
use strict;
use warnings;
use Text::Xslate;
use Data::Section::Simple qw(get_data_section);
use Log::Minimal;
$Log::Minimal::AUTODUMP=1;
my @nodes;
for my $l ( split /\n/, get_data_section('data') ) {
chomp($l);
my ($ip, $host, $notify) = split /\s+/, $l;
push @nodes, {
ipaddr => $ip,
hostname => $host,
is_master => ( $host =~ m!^dbm! ) ? 1 : 0,
notify => $notify ? 1 : 0,
};
}
my $tx = Text::Xslate->new();
print $tx->render_string(get_data_section('tmpl'), { nodes => \@nodes });
__DATA__
@@ data
10.xx.xx.74 dbm101.service
10.xx.xx.74 dbs101.service
@@ tmpl
: for $nodes -> $node {
define host{
use generic-host
max_check_attempts 3
host_name <: $node.hostname :>
alias <: $node.hostname :>
address <: $node.ipaddr :>
contact_groups ldnsg
}
define service{
use generic-service
host_name <: $node.hostname :>
service_description Disk Usage
max_check_attempts 3
normal_check_interval 15
retry_check_interval 15
notification_options u,c,r
notifications_enabled 1
check_command check_mysql5_disk
}
..
:}
define hostgroup{
hostgroup_name mysql5
alias mysql5
members <: $nodes.map(-> $a { $a.hostname }).join(", ") :>
}
サーバが増えても1行足すだけなので、お気楽ですね。