10. zabbix client安装

10.1 linux系统

10.1.1 下载解压zabbix客户端软件

wget http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.linux2_6.i386.tar.gz



10.1.2 新建zabbix组和用户

/usr/sbin/groupadd zabbix
/usr/sbin/useradd -g zabbix zabbix


10.1.3 解压客户端至指定目录

mkdir /usr/local/zabbix
tar zxvf /root/zabbix_agents_2.0.6.linux2_6.i386.tar.gz -C /usr/local/zabbix/


10.1.4 配置软连接

Ø zabbix 命令行操作文件做链接,方便系统可以找得到。

ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/


10.1.5 添加客户端监控端口

vim /etc/services

在末尾追加以下内容:

#zabbix services
zabbix-agent    10050/tcp                       # Zabbix Agent
zabbix-agent    10050/udp                       # Zabbix Agent


10.1.6 修改客户端配置文件

vim /usr/local/zabbix/conf/zabbix_agentd.conf

修改以下几项:

Server=监控服务器IP
Hostname=本机的主机名或IP地址
ServerActive=监控服务器IP

检查配置:

egrep -v '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf

171640967.png

Ø建立配置文件的软连接到/usr/local/etc/目录下。

ln -s /usr/local/zabbix/conf/zabbix_agentd.conf /usr/local/etc/


10.1.7 配置客户端启动脚本

scp 服务器IP:/etc/init.d/zabbix_agentd /etc/init.d/zabbix_agentd
chmod +x /etc/init.d/zabbix_agentd


10.1.8 添加客户端开机启动服务

chkconfig --add zabbix_agentd
chkconfig --level 345 zabbix_agentd on

使用 chkconfig --list 检查一下:

chkconfig --list | grep zabbix


10.1.9 启动zabbix客户端

/etc/init.d/zabbix_agentd start

Ø查看进程,确认zabbix客户端是否启动。

ps -ef | grep zabbix

备注:如果系统为RHEL6.2 64bit,启动client出现如下报错,需安装lib库:

171658601.jpg

yum install -y glibc.i686

或:

yum groupinstall -y "Compatibility libraries"


10.1.10防火墙设置

iptables -A INPUT -p tcp -s 服务器IP -m multiport --dports 10050,10051 -j ACCEPT


10.2 windows系统

10.2.1 下载zabbix客户端软件

http://www.zabbix.com/downloads/2.0.6/zabbix_agents_2.0.6.win.zip

Ø从官方下载zabbix agent后,压缩包里面有2个目录,binconf

Øbinconf放在c:\zabbix目录下。

Øbin目录下有2个目录,一个为win32,另一个是win64。每个目录下应该有3个文件,分别为:zabbix_agentd.exezabbix_get.exezabbix_sender.exe

Øconf目录下有1个文件,zabbix_agentd.win.conf


10.2.2 编辑客户端文件

Ø用文本编辑器修改conf目录下的zabbix_agentd.win.conf文件:

LogFile=c:\zabbix\zabbix_agentd.log                 #客户端日志文件存放路径
Server=                                             #监控服务器IP
Hostname=                                           #本机的主机名或IP地址



10.2.3 安装客户端并启动

Ø进入c:\zabbix\bin\win32目录下,执行如下命令完成客户端的安装:

cd c:\zabbix\bin\win32
zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -i

Ø执行如下命令,启动客户端:

zabbix_agentd.exe -c c:\zabbix\conf\zabbix_ agentd.win.conf -s

Ø参数含义:

-c    指定配置文件所在路径

-i     安装客户端

-s    启动客户端

-x    停止客户端

-d    卸载客户端

Ø安装后会在系统服务里添加一个zabbix_agentd服务,会自动开机运行。

175243294.png

10.2.4 使用批处理操作客户端

Ø新建windows批处理脚本zabbix_agentd.bat放在c:\zabbix目录下用来对客户端服务器上的zabbix_agentd进行安装、卸载、启动、重启、停止。脚本内容如下:

@echo off
echo ************************************
echo ***** Zabbix Agentd Operation ******
echo ************************************
echo **  1.  start      Zabbix Agentd  **
echo **  2.  stop       Zabbix Agentd  **
echo **  3.  restart    Zabbix Agentd  **
echo **  4.  install    Zabbix Agentd  **
echo **  5.  uninstall  Zabbix Agentd  **
echo **  6.  exit       Zabbix Agentd  **
echo ************************************
set /p tmp=请输入有效数字:
if "%tmp%"=="1" goto start
if "%tmp%"=="2" goto stop
if "%tmp%"=="3" goto restart
if "%tmp%"=="4" goto install
if "%tmp%"=="5" goto uninstall
if "%tmp%"=="6" goto end
:start
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -s
goto end
:stop
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -x
goto end
:restart
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -x
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -s
goto end
:install
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -i
echo "install is … ok"
:uninstall
c:\zabbix\bin\win32\zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf -d
goto end
:end
exit


