zabbix生产环境上监控配置

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介:

目前生产环直要监控指标

1、zabbix_agentd.conf

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
62
63
64
65
66
67
68
69
70
71
72
UserParameter=system1.uname,/bin/uname -r
###Recv-q
#UserParameter=recv-q,ss -nl|awk  '{print $2}' |grep -v  "Recv-Q" |awk  '{if($1>0) {print 1}}' |wc -l
####memory
UserParameter=master.memtotal,echo  "scale=2;`/usr/local/zabbix/script/memory.sh Memtotal` /1024"  | bc
UserParameter=master.memuse,echo  "scale=2;`/usr/local/zabbix/script/memory.sh Memuse` /1024"  | bc
UserParameter=master.memfree,echo  "scale=2;`/usr/local/zabbix/script/memory.sh Memfree` /1024"  | bc
UserParameter=master.bufferuse,echo  "scale=2;`/usr/local/zabbix/script/memory.sh Bufferuse` /1024"  | bc
UserParameter=master.bufferfree,echo  "scale=2;`/usr/local/zabbix/script/memory.sh Bufferfree` /1024"  | bc
####disk
#UserParameter=dcserver4.root.total,/bin/df -lh  | sed -n 2p | awk  '{print $2}'  | sed s/G //g
#UserParameter=dcserver4.root. use ,/bin/df -lh  | sed -n 2p | awk  '{print $3}'  | sed s/G //g
#UserParameter=dcserver4.root.use_per,/bin/df -lh  | sed -n 2p | awk  '{print $(NF-1)}'  | sed s/% //g
  
#UserParameter=dcserver4.data0.total,/bin/df -lh  | sed -n 5p | awk  '{print $2}'  | sed s/G //g 
#UserParameter=dcserver4.data0. use ,/bin/df -lh  | sed -n 5p | awk  '{print $3}'  | sed s/G //g 
#UserParameter=dcserver4.data0.use_per,/bin/df -lh  | sed -n 5p | awk  '{print $(NF-1)}'  | sed s/% //g
#UserParameter=dcserver4.data1.total,/bin/df -lh  | sed -n 6p | awk  '{print $2}'  | sed s/G //g 
#UserParameter=dcserver4.data1. use ,/bin/df -lh  | sed -n 6p | awk  '{print $3}'  | sed s/M //g
#UserParameter=dcserver4.data1.use_per,/bin/df -lh  | sed -n 6p | awk  '{print $(NF-1)}'  | sed s/% //g
  
###CPU load
UserParameter=master.cpu1,/usr/bin/w  | sed -n 1p | awk -F  ":"   '{print $5}'  | awk -F  ","  '{print $1}'
UserParameter=master.cpu5,/usr/bin/w  | sed -n 1p | awk -F  ":"   '{print $5}'  | awk -F  ","  '{print $2}'
UserParameter=master.cpu15,/usr/bin/w  | sed -n 1p | awk -F  ":"   '{print $5}'  | awk -F  ","  '{print $3}'
 
