天天看点

zabbix生产环境上监控配置

目前生产环直要监控指标

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

<code>UserParameter=system1.uname,/bin/uname -r</code>

<code>###Recv-q</code>

<code>#UserParameter=recv-q,ss -nl|awk </code><code>'{print $2}'</code><code>|grep -v </code><code>"Recv-Q"</code><code>|awk </code><code>'{if($1&gt;0) {print 1}}'</code><code>|wc -l</code>

<code>####memory</code>

<code>UserParameter=master.memtotal,echo </code><code>"scale=2;`/usr/local/zabbix/script/memory.sh Memtotal` /1024"</code> <code>| bc</code>

<code>UserParameter=master.memuse,echo </code><code>"scale=2;`/usr/local/zabbix/script/memory.sh Memuse` /1024"</code> <code>| bc</code>

<code>UserParameter=master.memfree,echo </code><code>"scale=2;`/usr/local/zabbix/script/memory.sh Memfree` /1024"</code> <code>| bc</code>

<code>UserParameter=master.bufferuse,echo </code><code>"scale=2;`/usr/local/zabbix/script/memory.sh Bufferuse` /1024"</code> <code>| bc</code>

<code>UserParameter=master.bufferfree,echo </code><code>"scale=2;`/usr/local/zabbix/script/memory.sh Bufferfree` /1024"</code> <code>| bc</code>

<code>####disk</code>

<code>#UserParameter=dcserver4.root.total,/bin/df -lh  | sed -n 2p | awk </code><code>'{print $2}'</code> <code>| sed s/G</code><code>//g</code>

<code>#UserParameter=dcserver4.root.</code><code>use</code><code>,/bin/df -lh  | sed -n 2p | awk </code><code>'{print $3}'</code> <code>| sed s/G</code><code>//g</code>

<code>#UserParameter=dcserver4.root.use_per,/bin/df -lh  | sed -n 2p | awk </code><code>'{print $(NF-1)}'</code> <code>| sed s/%</code><code>//g</code>

<code> </code> 

<code>#UserParameter=dcserver4.data0.total,/bin/df -lh  | sed -n 5p | awk </code><code>'{print $2}'</code> <code>| sed s/G</code><code>//g </code>

<code>#UserParameter=dcserver4.data0.</code><code>use</code><code>,/bin/df -lh  | sed -n 5p | awk </code><code>'{print $3}'</code> <code>| sed s/G</code><code>//g </code>

<code>#UserParameter=dcserver4.data0.use_per,/bin/df -lh  | sed -n 5p | awk </code><code>'{print $(NF-1)}'</code> <code>| sed s/%</code><code>//g</code>

<code>#UserParameter=dcserver4.data1.total,/bin/df -lh  | sed -n 6p | awk </code><code>'{print $2}'</code> <code>| sed s/G</code><code>//g </code>

<code>#UserParameter=dcserver4.data1.</code><code>use</code><code>,/bin/df -lh  | sed -n 6p | awk </code><code>'{print $3}'</code> <code>| sed s/M</code><code>//g</code>

<code>#UserParameter=dcserver4.data1.use_per,/bin/df -lh  | sed -n 6p | awk </code><code>'{print $(NF-1)}'</code> <code>| sed s/%</code><code>//g</code>

<code>###CPU load</code>

<code>UserParameter=master.cpu1,/usr/bin/w  | sed -n 1p | awk -F </code><code>":"</code>  <code>'{print $5}'</code> <code>| awk -F </code><code>","</code> <code>'{print $1}'</code>

<code>UserParameter=master.cpu5,/usr/bin/w  | sed -n 1p | awk -F </code><code>":"</code>  <code>'{print $5}'</code> <code>| awk -F </code><code>","</code> <code>'{print $2}'</code>

<code>UserParameter=master.cpu15,/usr/bin/w  | sed -n 1p | awk -F </code><code>":"</code>  <code>'{print $5}'</code> <code>| awk -F </code><code>","</code> <code>'{print $3}'</code>