10.2.5 防火墙设置

Ø防火墙-->例外-->添加程序-->添加zabbix_agentd.exe

171724310.png


11. zabbix server配置简介

Ø通过本地浏览器访问http://ServerIP/zabbix来开始配置和使用zabbix

Ø使用zabbix进行监控之前,要理解zabbix监控的流程。一次完整的监控流程可以简单描述为:

Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers(触发器)->Actions(告警动作)->Medias(告警方式)->User Groups(用户组)->Users(用户)

11.1 Hosts

ØHostzabbix监控的基本载体,所有的监控项都是基于host的。

Ø通过Configuration->Hosts->Create Host来创建监控设备

175359254.png

175359869.pngØ按提示填入NameGroupsIP ,其他选项默认即可,Link Templates 处选择一个模板,save即可成功添加设备。(注:如果host上没安装agent,添加后的状态会是unmonitor,会采集不到值,zabbix自带大量的设备监控模板,我们添加主机时通过link到这些模板,就可以快速添加主机的监控项和告警触发条件。)

Ø一类的hosts可以归属到同一个Host Group,便于分类管理同一类设备,在Configuration->Host Group->Create Host Group 可以添加设备组。

Ø下表对各项参数进行详解:

参数

描述

主机名

输入一个不重复的主机名。只允许大小写字母、数字、标点符号和下线。
注意:该名称和其所对应的客户端配置文件zabbix_agentd.conf中“Hostname”这一项输入的值是一样的。在主机存活检查时需要这个名字。

访问名

如果设置该名字,那么它将出现在主机列表、地图等地方。这个属性需要UTF-8支持。

群组

选择主机所属的群组。一个主机必须属于至少一个主机组。

新主机组

一个新的群组将被创建然后自动链接到该主机上。如果空的话,该项将忽略。

接口协议

一个主机支持几种类型的主机接口协议类型:Agent,SNMP,JMX  and IPMI,如果想增加一个新的接口协议,点击Add然后输入IP/DNS,连接项,端口等信息。

ip地址

要监控主机的ip地址。(可选项)  

DNS名称

要监控主机DNS能够解析的名称。(可选项)

链接

点击各自对应名称的按钮将反馈给 zabbix服务器用哪个名称(IP或 DNS)从客户端获得数据。

IP

连接要监控主机的IP地址(推荐)

DNS

链接要监控主机能够正常解析的DNS名称

端口

TCP协议的端口,zabbix客户端使用的默认值是10050

通过代理

主机可以通过zabbix服务器或者zabbix的一个代理来监控。

状态

Monitored

主机是活动的,监控就绪

Not monitored

主机已停止,因此没被监控


11.2 Items

ØItem是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。

ØConfiguration->Hosts界面,我们能看到每个host所包含的items总数,点击对应主机的items项,可以看到具体的每个item信息,这些items可以引用自templates,也可以自己创建。

