zabbix生产环境上监控配置

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 2核4GB
简介:

目前生产环直要监控指标

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
目录
相关文章
|
3月前
|
监控 关系型数据库 Linux
|
4月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
5月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
87 4
|
1月前
|
监控 网络协议 Unix
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
centos7 zabbix安装客户端agent -配置监控远程主机 在需要监控的电脑上安装
22 0
|
2月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
26 2
|
3月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
5月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
269 0
|
5月前
|
监控 Java
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
94 0
|
5月前
|
监控 前端开发 应用服务中间件
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
417 0
|
5月前
|
监控 关系型数据库 MySQL
zabbix部署以及配置
zabbix部署以及配置
80 3

推荐镜像

更多