<code>###### uptime</code>

<code>UserParameter=master.uptime,/usr/bin/w | sed -n 1p | awk -F </code><code>","</code>  <code>'{print $1}'</code> <code>| awk -F  </code><code>" "</code> <code>'{print $(NF-1)}'</code>

<code>####DISK IO</code>

<code>UserParameter=disk.pgpgin,cat /proc/vmstat | grep pgpgin | awk -F </code><code>" "</code> <code>'{print $2}'</code>

<code>UserParameter=disk.pgpgout,cat /proc/vmstat | grep pgpgout| awk -F </code><code>" "</code> <code>'{print $2}'</code>

<code>UserParameter=disk.pswpin,cat /proc/vmstat | grep pswpin |awk </code><code>'{print $2}'</code>

<code>UserParameter=disk.pswpout,cat /proc/vmstat | grep pswpout |awk </code><code>'{print $2}'</code>

<code>###TCP,UDP</code>

<code>UserParameter=passive.tcp.conn,cat /proc/net/snmp | grep Tcp | awk -F: </code><code>'{print $2}'</code><code>|awk -F </code><code>" "</code> <code>'{print $6}'</code><code>| grep -v PassiveOpens</code>

<code>UserParameter=tcp.conn,cat /proc/net/snmp | grep Tcp | awk -F: </code><code>'{print $2}'</code><code>|awk -F </code><code>" "</code> <code>'{print $9}'</code><code>| grep -v CurrEstab</code>

<code>UserParameter=udp.receive,cat /proc/net/snmp | grep Udp:|awk -F: </code><code>'{print $2}'</code><code>|awk -F </code><code>" "</code> <code>'{print $1}'</code><code>|grep -v InDatagrams</code>

<code>UserParameter=udp.send,cat /proc/net/snmp | grep Udp:|awk -F: </code><code>'{print $2}'</code><code>|awk -F </code><code>" "</code> <code>'{print $4}'</code><code>|grep -v OutDatagrams</code>

<code>UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $</code><code>1</code> <code>| head -</code><code>1</code> <code>| awk </code><code>'{print $$7}'</code>

<code>UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $</code><code>1</code> <code>| head -</code><code>1</code> <code>| awk </code><code>'{print $$12}'</code>

<code>UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $</code><code>1</code> <code>| head -</code><code>1</code> <code>| awk </code><code>'{print $$13}'</code>

<code>UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $</code><code>1</code> <code>| head -</code><code>1</code> <code>| awk </code><code>'{print $$6}'</code>

<code>####Dynamic monitoring of disk performance</code>

<code>UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output | grep $</code><code>1</code> <code>|tail -</code><code>1</code><code>|awk </code><code>'{print $$8}'</code>

<code>UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output | grep $</code><code>1</code> <code>| tail -</code><code>1</code> <code>| awk </code><code>'{print $$9}'</code>

<code>UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep $</code><code>1</code> <code>| tail -</code><code>1</code> <code>| awk </code><code>'{print $$12}'</code>

<code>###vmstat Performance status</code>

<code>####check disk status##</code>

<code>UserParameter=check_disk_status,mount | awk </code><code>'{print $NF}'</code><code>|cut -c </code><code>2</code><code>-</code><code>3</code><code>|awk </code><code>'{if($1~/ro/) {print 1}}'</code><code>|wc -l|awk </code><code>'{if($1&lt;=0) {print 0 } else {print 1}}'</code>

<code>######check servers status###</code>

<code>UserParameter=check_ip_exsit[*],nmap -sn $</code><code>1</code> <code>| grep down | wc -l</code>

<code>####mysql</code>

<code>#UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/script/zabbix_low_discovery.sh $</code><code>1</code>

