カスタムグラフの作り方

[id:cooldaemon:20060802]で書いた、mysql 死活監視のやっつけをグラフ化する方法。
/home/hobbit 配下に Hobbit がインストール済みだと仮定する。

グラフ作成前の準備

/home/hobbit/server/ext 配下に下記の script を配置。

> cat mysql_ping.pl
#!/usr/local/bin/perl

use strict;
use warnings;

use Readonly;
use Time::HiRes qw(time);
use IO::Socket;

Readonly my $TAG     => q{mysqlping};
Readonly my $PORT    => q{3306};
Readonly my $TIMEOUT => q{10};

check_bb_env() or die q{call form BB!}, "?n";

for (`$ENV{BBHOME}/bin/bbhostgrep $TAG`) {
  my ($host_ip, $host_name,) = split /?s/;
  send_to_bb( $host_name, connect_to_host( $host_ip, ) );
}
exit;

sub check_bb_env {
  for ( qw(BB BBDISP BBHOME) ) {
    return 0 if ! defined $ENV{$_};
  }
  return 1;
}

sub connect_to_host {
  my ($host_ip) = @_;

  my $start_sec = time;

  my $socket = IO::Socket::INET->new(
    PeerAddr => $host_ip,
    PeerPort => $PORT,
    Timeout  => $TIMEOUT,
  ) or return ( q{red}, 0, );

  my $end_sec = time;

  $socket->close();

  return ( q{green}, int( ($end_sec - $start_sec) * 1000 ), );
}

sub send_to_bb {
  my ($host_name, $color, $connect_sec,) = @_;

  my $now_date = `date`;
  `$ENV{BB} $ENV{BBDISP} "status $host_name.$TAG $color $now_date?n?nms : $connect_sec?n"`;
}

前回は、shell で書いたが、今回は perlCPAN モジュールに依存してるが気にしない。

hobbitlaunch.cfg に配置した script を実行する記述を追加。

[mysqlping]
        ENVFILE /home/hobbit/server/etc/hobbitserver.cfg
        NEEDS hobbitd
        CMD $BBHOME/ext/mysql_ping.pl
        LOGFILE $BBSERVERLOGS/mysqlping.log
        INTERVAL 5m

bb-hosts に、mysqlping を追加する。

xxx.xxx.xxx.xxx mysql  # mysqlping

ここまでは、前回の解説と、ほぼ同様。

グラフ作成

hobbitserver.cfg に rrd ファイルを作成する為の記述を追加。

TEST2RRD="cpu=la,disk,inode,...[いろいろ省略]...,lines,mysqlping=ncv"
NCV_mysqlping="ms:GAUGE"

hobbitgraph.cfg にグラフ表示の設定を追加。

[mysqlping]
        TITLE MySQL connect milli second
        YAXIS milli second
        DEF:connect=mysqlping.rrd:ms:AVERAGE
        LINE2:connect#00CCCC:connect ms
        COMMENT:?n
        GPRINT:connect:LAST:connect ?: %5.1lfms (cur)
        GPRINT:connect:MAX: ?: %5.1lfms (max)
        GPRINT:connect:MIN: ?: %5.1lfms (min)
        GPRINT:connect:AVERAGE: ?: %5.1lfms (avg)?n

trends に追加する場合は、hobbitserver.cfg に下記を追加。

GRAPHS="la,disk,inode,...[いろいろ省略]...,lines,mysqlping"

参考URL

http://www.umasugi.com/~h070017/hobbit/index_c3_s1.html
ほぼ、ここのパクリ。多謝!