nagios+pnp简单环境的应对

来源:互联网 发布:工业数据库 编辑:程序博客网 时间:2024/04/28 00:18

引言

实习公司为了给某一个客户做MySQL业务优化,需要做一个监控,对客户的日常MySQL做一些基本的使用情况监控,监控一段时间后做一些优化。

监控环境

一共四台需要监控的MySQL主机,一台跳转机,其中四台MySQL主机的三台为一主一从一备份,另一台主机为单节点的MySQL
这四台MySQL主机命名为mysql_master1,mysql_master2,mysql_slave1,mysql_single,操作系统都是centos4.6
这四台主机只能通过跳转机jumper进行访问,而且jumper只提供2222端口的ssh服务。一切数据都需要从这个端口获得

要求监控MySQL的所有库的连接情况,总连接情况,MySQL资源使用情况:CPU,内存等,系统的资源使用情况:CPU,内存,IO,磁盘等等。
对于三台一主一从一备集群要监控主从复制状态,主从复制延迟等信息。

解决方案

集群比较小,直接使用check_nrpe插件进行信息收集,然后在跳转机上进行显示即可。
但是为了效果好,需要配置一个pnp的环境。问题层出不断啊

check_nrpe SSL握手失败:

check_nrpe官方有check_nrpe trouble的文档。可以找到一些常见问题的处理办法。

为了安装check_nrpe需要安装ssl库,在每台MySQL主机whereis openssl 发现都安装了SS。OK直接编译安装
出现SSL握手问题,发现SSL的版本不同导致,好吧。到SSL官网下一个统一1.0版本,安装搞定。

在编译check_nrpe的时候用--with-ssl-inc以及--with-ssl-lib制定手动安装ssl库的位置。
这里又是遇到问题,指定了安装路径,还是找不到libssl库,好吧,受不鸟了,修改了一下configure脚步文件,直接写死SSL库位置,顺利编译安装check_nrpe
然后需要指定一下LD_LIBRARY_PATH,加入ssl库的位置,否则运行check_nrpe时候找不到ssl动态库。

pnp安装

由于jumper跳转机的系统是4.6,在安装pnp时各种错误,pnp需要rddtool画图库,这个库各种依赖,与系统自身安装的很多包不兼容,centos4.6的源已经停用,只能更换为centos4.9的源进行使用,但还是各种库不兼容,版本不匹配等等的问题,最后实在是不想在折腾了,在公司找了台服务器安装了nagios+pnp环境,跳转机只作为收集信息使用,将信息收集过来,使用公司的服务器进行显示效果。架构图如下

使用linux下的dia一个简单的画图软件画的,比较丑。
从图上看思路就比较清晰了,显示界面的主机通过check_ssh对jumper发送server check指令。即调用jumper上的check_nrpe插件检查四台MySQL主机,四台MySQL上都运行着nrpe服务端口采用默认端口5666。然后通过jumper将信息反馈给nagios+pnp显示出来即可。

这里使用check_ssh需要配置免登陆 可以参考http://chenlb.iteye.com/blog/211809
注:安装的nagios版本为4.0+,使用pnp的默认配置是不行的,需要使用bulk配置才可以。

监控脚步

监控脚步格式在之前的文章中说明过,这里针对性能数据进行说明脚步说明格式。

  1. 'label'=value[UOM];[warn];[crit];[min];[max]

  1. 注意:

    1. 多个性能数据之间用空格分割

    2. label 可以包含任何字符

    3. 如果label中包含空格、等号、或者单引号,则label需要用单引号来括起来

    4. warn/crit/min/max可以为null

    value, min and max只能为负号“-” “09” 和小数点“.” 并且单位必须统一 

    例如:cpu_user=0.5%;99.9;-9;

    5. 如果UOM单位是%,则minmax不需要再指定

    6. UOM单位可以是如下: 默认空,表示数量(用于用户数、处理器数等)

           s    表示秒(也可以用usms

           %   表示百分比

           B    表示字节(也可以用KB,MB,TB,GB

           c    一个连续的计数(如:接口传输的字节数)


用  |   隔开,详细可以参考鸟哥的博客。http://blog.chinaunix.net/uid-25266990-id-3437195.html

性能日志转储

日志转储是必须的不同多说。本来打算使用插件NDOutils, 不知道为什么编译直接core dump。好吧。。。那我就不存数据库了直接存文件里吧。
默认的处理性能数据的pnp脚步是process_perfdata.pl 默认这个perl脚步会在性能数据文件超过10M时直接将文件truncate掉,所以该起来也比较容易直接将truncate之前copy一下文件即可如下
#             # Write to Logfile#             sub print_log {    my $out      = shift;    my $severity = shift;    if ( $severity <= $conf{LOG_LEVEL} ) {        open( LOG, ">>" . $conf{LOG_FILE} ) || die "Can't open logfile ($conf{LOG_FILE}) ", $!;        if ( -s LOG > $conf{LOG_FILE_MAX_SIZE} ) {       #     truncate( LOG, 0 );                                                                                                                      #     printf( LOG "File truncated" );             my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;             $year += 1900;             $mon += 1;             my $filename = sprintf ("/usr/local/pnpnagios/var/history/%d-%02d-%02d-%02d-%02d-%02d.log", $year,$mon,$mday,$hour,$min,$sec);             copy ($conf{LOG_FILE}, $filename);             truncate( LOG, 0);        }                 my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);        printf( LOG "%02d-%02d-%02d %02d:%02d:%02d [%d] [%d] %s\n", $year + 1900, $mon + 1, $mday, $hour, $min, $sec, $$, $severity, $out );        close(LOG);    }         }             
如果觉得10M大小转储起来日志文件太多可以修改一下LOG_FILE_MAX_SIZE的大小。

最后的成果图如下:下图为单击mysql主机的总连接数性能数据图。

0 0
原创粉丝点击