<code>#UserParameter=mysql_stats[*],mysql -h </code><code>127.0</code><code>.</code><code>0.1</code> <code>-P $</code><code>1</code> <code>-uzabbix -phuidong2013 -e </code><code>"show global status"</code><code>|grep </code><code>"\&lt;$2\&gt;"</code><code>|cut  -f2</code>

<code>UserParameter=mysql_stats[*],sudo /usr/local/mysql/bin/mysql --login-path=local -P $</code><code>1</code> <code>-e </code><code>"show global status"</code> <code>|grep </code><code>"\&lt;$2\&gt;"</code> <code>|cut -f2</code>

<code>UserParameter=mysql_stats_slave[*],sudo /usr/local/mysql/bin/mysql --login-path=local -P $</code><code>1</code> <code>-e </code><code>"show slave global status\G"</code> <code>|grep </code><code>"\&lt;$2\&gt;"</code> <code>|awk </code><code>'{if($NF=="Yes"){print 1} else {print 0}}'</code>

<code>#####redis</code>

<code>UserParameter=redis_stats[*],(echo info;sleep </code><code>1</code><code>) | telnet </code><code>192.168</code><code>.</code><code>1.205</code> <code>$</code><code>1</code> <code>2</code><code>&gt;&amp;</code><code>1</code> <code>| grep $</code><code>2</code><code>|cut -d : -f2</code>

<code>#######follow </code><code>is</code> <code>monitor hardware </code>

<code>UserParameter=hardware_battery,omreport chassis batteries|awk </code><code>'/^Status/{if($NF=="Ok") {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_cpu_model,awk -v hardware_cpu_crontol=`sudo omreport  chassis biossetup|awk </code><code>'/C State/{if($NF=="Enabled") {print 0} else {print  1}}'</code><code>` -v hardware_cpu_c1=`sudo omreport chassis biossetup|awk </code><code>'/C1[-|E]/{if($NF=="Enabled") {print 0} else {print 1}}'</code><code>` </code><code>'BEGIN{if(hardware_cpu_crontol==0 &amp;&amp; hardware_cpu_c1==0) {print 0} else {print 1}}'</code>

