zabbix生产环境上监控配置

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
监控 应用服务中间件 nginx
基于Zabbix的SLA监控体系构建与实践
本文由Zabbix社区专家褚凤彬分享,详解SLA在Zabbix中的应用。通过Trigger与Service联动,构建Web应用的多层级监控体系,并介绍SLA计算规则、维护期处理及升级注意事项,助力企业精准掌控服务可用性。
331 36
|
7月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
379 8
|
9月前
|
存储 缓存 监控
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
162 23
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
249 25
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
296 22
|
11月前
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
218 9
|
11月前
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
426 7
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
302 5
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
430 7