nagios通过脚本对系统进行定制监控

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 这里为了简单演示在linux系统下如何利用nagios对系统进行定制监控。nagios在linux的监控流程是使用nrpe客户端来调用/usr/lib64/nagios/plugins/目录下的脚本,然后将获取的数据返回给nagios,那些脚本会返回不同的状态值以及一些信息。nagios就是根据这些返回值来判断服务状态是否正常以及是否需要告警。这些状态值说明如下:
1、返回的状态值为0,表示OK,没有异常。
2、返回的状态值为1,表示WARNING,会触发WARNING报警。
3、返回的状态值为2,表示CRITICAL,会触发CRITICAL报警。
4、返回状态为3,表示UNKNOWN,

那面详细得来说明如何通过脚本定制监控数据库的连接数:
第一步:先写好获取数据的脚本,脚本中明确定义返回的状态码,

我这里的软件都是yum安装的

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
vi  /usr/lib64/nagios/plugins/check_mysql_connections
 
#!/bin/bash
#Written by  sjf
#This Nagios plugin can be check your mysql connections status
 
USAGE_Method="$( basename  $0) [-w|--warning] 
[-c|--critical]  "USAGE_Value=" WARNING value must be small than CRITICAL value: ` basename  $0` $*"
MYSQLUSER=nagios
MYSQLPS=nagiosadmin
MYSQLBIN= /usr/bin/mysql
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
if  [ $ # -lt 4 ];then
echo
echo  "Usage: $USAGE_Method"
echo
exit  0
fi
while  [ $ # -gt 0 ];do
case  "$1"  in
-w|--warning)
shift
WARNING=$1
;;
-c|--critical)
shift
CRITICAL=$1
;;
esac
shift
done
if  [[ $WARNING - eq  $CRITICAL || $WARNING -gt $CRITICAL ]]
then
echo
echo  "$USAGE_Value"
echo
echo  "Usage: $USAGE_Method"
echo
exit  0
fi
used_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e  "show status like 'Threads_connected'\G"  grep  "Value"  awk  '{print $2}' )
max_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e  "show variables like 'max_connections'\G"  grep  "Value"  awk  '{print $2}' )
PERCENT=$( bc  <<<  "scale=2;$used_connections/$max_connections"  tr  '^.'  ' ' )
if  [[  "$PERCENT"  -gt  "$CRITICAL"  ]]
then
echo  "CRITICAL - used_connections is : $used_connections"
exit  2
fi
if  [[  "$PERCENT"  -gt  "$WARNING"  &&  "$PERCENT"  -lt  "$CRITICAL"  ]]
then
echo  "WARNING - used_connections is : $used_connections"
exit  1
fi
if  [[  "$PERCENT"  -lt  "$WARNING"  ]]
then
echo  "OK - used_connections is : $used_connections"
exit  0
fi

因为这里涉及到mysql数据库的权限,因此需要在mysql中添加naigos帐号,这一步操作命令如下:

1
2
GRANT PROCESS, FILE, SUPER, REPLICATION CLIENT ON *.* TO  'nagios' @ 'localhost'  IDENTIFIED BY  'nagiosadmin' ;
FLUSH PRIVILEGES;

第二步:配置nrpe.cnf配置文件,定义获取数据的命令,以供nagios服务器端调用,配置如下:

1
2
vim  /etc/nrpe .cfg
command [check_mysql_connections]= /usr/lib64/nagios/plugins/check_mysql_connections  -w 75 -c 85

保存后,重新启动nrpe客户端,执行如下命令:

1
2
killall nrpe
nrpe -c  /etc/nagios/nrpe .cfg -d

第三步:在命令配置文件中定义命令

1
2
3
4
5
vi  /etc/nagios/objects/commands .cfg 
define  command {
         command_name check_mysql_connections
          command_line $USER1$ /check_mysql_connections  -H $HOSTADDRESS$  -c $ARG1$
          }

第四步:在nagios服务器端配置服务器调用该命令进行监控,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
define service {
use generic-service
host_name  www.sjf.com
service_description check_mysql_connections
check_period 24x7
notifications_enabled 1
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
contact_groups  admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command   check_mysql_connections
}

最后检查配置问题以后,重新加载nagios的配置,具体操作命令如下:

1
2
nagios - v  /etc/nagios/nagios .cfg
systemctl   restart nagios

至此整个监控mysql连接数的流程就算添加完成了。其他的自定义监控也一样,拿脚本稍微改一改就能搞定了。

但是这里有个问题,每个版本的变量可能会发生改变,这点小伙伴们应该注意版本,希望对大家有所帮助!




 本文转自 sjfbjs 51CTO博客,原文链接:http://blog.51cto.com/11886896/1874537
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
监控 Linux Perl
|
监控 Apache 数据安全/隐私保护
|
监控 开发工具 PHP
|
监控 Windows 数据安全/隐私保护
|
监控 Apache 网络安全