175440424.pngØ通过点击具体item名字可以修改已有监控项的属性,点击Satus的链接可以禁用/启用这个监控项。(备注:我们可以通过新建一个template,在template中禁用掉所有不需要用到的items,然后把同一类hosts link to这个template,就不用一台台主机去更改items

Ø新增item可以通过点击右上角的create item来创建。

175513950.pngØ按提示逐项填入相关信息即可,其中keyzabbix已经自带的取值方法,Application类似于host groups,是item的组。(item key也可以自定义,后面会讲到如何自定义监控项)

Øzabbix自带非常多的监控采集项及方法,基本能满足当前所有的监控功能,这些都包含在item item key中了,更多的typekey的解释请参考官方文档:

https://www.zabbix.com/documentation/2.0/manual/config/items


11.3 Triggers

ØTrigger是触发器,当Items采集值满足triggers的触发条件时,就会产生actions

Ø每一个trigger必须对应一个item,但一个item可以对应多个trigger

Ø同样,通过点击Configuration->Hosts->Triggers中某个trigger的名字,可以修改trigger的属性。(注意:引用自templatetrigger触发值是不能单独修改的,必须在template中修改,或是复制一个同样的trigger再修改,然后禁用掉之前的)

Ø新增trigger可以通过点击右上角的createtrigger来创建

175553405.png

ØExpression中选择对应的item、触发方式及触发值,Severity是告警级别,根据trigger的严重性来选择。

&#216;zabbix提供多种trigger触发方式供选择,常用的我们可以选择last value </>/=/#/N(最近一次采集值),或是选择maximal value forperiod of time (一段时间内的最大值),等等。可以根据实际需要来设定触发方式。更多的解释请参考官方文档:

https://www.zabbix.com/documentation/2.0/manual/config/triggers


11.4 Actions

&#216;Action是告警动作,当触发器条件被满足时,就会执行指定的action

&#216;通过Configuration->Actions->Create Action来创建Action

175622402.png&#216;SubjectMessage:告警标题和内容,此处可引用zabbix的宏变量;例如{{HOSTNAME}:{TRIGGER.KEY}.last(0)}表示最后一次采集值,更多宏变量请参考官方文档:

https://www.zabbix.com/documentation/2.0/manual/config/macros/usermacros

&#216;Recovery Message:告警恢复信息,不勾选系统会用默认的,勾选后自定义。更多的解释请参考官方文档:

https://www.zabbix.com/documentation/2.0/manual/config/notifications/action


11.5 Medias

&#216;Media,即告警方式,zabbix可以提供四类MediaEmail/SMS/Jabber/Script,通过Administrator->Media Type来修改或新增告警方式

&#216;Email方式最常用的,填入相关的SMTP信息,即可通过邮件方式发送告警。

175704143.png&#216;其中type有以下几种方式:

171805557.jpg

Email      方式用邮件。

Script     方式可以通过自己编写程序或脚本的方式发送告警信息。

SMS       方式要在server主机上接入短信modem

Jabber   方式是一种linux下的即时通讯工具,通过Jabber发送即时消息。

官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/notifications/media


11.6 Users

&#216;Administrator->Users 可以添加用户和用户组。

&#216;通过User Group可以限制用户的权限,zabbix自带的用户组的权限限制基本能满足我们的要求。

&#216;创建用户时可以根据用户的不同作用划分到不同的组,media中填入告警接受地址及告警接受时间等信息。

175819652.png

175820408.png

175820347.png

&#216;Type:报警类型。

&#216;Send to:收件人地址,可以增加多个。

175856488.png

&#216;用户权限的控制。

官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/users_and_usergroups


11.7 WEB Monitorings

&#216;Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间,还支持把一组连续的web动作作为一个整体来监控。

&#216;Web monitoring还有更多强大的功能,可参考官方文档:

https://www.zabbix.com/documentation/2.0/manual/web_monitoring


11.8 Graphs

&#216;zabbixGraphs功能很强大,可以为每一个item绘制图表,也可以把多个items绘制在一张图表内。

&#216;通过configuration->hosts选择要绘制图表的host,点击graphscreate graphs即可创建图表。

175932709.png&#216;Graph type:图表样式,有线状、柱状、饼状。

&#216;还可以自定义图表大小,及Y轴最大最小值。

&#216;通过add items可以添加在同一个图表中展示的多个items(备注:注意每个item的颜色及取值范围,范围相差太大图表会显示不全)。

&#216;配置好的graphsmonitoring->graphs中查看。

&#216;monitoring->last data下能快速查看每个host的每个itemgraph


11.9 Screens

&#216;Screen将多种信息放在一起展示,便于集中展示某个host的多个信息,或是比较多个hosts的同一种信息,这些信息可以为graphsmapsserver infos等等,几乎涵盖zabbix所有的监控信息。

&#216;通过configuration->screen->creat screen来创建,创建时定义screen的行数和列数,点击对应单元格内的change,添加相应的信息。

180011837.png

&#216;通过monitoring-screen,可以查看之前配置好的信息。


11.10 Maps

&#216;这里可以添加关于主机的拓扑图:configration-maps,在右上角可以create maps或者import map

&#216;这里我们点击crate maps save保存。

180036804.png

&#216;然后编辑保存好的maps

180102831.png

上面加号和减号可以增加主机 link说明主机的连接情况,可以进行自定义。

&#216;官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/visualisation/maps


11.11 自定义监控

&#216;对于zabbix功能上无法实现的监控,可以通过自己编写程序或脚本来辅助完成,并将脚本的结果通过agent递交给zabbix server统一管理,一样可以绘制graph 报表等。

&#216;UserParameters的定义方法,请参考:

https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters


12. zabbix server配置示例

&#216;本节中如不指明是client端配置,均指在server中配置。

12.1 linux系统

12.1.1 创建监控主机

&#216;Configuration-->Hosts-->Create host

180218268.png

&#216;Host name --> Groups --> Agent interfaces

180231563.png

&#216;Templates --> Add

180245839.png

&#216;系统自定义了很多监控模板,根据监控主机的系统以及监控的类别来选择监控模板。当前监控的是linux系统,所以勾选Template OS Linux --> Select --> Save

180258630.png

&#216;监控状态。

180309185.png

12.1.2创建内存监控图形

&#216;Template OS Linux模板默认没有内存监控图形,需自行添加。

&#216;Configuration-->Templates-->Items

180444632.png

&#216;Create item

180457983.png180528583.png

180547956.png

&#216;Graphs-->Create graphs

180601514.png

180619480.png


12.1.3创建磁盘读/写操作统计

&#216;Create item

180705509.png

180725966.png

注意:Keyvfs.dev.read[<device>,<type>,<mode>]

device - diskdevice (default is "all")

mode - avg1(default)

对指定磁盘统计的写法为:vfs.dev.read[/dev/sda, operations]

官方参考文档:

https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent

&#216;Graphs-->Create graphs

180841407.png

180853602.png


12.1.4创建WEB Monitorings

&#216;示例:以监控登录zabbixweb程序为例,来展示如何使用web monitoring

lConfiguration->web->Create Scenario 创建一个Scenario(注意:必须选择host后才能创建scenariozabbix的所有items都必须创建在hosts)

180938206.png

180951729.png

2Application选择这个scenario所在的application

2Namescenario的名字

2Authentication鉴权

2Update interval (in sec)监控频率,s为单位

2Agent选择要使用的浏览器客户端,可能同样的web程序对不同的客户端展示的内容会不一样

2Variables变量定义,这里自定义的变量可在后续的steps中使用,此例定义了用户名和密码的变量

2Active是否激活,默认为active

lStepsweb程序的各个步骤,选择add新增一个Loginstep,来模拟用户登录,传递用户名和密码给index.php页面。

181033340.png

181046828.png

2URL监控的web页面(注意:必须是全路径带页面名)

2Post传递给页面的参数,多个参数之间用&连接,此处可引用前面定义的变量

2Timeout超时时间

2Required string页面中能匹配到字符,匹配不到即认为错误

2Required status codes页面返回码

l添加完step后,在Monitoring->web页面即能看到监控的状态和图示。

171834378.png

&#216;创建完scenario后,zabbix server会自动创建相关的items,所以只需为这些items添加triggers即可让web scenario出错时产生告警。

&#216;Configuration->hosts->点击scenario所在的host条目的trigger,直接create trigger,在select items的时候就可以看到系统自动创建的items注意:自动创建的itemshostitems列表中无法直接看到,需要在创建trigger时选择items时才能看到)

181117843.png


12.1.5创建自定义监控

&#216;示例:统计80端口连接状态数量。

lClient配置:

egrep -v '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.8.73
ServerActive=127.0.0.1
Hostname=192.168.8.74
UserParameter=port_80_time_wait,/usr/local/zabbix/conf/scripts/port_80_time_wait.sh
UserParameter=port_80_established,/usr/local/zabbix/conf/scripts/port_80_established.sh
UserParameter=port_80_syn_recv,/usr/local/zabbix/conf/scripts/port_80_syn_recv.sh
UserParameter=port_80_close_wait,/usr/local/zabbix/conf/scripts/port_80_close_wait.sh

备注:经测试,2.0.6版本client配置文件中无需将UnsafeUserParameters=0设置为1

ll /usr/local/zabbix/conf/scripts/

171848162.png

注意:配置文件中的脚本路径要用绝对路径,脚本要有可执行权限。脚本的返回值要尽量简单,方便设置报警值。

cat port_80_established.sh
#!/bin/bash
netstat -nt |awk '{print $4,$6}'|grep ':80 ESTABLISHED'|wc –l
cat port_80_syn_recv.sh
#!/bin/bash
netstat -nt |awk '{print $4,$6}'|grep ':80 SYN_RECV'|wc –l
cat port_80_time_wait.sh
#!/bin/bash
netstat -nt |awk '{print $4,$6}'|grep ':80 TIME_WAIT'|wc –l
cat port_80_close_wait.sh
#!/bin/bash
netstat -nt |awk '{print $4,$6}'|grep ':80CLOSE_WAIT'|wc -l


lServer配置:

2Templates-->Items设置:

203444557.png203544891.png

203628353.png

2Templates-->Graphs设置:

203735690.png&#216;Monitoring --> Graphs验证结果:

lip192.168.8.74web server发送73个请求

ab -n 73 http://192.168.8.74/index.html

203817392.png

l备注:Number of port 80syn recv项创建trigger能有效的引起管理员的注意,提早预防SYN***。


12.1.6创建触发器

&#216;示例:以监控web server首页响应速度,来展示如何使用trigger

lConfiguration-->Host--> Triggers-->Create trigger

203843423.png

lName -->Severity-->Add

203949298.pnglSelect --> Function --> Last of (T) --> N

204053534.png

2Item选择trigger对应的item

2Function函数,本例中选择“最后一次T的检测值大于N

2Last of (T)T对应的值,秒或计数

2NN对应的值

结合本例的结果既是web server首页的响应速度如果大于1秒就触发trigger

&#216;Monitoring --> Web页面即能看到监控的状态和触发器。

171905588.png


12.1.7创建邮件报警(企业邮箱)

&#216;使用企业邮箱的优势在于不需要设置用户名、密码登录,就能借助sendmail将邮件发出。因此不会泄露邮箱的密码,安全性较高。

&#216;经测试确认,263企业邮箱和新浪vip邮箱支持以下示例中的配置方式进行发送告警信息。其它邮箱因时间和条件因素无法一一测试。

&#216;在配置zabbixEmail报警之前,需要将sendmail使用的域名进行相应的修改,系统默认为localhost.localdomain,其实不改也行,不过有些pop3服务器会过滤掉来自localhost.localdomain的邮件,导致邮件不能正常查收,所以,最好改一下 hostname,确保邮件发送的成功率。

cat /etc/sysconfig/network

171916626.png

cat /etc/hosts

171928535.png

cat /etc/mail/access

171939144.png

cat /etc/mail/local-host-names

171952655.png

知识点:hostname改为domain.com的命名方式可提高sendmail启动速度,相关内容可以去了解“解决sendmail启动慢”。

&#216;修改完成后,启动sendmail服务,通过telnet命令,测试是否已生效。

/etc/init.d/sendmail start
chkconfig sendmail on
telnet 127.0.0.1 25

172004166.png

从以上结果可以发现,localhost.localdomain已经变成了server01这个域名,表示修改成功,接下来就可以在zabbix的管理页面上进行Email报警设置了。

&#216;administration --> Media types --> Email

204202161.png

204233384.png

&#216;administration --> Users --> Admin

204300327.png本示例以管理员用户作为收件人。

204343872.png&#216;Media --> Add

204442413.png

172015124.png

2Type告警类型

2Send to接收告警邮件的邮箱地址

2When active告警时间,默认为7×24小时。

2Use if severity选择告警级别

配置后点击Save保存设置。

&#216;Configuration --> Actions --> Create action

204817615.png

204951577.png2Name告警action的名称

2Default operation stepduration告警持续时间,默认为3600秒,最少可设置为60

2Default subject邮件标题,默认为宏变量

2Default message邮件内容,默认为宏变量

2Recovery message告警恢复信息,不勾选系统会用默认的,勾选后使用以下自定义内容

2Recovery subject告警恢复后的邮件标题,默认为宏变量

2Recovery message告警恢复后的邮件内容,默认为宏变量

2Enabled勾选为启用,不勾为禁用

205047660.png

2Type of calculation计算类型,有andorand\or

2Conditions触发条件

2New condition创建触发条件

触发条件可以是多个组合,计算类型代表了各个触发条件之间的关系。如此示例中,必须满足被监控主机“不在维护状态”和“Trigger”的值等于“PROBLEM”,才满足触发条件。

205118461.png

2Step步骤,使用默认值即可

2Operation type操作类型,下拉选项为sendmessage(发送消息)或remote command(远程命令)。

2Send to User groups将邮件发送到哪个组

2Send to Users将邮件发送到哪个用户

2Send only to发送的方式,下拉选项对应Mediatypes中的各项

2Update更新

注意:Update后在Save,否则将不保存Operations中的各项配置。

&#216;Monitoring --> Events

205154523.png

验证告警已成功发送。

&#216;从邮件中再次验证,收到告警邮件。

172026877.png


12.1.8创建邮件报警(个人邮箱)

&#216;在上述环境没有满足的情况下,也可以使用个人邮箱进行邮件告警。本示例使用139邮箱,其优势在于收到邮件的同时手机也会收到邮件。

12.1.8.1安装msmtp

&#216;在配置zabbixEmail报警之前,需要先安装msmtp




wget http://nchc.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.17.tar.bz2
tar xvf msmtp-1.4.17.tar.bz2
cd msmtp-1.4.17
./configure --prefix=/usr/local/msmtp
make && make install
cd /usr/local/msmtp/

新建配置文件目录和配置文件:

mkdir etc
cd etc
vim msmtprc

添加以下内容:

account default
host smtp.163.com
port 25
from zabbix_test@163.com
auth login
user zabbix_test
password xxxxxx
logfile /var/log/msmtp.log

2hostsmtp服务器

2portsmtp服务器端口

2from发件人邮件地址

2user登录邮箱的用户名

2password邮箱密码,这里是明文的,如果觉得不安全可以把文件改为600属性

2logfile日志文件

&#216;测试是否可以发出邮件:

/usr/local/msmtp/bin/msmtp 13916594658@139.com


随便输入一些内容用ctrl+d结束,如果没有收到邮件或提示错误可查看日志文件。


12.1.8.2 安装mutt
yum install mutt

修改Muttrc配置文件:

vim /etc/Muttrc

修改以下内容:

set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="zabbix_test@163.com"
set editor="vim"

2set sendmailmsmtp命令路径

&#216;测试是否可以发出邮件

echo "testmail" | mutt -s "test" -a /etc/hosts 13916594658@139.com


2testmail邮件内容

2-s邮件标题

2-a添加附件,多个附件就用多个-a添加。


12.1.8.3 配置zabbix server

&#216;官方参考文档:https://www.zabbix.com/documentation/2.0/manual/config/notifications/media/script

&#216;修改zabbix_server.conf配置文件。

vim /usr/local/zabbix/etc/zabbix_server.conf

修改以下内容:

AlertScriptsPath=/usr/local/zabbix/alertscripts

注意:脚本存放在什么位置路径就写什么位置。

&#216;新建脚本目录。

mkdir /usr/local/zabbix/alertscripts

&#216;添加脚本内容:

vim /usr/local/zabbix/alertscripts/alert

添加以下内容:

#!/bin/bash
to=$1
subject=$2
body=$3
cat <<EOF|mutt -s "$subject" "$to"
$body
EOF

&#216;赋予脚本可执行权限。

chmod +x /usr/local/zabbix/alertscripts/alert

&#216;Administration --> Media types --> Create media type

205307503.png

205318273.png

2Description名称描述,可自定义

2Type类型,此处选择Script

2Script name脚本名称,注意:此处必须和刚才新建的脚本同名

&#216;administration --> Users --> Admin

205339890.png

本示例以管理员用户作为收件人。

205404774.png

&#216;Media --> Add

205440513.png

172042306.png

2Type告警类型,注意:此处选择刚才新建的描述项

2Send to接收告警邮件的邮箱地址,备注:可以是其它收件邮箱也或多个收件邮箱

2When active告警时间,默认为7×24小时。

2Use if severity选择告警级别

配置后点击Save保存设置。

&#216;Actions配置部分可参考6.1.7节的Configuration --> Actions --> Create action

&#216;告警验证:动作一,在zabbix clientserver02服务器中关闭http服务。查看Monitoring --> Events

205518365.png

收到的邮件内容:

205545897.png

&#216;恢复验证:动作二,在zabbix clientserver02服务器中开启http服务。查看Monitoring --> Events

205613246.png

收到的邮件内容:

205637247.png


12.1.9创建飞信报警

&#216;下载fention包,解压后包括主程序fetion,库文件libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4

mv libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4 /usr/lib
chmod a+x fetion

&#216;开启图形界面,新版的飞信需要验证才能登录。

init 5

&#216;注意:第一次发送会在当前目录下会生成一个13916594658.jpg的图形验证码,将验证码输入,回车即可成功发送飞信,发送成功界面如下:

172059597.png

&#216;zabbix server配置部分可参考6.1.8.3节,其中添加脚本内容如下:

#!/bin/bash
/usr/local/fetion --mobile 13916594658 --pwd XXXXXX --to=$1 --msg-tpye=0 --msg-utf8="$2, $3"

&#216;官方声明:

(机器人主程序经常更新,而支持库不会更新)
注意:linux用户,请不要把支持库中的 lib* 复制到 /usr/lib 下,因为发行版本不同,可能会覆盖您机器中的核心库,导致严重系统问题。您可以把库解压到主程序的相同目录,然后以LD_LIBRARY_PATH=. ./fetion 来运行)