###### uptime
UserParameter=master.uptime,/usr/bin/w | sed -n 1p | awk -F  ","   '{print $1}'  | awk -F   " "  '{print $(NF-1)}'
####DISK IO
UserParameter=disk.pgpgin,cat /proc/vmstat | grep pgpgin | awk -F  " "  '{print $2}'
UserParameter=disk.pgpgout,cat /proc/vmstat | grep pgpgout| awk -F  " "  '{print $2}'
UserParameter=disk.pswpin,cat /proc/vmstat | grep pswpin |awk  '{print $2}'
UserParameter=disk.pswpout,cat /proc/vmstat | grep pswpout |awk  '{print $2}'
###TCP,UDP
UserParameter=passive.tcp.conn,cat /proc/net/snmp | grep Tcp | awk -F:  '{print $2}' |awk -F  " "  '{print $6}' | grep -v PassiveOpens
UserParameter=tcp.conn,cat /proc/net/snmp | grep Tcp | awk -F:  '{print $2}' |awk -F  " "  '{print $9}' | grep -v CurrEstab
UserParameter=udp.receive,cat /proc/net/snmp | grep Udp:|awk -F:  '{print $2}' |awk -F  " "  '{print $1}' |grep -v InDatagrams
UserParameter=udp.send,cat /proc/net/snmp | grep Udp:|awk -F:  '{print $2}' |awk -F  " "  '{print $4}' |grep -v OutDatagrams
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $ 1  | head - 1  | awk  '{print $$7}'
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $ 1  | head - 1  | awk  '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $ 1  | head - 1  | awk  '{print $$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $ 1  | head - 1  | awk  '{print $$6}'
####Dynamic monitoring of disk performance
UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output | grep $ 1  |tail - 1 |awk  '{print $$8}'
UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output | grep $ 1  | tail - 1  | awk  '{print $$9}'
UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep $ 1  | tail - 1  | awk  '{print $$12}'
###vmstat Performance status
 
####check disk status##
UserParameter=check_disk_status,mount | awk  '{print $NF}' |cut -c  2 - 3 |awk  '{if($1~/ro/) {print 1}}' |wc -l|awk  '{if($1<=0) {print 0 } else {print 1}}'
 
######check servers status###
UserParameter=check_ip_exsit[*],nmap -sn $ 1  | grep down | wc -l
####mysql
#UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/script/zabbix_low_discovery.sh $ 1
#UserParameter=mysql_stats[*],mysql -h  127.0 . 0.1  -P $ 1  -uzabbix -phuidong2013 -e  "show global status" |grep  "\<$2\>" |cut  -f2
UserParameter=mysql_stats[*],sudo /usr/local/mysql/bin/mysql --login-path=local -P $ 1  -e  "show global status"  |grep  "\<$2\>"  |cut -f2
UserParameter=mysql_stats_slave[*],sudo /usr/local/mysql/bin/mysql --login-path=local -P $ 1  -e  "show slave global status\G"  |grep  "\<$2\>"  |awk  '{if($NF=="Yes"){print 1} else {print 0}}'
#####redis
UserParameter=redis_stats[*],(echo info;sleep  1 ) | telnet  192.168 . 1.205  $ 1  2 >& 1  | grep $ 2 |cut -d : -f2
 
#######follow  is  monitor hardware 
UserParameter=hardware_battery,omreport chassis batteries|awk  '/^Status/{if($NF=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_cpu_model,awk -v hardware_cpu_crontol=`sudo omreport  chassis biossetup|awk  '/C State/{if($NF=="Enabled") {print 0} else {print  1}}' ` -v hardware_cpu_c1=`sudo omreport chassis biossetup|awk  '/C1[-|E]/{if($NF=="Enabled") {print 0} else {print 1}}' 'BEGIN{if(hardware_cpu_crontol==0 && hardware_cpu_c1==0) {print 0} else {print 1}}'
UserParameter=hardware_fan_health,awk -v hardware_fan_number=`omreport chassis fans|grep -c  "^Index" ` -v hardware_fan=`omreport chassis fans|awk  '/^Status/{if($NF=="Ok") count+=1}END{print count}' 'BEGIN{if(hardware_fan_number==hardware_fan) {print 1} else {print 0}}'
UserParameter=hardware_memory_health,awk -v hardware_memory=`omreport chassis memory|awk  '/^Health/{print $NF}' 'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_nic_health,awk -v hardware_nic_number=`omreport chassis nics |grep -c  "Interface Name" ` -v hardware_nic=`omreport chassis nics |awk  '/^Connection Status/{print $NF}' |wc -l`  'BEGIN{if(hardware_nic_number==hardware_nic) {print 1} else {print 0}}'
UserParameter=hardware_cpu,omreport chassis processors|awk  '/^Health/{if($NF=="Ok") {print 1} else {print 0}}'
UserParameter=hardware_power_health,awk -v hardware_power_number=`omreport chassis pwrsupplies|grep -c  "Index" ` -v hardware_power=`omreport chassis pwrsupplies|awk  '/^Status/{if($NF=="Ok") count+=1}END{print count}' 'BEGIN{if(hardware_power_number==hardware_power) {print 1} else {print 0}}'
UserParameter=hardware_temp,omreport chassis temps|awk  '/^Status/{if($NF=="Ok") {print 1} else {print 0}}' |head -n  1
UserParameter=hardware_physics_health,awk -v hardware_physics_disk_number=`omreport storage pdisk controller= 0 |grep-c  "^ID" ` -v hardware_physics_disk=`omreport storage pdisk controller= 0 |awk  '/^Status/{if($NF=="Ok") count+=1}END{print count}' 'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk) {print 1} else {print 0}}'
UserParameter=hardware_virtual_health,awk -v hardware_virtual_disk_number=`omreport storage vdisk controller= 0 |grep -c  "^ID" ` -v hardware_virtual_disk=`omreport storage vdisk controller= 0 |awk  '/^Status/{if($NF=="Ok") count+=1}END{print count}' 'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk) {print 1} else {print 0}}'

2、用到lld发现脚本

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
[root@dcserver2 script]# vim zabbix_low_discovery.sh
#!/bin/bash
#Fucation:zabbix low-level discovery
memcache() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/[m]emcached/ && /0.0.0.0/ {print $5}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"},\n"
  
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"}\n"
  
                        fi
                done
  
                           printf  '\t ]\n'
                           printf  '}\n'
}
  
redis() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/[r]edis/ && /0.0.0.0/ {print $5}' |grep ^ 7 ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"},\n"
  
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"}\n"
  
                        fi
                done
  
                           printf  '\t ]\n'
                           printf  '}\n'
}
node() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/[n]ode/ && /0.0.0.0/ {print $5}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#NODEPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#NODEPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
mysql() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/[m]ysql/ {print $4}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
sshd() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/sshd/ && /0.0.0.0/ {print $5}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#SSHDPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#SSHDPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
mongodb() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/mongo/ && /0.0.0.0/ {print $5}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MONGODBPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#MONGODBPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
partition() {
             port=($(grep -E  "(vd[a-z]$|sd[a-z]$)"  /proc/partitions|awk  '{print $4}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
twemproxy() {
             port=($(sudo netstat -tpln | awk -F  "[ :]+"  '/nutcracker/ && /0.0.0.0/ {print $5}' |uniq))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!port[@]}
                    do
                        if  [[  "${#port[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#port[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#TWEMPROXYPORT}\":\"${port[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#port[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#TWEMPROXYPORT}\":\"${port[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
check_ip_exsit() {
             ip=($(sudo nmap -sn  192.168 . 1.162 - 210 |grep  "192.168.1" |awk -F  " "  '{print $NF}' |awk -F  "[()]"  '{print $2}' ))
             printf  '{\n'
             printf  '\t"data":[\n'
                for  key  in  ${!ip[@]}
                    do
                        if  [[  "${#ip[@]}"  -gt  1  &&  "${key}"  -ne  "$((${#ip[@]}-1))"  ]];then
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#IPNAME}\":\"${ip[${key}]}\"},\n"
                      else  [[  "${key}"  -eq  "((${#ip[@]}-1))"  ]]
                           printf  '\t {\n'
                           printf  "\t\t\t\"{#IPNAME}\":\"${ip[${key}]}\"}\n"
                        fi
                done
                           printf  '\t ]\n'
                           printf  '}\n'
}
case  $ 1  in
memcache)
memcache
;;
redis)
redis
;;
node)
node
;;
mysql)
mysql
;;
sshd)
sshd
;;
mongodb)
mongodb
;;
partition)
partition
;;
twemproxy)
twemproxy
;;
check_ip_exsit)
check_ip_exsit
;;
*)
echo  "Usage:`basename $0` {memcache|redis|node|mysql|sshd|mongodb|partition|twemproxy|check_ip_exsit}"
;;
esac

3、发送邮件脚本

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
[root@dcserver2 script]# vim zabbix_sendmail
#!/usr/bin/python
# -*- coding: utf- 8  -*-
"" "
Zabbix SMTP Alert script from  126 .
"" "
import  sys
import  smtplib
from email.mime.text  import  MIMEText
  
  
mail_host= "smtp.163.com"
mail_user= "******@163.com"
mail_pass= "*****"
mail_postfix= "pop.163.com"
  
def send_mail(to_list,sub,content):
     '' '
     to_list:sent to who
     sub:subject
     content:content
     send_mail( "zouqingyun1989@163.com" , "sub" , "content" )
     '' '
     address=mail_user+ "<" +mail_user+ "@" +mail_postfix+ ">"
     msg = MIMEText(content)
     msg[ 'Subject' ] = sub
     msg[ 'From' ] = address
     msg[ 'To' ] =to_list
     try :
         s = smtplib.SMTP()
         s.connect(mail_host)
         s.login(mail_user,mail_pass)
         s.sendmail(address, to_list, msg.as_string())
         s.close()
         return  True
     except Exception, e:
         print str(e)
         return  False
if  __name__ ==  '__main__' :
         send_mail(sys.argv[ 1 ], sys.argv[ 2 ], sys.argv[ 3 ])









本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1697108,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
235
分享
相关文章
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
71 23
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
70 22
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
83 25
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
77 9
zabbix全面的监控能力
zabbix全面的监控能力
175 7
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
78 5
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
243 7
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
155 2
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
159 2
zabbix agent集成percona监控MySQL的插件实战案例

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等