<code>UserParameter=hardware_fan_health,awk -v hardware_fan_number=`omreport chassis fans|grep -c </code><code>"^Index"</code><code>` -v hardware_fan=`omreport chassis fans|awk </code><code>'/^Status/{if($NF=="Ok") count+=1}END{print count}'</code><code>` </code><code>'BEGIN{if(hardware_fan_number==hardware_fan) {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_memory_health,awk -v hardware_memory=`omreport chassis memory|awk </code><code>'/^Health/{print $NF}'</code><code>` </code><code>'BEGIN{if(hardware_memory=="Ok") {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_nic_health,awk -v hardware_nic_number=`omreport chassis nics |grep -c </code><code>"Interface Name"</code><code>` -v hardware_nic=`omreport chassis nics |awk </code><code>'/^Connection Status/{print $NF}'</code><code>|wc -l` </code><code>'BEGIN{if(hardware_nic_number==hardware_nic) {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_cpu,omreport chassis processors|awk </code><code>'/^Health/{if($NF=="Ok") {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_power_health,awk -v hardware_power_number=`omreport chassis pwrsupplies|grep -c </code><code>"Index"</code><code>` -v hardware_power=`omreport chassis pwrsupplies|awk </code><code>'/^Status/{if($NF=="Ok") count+=1}END{print count}'</code><code>` </code><code>'BEGIN{if(hardware_power_number==hardware_power) {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_temp,omreport chassis temps|awk </code><code>'/^Status/{if($NF=="Ok") {print 1} else {print 0}}'</code><code>|head -n </code><code>1</code>

<code>UserParameter=hardware_physics_health,awk -v hardware_physics_disk_number=`omreport storage pdisk controller=</code><code>0</code><code>|grep-c </code><code>"^ID"</code><code>` -v hardware_physics_disk=`omreport storage pdisk controller=</code><code>0</code><code>|awk </code><code>'/^Status/{if($NF=="Ok") count+=1}END{print count}'</code><code>` </code><code>'BEGIN{if(hardware_physics_disk_number==hardware_physics_disk) {print 1} else {print 0}}'</code>

<code>UserParameter=hardware_virtual_health,awk -v hardware_virtual_disk_number=`omreport storage vdisk controller=</code><code>0</code><code>|grep -c </code><code>"^ID"</code><code>` -v hardware_virtual_disk=`omreport storage vdisk controller=</code><code>0</code><code>|awk </code><code>'/^Status/{if($NF=="Ok") count+=1}END{print count}'</code><code>` </code><code>'BEGIN{if(hardware_virtual_disk_number==hardware_virtual_disk) {print 1} else {print 0}}'</code>

2、用到lld发现脚本

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

<code>[root@dcserver2 script]# vim zabbix_low_discovery.sh</code>

<code>#!/bin/bash</code>

<code>#Fucation:zabbix low-level discovery</code>

<code>memcache() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/[m]emcached/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>))</code>

<code>            </code><code>printf </code><code>'{\n'</code>

<code>            </code><code>printf </code><code>'\t"data":[\n'</code>

<code>               </code><code>for</code> <code>key </code><code>in</code> <code>${!port[@]}</code>

<code>                   </code><code>do</code>

<code>                       </code><code>if</code> <code>[[ </code><code>"${#port[@]}"</code> <code>-gt </code><code>1</code> <code>&amp;&amp; </code><code>"${key}"</code> <code>-ne </code><code>"$((${#port[@]}-1))"</code> <code>]];then</code>

<code>                          </code><code>printf </code><code>'\t {\n'</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                     </code><code>else</code> <code>[[ </code><code>"${key}"</code> <code>-eq </code><code>"((${#port[@]}-1))"</code> <code>]]</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"}\n"</code>

<code>                       </code><code>fi</code>

<code>               </code><code>done</code>

<code>                          </code><code>printf </code><code>'\t ]\n'</code>

<code>                          </code><code>printf </code><code>'}\n'</code>

<code>}</code>

<code>redis() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/[r]edis/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>|grep ^</code><code>7</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"}\n"</code>

<code>node() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/[n]ode/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#NODEPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#NODEPORT}\":\"${port[${key}]}\"}\n"</code>

<code>mysql() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/[m]ysql/ {print $4}'</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"</code>

<code>sshd() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/sshd/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#SSHDPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#SSHDPORT}\":\"${port[${key}]}\"}\n"</code>

<code>mongodb() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/mongo/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MONGODBPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#MONGODBPORT}\":\"${port[${key}]}\"}\n"</code>

<code>partition() {</code>

<code>            </code><code>port=($(grep -E </code><code>"(vd[a-z]$|sd[a-z]$)"</code> <code>/proc/partitions|awk </code><code>'{print $4}'</code><code>))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"}\n"</code>

<code>twemproxy() {</code>

<code>            </code><code>port=($(sudo netstat -tpln | awk -F </code><code>"[ :]+"</code> <code>'/nutcracker/ &amp;&amp; /0.0.0.0/ {print $5}'</code><code>|uniq))</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#TWEMPROXYPORT}\":\"${port[${key}]}\"},\n"</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#TWEMPROXYPORT}\":\"${port[${key}]}\"}\n"</code>

<code>check_ip_exsit() {</code>

<code>            </code><code>ip=($(sudo nmap -sn </code><code>192.168</code><code>.</code><code>1.162</code><code>-</code><code>210</code><code>|grep </code><code>"192.168.1"</code><code>|awk -F </code><code>" "</code> <code>'{print $NF}'</code><code>|awk -F </code><code>"[()]"</code> <code>'{print $2}'</code><code>))</code>

<code>               </code><code>for</code> <code>key </code><code>in</code> <code>${!ip[@]}</code>

<code>                       </code><code>if</code> <code>[[ </code><code>"${#ip[@]}"</code> <code>-gt </code><code>1</code> <code>&amp;&amp; </code><code>"${key}"</code> <code>-ne </code><code>"$((${#ip[@]}-1))"</code> <code>]];then</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#IPNAME}\":\"${ip[${key}]}\"},\n"</code>

<code>                     </code><code>else</code> <code>[[ </code><code>"${key}"</code> <code>-eq </code><code>"((${#ip[@]}-1))"</code> <code>]]</code>

<code>                          </code><code>printf </code><code>"\t\t\t\"{#IPNAME}\":\"${ip[${key}]}\"}\n"</code>

<code>case</code> <code>$</code><code>1</code> <code>in</code>

<code>memcache)</code>

<code>memcache</code>

<code>;;</code>

<code>redis)</code>

<code>redis</code>

<code>node)</code>

<code>node</code>

<code>mysql)</code>