>>举例<<
linux下,请使用如下命令:
LD_LIBRARY_PATH=. ./fetion --mobile=13711123456 --pwd=mypwd --to=137xxxxxxxx--msg-utf8=测试
LD_LIBRARY_PATH=. ./fetion --sid=6630321 --pwd=mypwd --to=137xxxxxxxx--msg-utf8=测试
LD_LIBRARY_PATH=. ./fetion --config=sample.conf --index=1 --to=137xxxxxxxx--msg-utf8=测试

官方文档:http://bbs.it-adv.net/viewthread.php?tid=1081


12.1.10创建自动发现

&#216;需求:

现在有大量url需要监控,形式如http://lan2003.blog.51cto.com,要求url状态不为200即报警。

&#216;需求分析:

大量的url,且url经常变化,使用的监控用是zabbix。如果手动添加模板,会造成大量重复工作,造成人力财力的浪费,造成休息时间的浪费,得不尝失。

&#216;解决方案:

zabbixdiscovery功能,利用此功能,即可轻松解决此问题。

lClient配置:

egrep -v '^$|^#' /usr/local/zabbix/conf/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
EnableRemoteCommands=1
Server=192.168.8.73
ServerActive=127.0.0.1
Hostname=192.168.8.244
Include=/usr/local/zabbix/conf/zabbix_agentd.conf.d/
UnsafeUserParameters=1

