nagios监控mysql脚本
1. 如何用nagios实时监控crontab这样的定时服务
可以考虑让这个程序,每次执行成功后,都写一下时间戳到一个特定文件。
然瞎培轮后自己写一个plugins去检查这个时间戳文件,如果最后一个时间戳文件距离现在系统时间中配超过设定的时间(比如一磨信个小时),就发告警(warning或者critical)。
2. 如何扩展Nagios,以实现自定义监控
基本知识准备:1、SNMP(简单网络管理协议)2、一些脚本知识,可以编写任意一慎首拍种脚本。3、知道Nagios怎么用。好啦,现在开始:1、编写一个可以输出本机Nginx并发连接数的脚本,输出结果为连接数。我这里脚本比较简单,只是看看已经链接80端口的。当然也可以自己编写更精确的脚本。[root@webserver2scripts]#catshowhttp.sh#!/bin/bashecho`netstat-nat|grep-i"80"|wc-l`2、配置snmp,如何安装我就不说的,自己去弄呗。yuminstallnet-snmp*我是这么安装的。看下我的snmp配置文件:[root@webserver2~]#grep-v'^#'/etc/snmp/snmpd.conf|grep-v'^$'.1.3.6.1.2.1.1viewsystemviewincluded.1.3.6.1.2.1.25.1.1viewsystemviewincluded.1.3.6.1.4.1.2021accessnotConfigGroup""芹枣syslocationUnknown(edit/etc/snmp/snmpd.conf)syscontactRoot(configure/etc/snmp/snmp.local.conf)pass.1.3.6.1.4.1.4413.4.1/usr/bin/ucd5820statexec.1.3.6.1.4.1.2021.51showhttp/bin/bash/root/scripts/showhttp.sh然后重载下snmp的配置文件。/etc/init.d/snmpdreload使用snmpwalk测试下,能不能通过snmp来获取数据。[root@webserver2~]#snmpwalk-v1-cpublic192.168.137.102.1.3.6.1.4.1.2021.51UCD-SNMP-MIB::ucdavis.51.1.1=INTEGER:1UCD-SNMP-MIB::ucdavis.51.2.1=STRING:"showhttp"UCD-SNMP-MIB::ucdavis.51.3.1=STRING:"/bin/bash/root/scripts/showhttp.sh"UCD-SNMP-MIB::ucdavis.51.100.1=INTEGER:0UCD-SNMP-MIB::ucdavis.51.101.1=STRING:"7"UCD-SNMP-MIB::ucdavis.51.102.1=INTEGER:0UCD-SNMP-MIB::ucdavis.51.103.1=""[root@webserver2~]#snmpwalk-v1-cpublic192.168.137.102showhttpshowhttp:UnknownObjectIdentifier(Sub-idnotfound:(top)->showhttp)[root@webserver2~]#snmpwalk-v1-cpublic192.168.137.102.1.3.6.1.4.1.2021.51.101.1UCD-SNMP-MIB::ucdavis.51.101.1=STRING:"5"至此位置,snmp就配置好了。至于原理,google、一大堆。限于自己宽羡的表述能力和打字速度就不在此复述了。下面我登录nagios的监控机,来监控这台机器的http连接数量。2、首先安装nagios,这里跳过。3、先写个如下脚本,获取被监控的设备的snmp值。[root@webserver2libexec]#catshow_http#!/bin/bashOID='.1.3.6.1.4.1.2021.51.101.1'IPADDRESS=$2COMMUNITY=$1if[[-z$IPADDRESS]]||[[-z$COMMUNITY]];thenecho"MabeUsage:show_http"exit4ficounts=`snmpwalk-v1-c$COMMUNITY$IPADDRESS$OID2>/dev/null|awk-F'"''{print$2}'`if[-z$counts];thenecho"."exit4fiif[$counts-ge200];thenecho"Cirtical-connection-$counts"exit2elif[$counts-ge100];thenecho"Warning-connection-$counts"exit1elseecho"OK-connection-$counts"exit0fi3、最nagios进行一些配置:definecommand{command_namecheck-host-alivecommand_line$USER1$/show_httpnagios$HOSTADDRESS$#添加一条命令,参数是团体名和主机地址,团体名,我直接用了nagios。为了可扩展性的考虑,大家也可以使用resources文件来定义。这里不再复述。}definehost{#添加一台主机useweb-serverhost_namenginx-serveraliasnginx-serveraddress192.168.137.101}defineservice{#添加一项监控服务useweb-servicehost_namenginx-serverservice_descriptionshowhttpcheck_commandcheck_httplink}联系人什么的,我就不配置了,用配置文件来修改真心疲惫。这里顺便推荐两款软件Centreon、Nagiosql很不错的哦~
3. 如何监控MySQL
首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。
三、使用
接着我们来看下如何使用这个工具。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。
触发条件相关的参数有以下几个:
function:
∘默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
∘也可以设置为 processlist,代表监控 show processlist 的输出;
variable:
∘默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;
threshold:
∘默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;
∘监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;
cycles:
∘默认为 5,表示连续观察到五次满足触发条件时,才触发收集;
其他一些重要参数:
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。
run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。
sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。
interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。
dest:监控数据存放路径,默认为 /var/lib/pt-stalk。
retention-time :监控数据保留时长,默认 30 天。
daemonize:以后台服务运行,默认不开启。
log:后台运行日志,默认为 /var/log/pt-stalk.log。
collect:触发发生时收集诊断数据,默认开启。
∘collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。
∘collect-strace:收集跟踪数据,需要 strace 工具。
∘collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。
连接参数:host、password、port、socket。
4. nagios监控:如果被监控主机禁止ping如何检测主机的存活,即不使用用check-host-alive
Ping检测,戚咐服务器是否可禅亏达
telnet 8080端高袭纯口服务端口是否正常
5. 如何安装nagios-plugins
方法/步骤
1
首先下载Nagios Plugins
2
解压并安装 Nagios Plugins
tar zxf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
在这里需要等待一段时间,即可编译安装好。
3
Nagios Plugins主要是安装监控的脚答闹伍本,如果系统里没有对应的命令,就会不会安装相应的插件。清或
例如 如果没有 nslookup命令,就安装不上 check_dns 插件,所以当找不到插件的时候,先确认下系统是否有相应的命令。
4
默认插件是安装在目录 /usr/local/nagios/libexec/
5
我们也可以自弯做己写bash插件到这个目录上使用,自定义自己的监控插件。
6
最后我们来测试一插件的使用
注意事项
系统里有相关的命令才会安装对应的插件
6. 怎么用Nagios监测服务器的一个指定进程
可以通过自己编写check脚本完成,如弯凯消 我之前在网上找到的埋知check_ps.sh,可以达到监控这个进程的CPU,内存……等占用孙颂
7. 如何使用Nagios监控Cisco交换机硬件及运行状态
系统环境:Nagios3.x+CentOS5.6+Cisco4500前提条件:1.Cisco交换机都支持SNMP协议,只需要简单的设置即可开启,例如:snmp-servercommunitysnmppwRO。更加详细的设置请使用Google搜索“Cisco开启SNMP”,参考网上相关文章。2.在安装Nagios之前,必须已经安装Net-Utils及其开发组件。成功安装Nagios之后,再次检查libexec目录下有check_snmp命令。系统测试:check_snmp命令提供了详细的使用说明,只需要在Linux命令行输入check_snmp–help即可查看帮助信息,这其中包括每一项参数的使用等。这里以检测Cisco交换机的系统为例,示范如何使用check_snmp。交换机为Cisco4500系列,系统描述的OID为.1.3.6.1.2.1.1.1.0[root@wardkinglibexec]#./check_snmp-H10.241.10.1-o.1.3.6.1.2.1.1.1.0-CsnmppwSNMPOK–“CiscoIOSSoftware,Catalyst4500L3SwitchSoftware(cat4500-ENTSERV|K9-M),Version12.2(53)SG2,RELEASESOFTWARE(fc1)建议用于Nagios监段滚控的OID:系统内存使用(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.5.1系统可用内存(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.6.1CPU使用率(5分钟内)1.3.6.1.4.1.9.2.1.58.0硬件状态1.3.6.1.4.1.9.9.13系统配置:由于使用check_snmp检测的结果不够人性化,大部分的结果都需要重新调整。使用Perl脚本调用NET::SNMP模块,实现收集监控结果,并重新输出,更易阅读和使用。这里明携引用4个从国外网站收集的脚本,check_snmp_env,check_snmp_cisco_memutil,check_snmp_cisco_loadavg,check_snmp_cisco_ifstatus请下载至nagios安装目录下的libexec子目录中,例如/usr/local/nagios/libexec,重命名去掉txt扩展名,赋予可执行权限:[root@nagioslibexec]#pwd/usr/local/nagios/libexec[root@nagioslibexec]#chmoda+xcheck_snmp_cisco_*check_snmp_env-vmodeof`check_snmp_cisco_ifstatus’retainedas0755(rwxr-xr-x)modeof`check_snmp_cisco_loadavg’retainedas0755(rwxr-xr-x)modeof`check_snmp_cisco_memutil’retainedas0755(rwxr-xr-x)modeof`check_snmp_env’retainedas0755(rwxr-xr-x)剩下的工作就是follow标激燃伏准流程设置监控命令,添加被监控的交换机和服务了。编辑etc/objects/command.cfg,添加如下定义:#CheckCisco,{command_namecheck_snmp_envcommand_line$USER1$/check_snmp_env-H$HOSTADDRESS$-C$ARG1$$ARG2$}#{command_namecheck_snmp_cisco_memcommand_line$USER1$/check_snmp_cisco_memutil-H$HOSTADDRESS$-C$ARG1$-w$ARG2$-c$ARG3$}definecommand{command_namecheck_snmp_cisco_cpucommand_line$USER1$/check_snmp_cisco_loadavg-H$HOSTADDRESS$-C$ARG1$-w$ARG2$-c$ARG3$}definecommand{command_namecheck_snmp_cisco_ifcommand_line$USER1$/check_snmp_cisco_ifstatus-H$HOSTADDRESS$-C$ARG1$-i$ARG2$-w$ARG3$-c$ARG4$}编辑switch.cfg加入监控的交换机配置,新增相关系统服务,例如:defineservice{usegeneric-service;_nameCAT4506E_B1_LG3_1,CAT4506E_B3_A09L_1,CAT4507R_B5_A09R_1,CAT4507R_B1_LG3_1,CAT4507R_B5_D12_1,RackSW_PDC_1,RackSW_PDC_2,RackSW_PDC_3,RackSW_PDC_4,RackSW_SDC_2,RackSW_SDC_3service_descriptionEnvironmentcheck_commandcheck_snmp_env!snmppw}defineservice{usegeneric-service;_nameCAT4507R_B5_D12_1,CAT4507R_B1_LG3_1,CAT4506E_B1_LG3_1,CAT4506E_B3_A09L_1,CAT4507R_B5_A09R_1service_descriptionLoadAVGcheck_commandcheck_snmp_cisco_cpu!snmppw!60!80}defineservice{usegeneric-service;_nameCAT4507R_B5_D12_1,CAT4507R_B1_LG3_1,CAT4506E_B1_LG3_1,CAT4506E_B3_A09L_1,CAT4507R_B5_A09R_1service_descriptionMemutilcheck_commandcheck_snmp_cisco_mem!snmppw!70!90}
8. nagios怎样监控mysql日志
nagios怎样游银乎监控mysql日志
工作原理:
利用特定的用户定期访问指定的mysql数据库。当不能访问或连不通时则报警。
1.在神悉生产库上安装nagios插件
安装略
备搏脊注:编译完显示一定要有mysql支持,不然没有check_mysql插件
2.配置mysql
----建立nagdb专用数据库
mysql> create database nagdb default CHARSET=utf8;
Query OK, 1 row affected (0.01 sec)
mysql> grant select on nagdb.* to 'nagios'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> update mysql.user set 'Password' = PASSWORD('nagios') where 'User'='nagios';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Password' = PASSWORD('nagios') where 'User'='nagios'' at line 1
mysql> update mysql.user set Password = PASSWORD('nagios') where user='nagios';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)