<code>mysql</code>

<code>sshd)</code>

<code>sshd</code>

<code>mongodb)</code>

<code>mongodb</code>

<code>partition)</code>

<code>partition</code>

<code>twemproxy)</code>

<code>twemproxy</code>

<code>check_ip_exsit)</code>

<code>check_ip_exsit</code>

<code>*)</code>

<code>echo </code><code>"Usage:`basename $0` {memcache|redis|node|mysql|sshd|mongodb|partition|twemproxy|check_ip_exsit}"</code>

<code>esac</code>

3、发送邮件脚本

<code>[root@dcserver2 script]# vim zabbix_sendmail</code>

<code>#!/usr/bin/python</code>

<code># -*- coding: utf-</code><code>8</code> <code>-*-</code>

<code>""</code><code>"</code>

<code>Zabbix SMTP Alert script from </code><code>126</code><code>.</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>smtplib</code>

<code>from email.mime.text </code><code>import</code> <code>MIMEText</code>

<code>mail_host=</code><code>"smtp.163.com"</code>

<code>mail_user=</code><code>"******@163.com"</code>

<code>mail_pass=</code><code>"*****"</code>

<code>mail_postfix=</code><code>"pop.163.com"</code>

<code>def send_mail(to_list,sub,content):</code>

<code>    </code><code>''</code><code>'</code>

<code>    </code><code>to_list:sent to who</code>

<code>    </code><code>sub:subject</code>

<code>    </code><code>content:content</code>

<code>    </code><code>send_mail(</code><code>"[email protected]"</code><code>,</code><code>"sub"</code><code>,</code><code>"content"</code><code>)</code>

<code>    </code><code>address=mail_user+</code><code>"&lt;"</code><code>+mail_user+</code><code>"@"</code><code>+mail_postfix+</code><code>"&gt;"</code>

<code>    </code><code>msg = MIMEText(content)</code>

<code>    </code><code>msg[</code><code>'Subject'</code><code>] = sub</code>

<code>    </code><code>msg[</code><code>'From'</code><code>] = address</code>

<code>    </code><code>msg[</code><code>'To'</code><code>] =to_list</code>

<code>    </code><code>try</code><code>:</code>

<code>        </code><code>s = smtplib.SMTP()</code>

<code>        </code><code>s.connect(mail_host)</code>

<code>        </code><code>s.login(mail_user,mail_pass)</code>

<code>        </code><code>s.sendmail(address, to_list, msg.as_string())</code>

<code>        </code><code>s.close()</code>

<code>        </code><code>return</code> <code>True</code>

<code>    </code><code>except Exception, e:</code>

<code>        </code><code>print str(e)</code>

<code>        </code><code>return</code> <code>False</code>

<code>if</code> <code>__name__ == </code><code>'__main__'</code><code>:</code>

<code>        </code><code>send_mail(sys.argv[</code><code>1</code><code>], sys.argv[</code><code>2</code><code>], sys.argv[</code><code>3</code><code>])</code>

本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1697108,如需转载请自行联系原作者