2EnableRemoteCommands允许远程命令,0为不允许,1为允许。默认0

2Include配置文件路径。默认的路径为/usr/local/etc/

2UnsafeUserParameters允许自定义key0为不允许,1为允许。默认0

1)编写配置文件:

vi /usr/local/zabbix/conf/zabbix_agentd.conf.d/web_site_discovery.conf
UserParameter=web.site.discovery,/usr/local/zabbix/conf/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/usr/local/zabbix/conf/scripts/web_site_code_status web_site_code $1

2)编写loaclhost中待监控的url

vi /usr/local/zabbix/conf/scripts/WEB.txt
192.168.8.244:8080
192.168.8.244:8080/mesa/
www.baidu.com

备注:本例中的url只是demo,生产环境中请按实际情况增减url

3)编写自动发现脚本:

vi /usr/local/zabbix/conf/scripts/web_site_code_status
#!/bin/bash
# function:monitor tcp connect status from zabbix
# License: GPL
# mail:78737454@qq.com
# version:1.0 date:2013-02-04
source /etc/bashrc >/dev/null 2>&1
source /etc/profile >/dev/null 2>&1
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/
WEB_SITE_discovery() {
WEB_SITE=($(grep -v "^#" /usr/local/zabbix/conf/scripts/WEB.txt))
        printf '{\n'
        printf '\t"data":[\n'
    for((i=0;i<${#WEB_SITE[@]};++i))
    {
        num=$(echo $((${#WEB_SITE[@]}-1)))
        if [ "$i" != ${num} ]; then
                printf "\t\t{ \n"
                printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n"
        else
                printf  "\t\t{ \n"
                printf  "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n"
        fi
    }
}
web_site_code() {
/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1
}
case "$1" in
web_site_discovery)
    WEB_SITE_discovery
    ;;
web_site_code)
    web_site_code $2
    ;;
*)
    echo "Usage:$0 {web_site_discovery|web_site_code [URL]}"
    ;;
esac

备注:WEB.txt的存放路径,可自定义。

注意:以上各项配置完后必须重启zabbix_agentd

/etc/init.d/zabbix_agentd restart

4)Server端测试验证结果:

zabbix_get -s 192.168.8.244 -p 10050 -k "web.site.discovery"

205749667.png

zabbix_get -s 192.168.8.244 -p 10050 -k "web.site.code[192.168.8.244:8080]"

205837703.png

此时返回状态为200

至此,脚本,客户端配置OK

lServer配置:

Configuration--> Host

172119782.jpg

Create application

172130778.jpg

Name

205912477.png

Discovery

172144685.jpg

Create discoveryrule

172156945.jpg

205940277.png

Item prototypes

210018395.png

Trigger prototypes:设置3个报警级别。

210043270.png

Graph prototypes

210105272.png

Graphs

210129921.png

利用以上方法,哪怕是1000url监控,也是分分钟的事情。

总结:官方帮助是最好的利器。

210152236.png

参考文献:http://itnihao.blog.51cto.com/1741976/1129725

官方参考文档:

https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery


12.1.11特殊项目

&#216;内存使用率计算示例:

172208384.png

&#216;网卡流量合计示例:

172224846.png


12.2 windows系统

12.2.1 创建监控主机

&#216;Configuration-->Host groups-->Create host group

210241932.png

&#216;Configuration-->Hosts-->Create host

210304819.png

&#216;Host name --> Groups --> Agent interfaces

210324432.png

&#216;Templates --> Add

210345612.png

&#216;系统自定义了很多监控模板,根据监控主机的系统以及监控的类别来选择监控模板。当前监控的是linux系统,所以勾选Template OS Windows --> Select --> Save

210409394.png


12.2.2创建内存监控图形

&#216;Template OS Windows模板默认没有内存监控图形,需自行添加。

&#216;Configuration-->Templates

210436943.png

&#216;Template OS Windows --> Graphs

210512769.png

&#216;Create graph

210543788.png

&#216;Name -->Y axis MIN value --> Add

210608124.png

&#216;Select

210634295.png

&#216;Save

210716648.png

&#216;验证结果:Monitoring --> Graphs

210736199.png


12.2.3 Windows performance counters

Overview

You can effectively monitor Windows performance counters using the perf_counter[]key.

For example:

perf_counter["\Processor(0)\Interrupts/sec"]

or

perf_counter["\Processor(0)\Interrupts/sec", 10]

For more information on using this key, see WIN32-specificitem keys.

In order to get a full list of performance counters available formonitoring, you may run:

typeperf -qx

Numeric representation

As the naming of performance counters may differ on differentWindows servers, depending on local settings, it introduces a certain problemwhen creating a template for monitoring several Windows machines havingdifferent locales.

At the same time every performance counter can also be referred toby its numeric form, which is unique and exactly the same regardless oflanguage settings, so you might use the numeric representation instead ofstrings.

To find out the numeric equivalents, run regedit, then find HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib\009.

The registry entry contains information like this:

1

1847

2

System

4

Memory

6

% Processor Time

10

File Read Operations/sec

12

File Write Operations/sec

14

File Control Operations/sec

16

File Read Bytes/sec

18

File Write Bytes/sec

....

Here you can find the corresponding numbers for each string part ofthe performance counter, like in '\System\% Processor Time':

System -> 2

% Processor Time -> 6

Then you can use these numbers to represent the path in numbers:

\2\6

User parameters

You can deploy some user parameters for themonitoring of Windows performance counters.

For example, you can add these to the Zabbix agent configurationfile:

 PerfCounter=UserPerfCounter1,"\Memory\Page Reads/sec",30

  or

  PerfCounter=UserPerfCounter2,"\4\24",30

With such parameters in place, you can then simply use UserPerfCounter1or UserPerfCounter2 as the keys for creating the respective items.

Remember to restart Zabbix agent after making changes to theconfiguration file.


官方参考文档:

https://www.zabbix.com/documentation/2.0/manual/config/items/perfcounters


Demo

NameCPU utilization

Keyperf_counter["\Processor(_Total)\% Processor Time"]

210817721.png


13. 后记

&#216;感谢新鸟与老鸟阅读此手册,个中的不足或错误之处还望不吝赐教。

&#216;手册中的参考文献:

üzabbix中文文档

http://www.linuxmr.com/zabbix2/

üphp.ini中的时区设置date.timezone= PRC

http://demon.tw/software/php-date-timezone.html

üHeartbeat3.x应用全攻略之:概念组成及工作原理

http://ixdba.blog.51cto.com/2895551/745228

ülinux-ha heartbeat 搭建

http://space.itpub.net/133735/viewspace-731951

üCoroSync/Pacemaker on Centos 6

http://snozberry.org/blog/2012/05/02/corosync-slash-pacemaker-on-centos-6/

üHeartbeat3.x应用全攻略之:安装、配置、维护

http://ixdba.blog.51cto.com/2895551/746271

ü自动化运维之监控篇---利用zabbix自动发现功能实现批量web url监控

http://itnihao.blog.51cto.com/1741976/1129725

&#216;最好的参考手册首选官方的帮助文档:

https://www.zabbix.com/documentation/doku.php

&#216;本手册以zabbix为主,更多heartbeatpacemakercorosynccman内容请参考官方网站:

üLinux-HA的官方网站

http://www.linux-ha.org

http://hg.linux-ha.org

üPacemaker的官方网站

http://clusterlabs.org/

&#216;因电信项目要求所有应用不得存在单点隐患,故在原有手册的基础上增添了冗余,整版完成历时二十六天,主要验证适用于此次项目监控部署方案以及脚本安装和卸载的准确性。

&#216;通过百度搜索cman pacemaker以及zabbix高可用等字样没有相关资源,貌似还没有人撰写这部分?希望本手册中的内容能为后者带来帮助。

&#216;遗憾:

1)RHEL6.2 源码安装无法启动heartbeatyum安装的heartbeat3.0.4无法启动crmharesources配置文件只能启动lib无法监控应用进程是否存活,而使用crm启动ocf才能有效的监控进程,达到真正HA的目的。(V1.0 & V1.1

备注:在撰写此手册V1.2时已经可以实现heartbeat3.0.4启动crm,只是pacemaker1.1.8移除了crm,不清楚是红帽介入的关系还是crm针对1.1.8版本有bug尚未解决。参考各方文献时偶然看到国外非官方消息称crm会在RHEL6.4版本以后回归,希望如此。

2)第二个困扰我很久的问题就是“zabbix代理(被动式)”的访问client后,网络数据包无法从vip地址返回,通过配置防火墙转发也无法实现。当然了,改成主动式后就没问题了。附个图更好理解:

222137388.png

       20130625凌晨50分终于解决了此问题:

       开启路由转发:

       

echo"1" > /proc/sys/net/ipv4/ip_forward

       添加防火墙策略:

       

iptables-t nat -A POSTROUTING -s 192.168.8.73 -p tcp --dport 10050 -j SNAT --to192.168.8.89

        备注:当源地址192.168.8.73对目标client10050端口发起请求时进行ip的源地址转换。

&#216;其它:

ü运用lvs+heartbeat+pacemaker+drbd可以实现mysql的读写分离和zabbix server的负载均衡,适用于更大的生成环境。因本次项目被监控设备较少,所以只作为引申。

&#216;作者联系方式:78737454@qq.com


因篇幅关系,前篇的链接为:

http://lan2003.blog.51cto.com/blog/252098/1221149

zabbix 安装使用手册(HA)-1

全文下载地址:http://down.51cto.com/data/834358