zabbix企业级部署
1.本案例环境
本案例环境如表 2-1 所示。
2.案例拓补
6. 案例需求
下面是本案例的需求:
(1) Zabbix 设置监控系统自动发现。
(2) 获取远程 key。 (3) 设置 Zabbix 邮件报警。
(4) 实现监控系统自动注册。
(5) 设置 Zabbix 监控主被动模式。
7. 案例实现思路
下面是本案例实现思路:
(1) 设置自动发现监控主机。
(2) Zabbix 获取远程 key。 (3) 部署邮件报警。
(4) 部署 Zabbix 自动注册。
(5) 更改 Zabbix 主被动模式。
Zabbix 监控系统自动发现
8. 客户机安装Zabbix Agent
yum -y install zabbix-agetn
编辑zabbix Agent配置文件
vim /etc/zabbix/zabbix_agend.conf
Server=192.168.1.31
ServerActive=192.168.1.31
##Agent 本地的名称,此名称需要与 server 端的 Web 页面上的主机名称一致,名称自定义
Hostname=Zabbix Agent
启动zabbix Agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
创建自动发现规则
登录 Zabbix 服务器 Web 页面,选择配置→自动发现,点击创建发现规则后,填写自动发现规则,如图1和图2所示。
注:因为有二次窗口操作图1与图2为同一个页面。
3. 创建自动发现动作
选择配置→动作→事件源选择“自动发现”,点击“创建动作”按钮,如下图所示
在下图界面,添加动作名称,然后在“新的触发条件”一项,参照图中所示选择“自动发现状态”。
然后选择操作。在操作模块选择“新的”,选择具体的操作类型:添加主机、添加到主机群 组、与模板关联,最后选择添加,如下图所示。
4. 验证
点击“监测中”选项,再点击“自动发现”界面,可以看到已经发现的设备,如下图所示
点击“配置”选项,再点击“主机”界面。可以看到 Zabbix 已经按照模板对发现的主机执行监控,如下图所示
在下图中,主机名称显示为“192.168.1.32”,可以点击“192.168.1.32”后在弹出的界面中,修改为“agent1”,如下图所示。
5. 监控
在生产环境中,可以根据服务器所需监控类型添加模板,如 MySQL 服务,可自动添加监控
获取远程 KEY(监控项)
1.安装 Zabbix_get
Zabbix 没有自带此命令,需要在 Zabbix Server 上自行安装。首先下载,再执行安装,执行命令如下所示。
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpm
rpm -ivh zabbix-get-3.2.1-1.el7.x86_64.rpm
2.Zabbix_get 参数说明
输入 zabbix_get -h 命令可以查阅它的参数说明。
zabbix_get -h
3.Zabbix_get 获取 Agent 数据
(1) Zabbix_get 主要根据 key 值来获取客户端信息。例如:获取 CPU 核数。
zabbix_get -s 192.168.1.32 -k system.cpu.num
获取agent系统信息
zabbix_get -s 192.168.1.32 -k system.uname
2)Zabbix 常用 key 值
- 监控端口的 key 值: net.tcp.port[,port_number]
例如:监控 22 端口 zabbix_get -s 192.168.9.247 -k net.tcp.port[,22],如 22 存在,返回 1;不存在返回 0。 - 监控进程 key 值:proc.num[process_name]
例如:监控 sshd 进程 zabbix_get -s 192.168.9.247 -k proc.num[sshd] ,如果进程存在,则返回所有 sshd 进程数量;不存在则返回 0。 - 查看磁盘容量的 key 值:以下四种语法格式:
vfs.fs.size[/,pfree]:获取/领域的剩余空间率。
vfs.fs.size[/,free]:获取/领域的剩余空间。对应的单位就是 B(这里的意思是 Byte)。
vfs.fs.size[/,pused]:获取/领域的使用空间率。
vfs.fs.size[/,used]:获取/领域的使用空间
例如:获取 agent 剩余空间 zabbix_get -s 192.168.9.247 -p 10050 -k vfs.fs.size[/,pfree]。 - 查看系统当前网卡的进出流量的 key 值:net.if.out[if,]、net.if.in[if,]、net.if.total[if,] 。
例如:查看 eth0 出口流量,zabbix_get -s 192.168.9.247 -k net.if.out[eth0,bytes]返回的值为出流量,此值为计数值,单位为 bytes,减去上次取得值,除以时间间隔为此段时间内的平均流量。 - 查看系统内存大小的 key 值:vm.memory.size[total],返回值单位 bytes。
例如:zabbix_get -s 192.168.9.247 -p 10050 -k vm.memory.size[total],返回值即为内存大小
Zabbix 实战邮件报警系统
执行步骤和相关命令如下:
(1) 安装 SendEmail 邮箱组件
tar zxf sendEmail-v1.56.tar.gz
cp sendEmail-v1.56/sendEmail /usr/local/bin
chmod 755 /usr/local/bin/sendEmail
(2) 编写邮件脚本
执行 vim 命令编写脚本,复制下面脚本内容,进行变量值的相应修改。
vim /usr/lib/zabbix/alertscripts/SendEmail.sh
注意:脚本中如果使用的是互联网邮箱,有的互联网邮箱需要开启 SMTP 相关服务,才能执行发送。以 QQ 邮箱为例,在“设置”中“账户”设置中找到 SMTP 服务设置项,如下图所示。按提示信息进行短信验证或者手机令牌认证
认证成功后,会弹出界面,返回一个授权码信息
这个授权码是邮箱客户端进行收发邮件需要使用的密码,在脚本中账户密码部分输入的就是此授权码,而不能是邮箱账户密码。建议:提前用 foxmail 测试收发无误后,再写入脚本。
(3) 修改文件属主及执行权限
chown zabbix:zabbix /usr/lib/zabbix/alertscripts/SendEmail.sh
chmod +x /usr/lib/zabbix/
chmod +x /usr/lib/zabbix/alertscripts/SendEmail.sh
touch /tmp/Email.log
chown zabbix.zabbix /tmp/Email.log
(4) 测试邮件发送
进入/usr/lib/zabbix/alertscripts/目录下执行如下命令:
./SendEmail.sh 这里输入自己的邮箱地址 "测试邮件标题" "测试邮件内容"
邮箱收到邮件“测试邮件标题”主题邮件说明邮件发送成功。如有异常查看/tmp/Email.log 日志。
(4) Web 管理界面添加报警媒介类型
登录 Zabbix Web 管理界面,选择“管理”→“报警媒介类型”点击已有的媒体类型“Email”,如下图所示。
在下图界面中,类型更改为“脚本”,添加刚才创建的脚本名称 SendEmail.sh,并添加三个脚本参数:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}。然后点击“更 新”按钮。
(5) 用户关联报警媒介
点击“管理”标签页,点击“用户”按钮,再点击“Admin”用户,在弹出的下图界面中,点击“报警媒介”,添加“报警媒介”,并设置收件人邮箱地址。
完成以上设置后,点击“更新”按钮,更新报警媒介。如下图所示
(6) 添加报警动作
点击“配置”标签页,再点击“动作”导航按钮,事件源选择“触发器”,然后点击“创建动作”按 钮。“名称”一栏自定义即可,本例中为“mail”。新的触发条件选择“触发器示警度=未分类”,然后,点击红框中的“添加”按钮。如下图所示
选择操作修改默认接收人信息,如下:
接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}填写默认信息,如下:
告警主机:{HOST.NAME}
主机地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
然后,在下方的操作区域,点击“新的”按钮,准备添加操作步骤,如下图所示。
在操作细节区域,按红框中所示添加群组和用户,“仅发送到”选择“Email”,如图所示
恢复操作修改默认接收人信息,如下:
接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息填写,如下:
恢复主机:{HOST.NAME}
主机地址:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
操作细节部分与上一步相同,“默认接收人”、“默认信息”以及“操作”配置,如图
最后,点击蓝色“添加”按钮,完成配置。
(7) 模拟宕机验证邮件
关闭服务器 Agent 进程。查看仪表盘,发现已出现警告息,如下图所示。
等待几分钟查看是否收到故障邮件
注意:Zabbix Server 端和 Agent 端时间需要一致。
如果邮箱一直未收到警告邮件,需要编辑 zabbix_server.conf 配置文件,按黑体字部分修改。
AllowRoot=1
User=root
Zabbix 监控系统自动注册
(1) 客户端安装 Agent
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum -y install zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.31
ServerActive=192.168.1.31
Hostname=agent2
systemctl start zabbix-agent
systemctl enable zabbix-agent
(2) Web 管理创建自动注册动作
登录 Web 管理界面,选择配置→动作,事件源选择自动注册,然后点击创建动作,填写名称及触发条件,如图 2.22 所示
选择操作,添加操作细节
(3) 验证
选择配置→主机,可以看到agent2主机已经自动添加
Zabbix 主被动模式讲解
调整 Agent 为主动模式
(1) 修改配置文件
vim /etc/zabbix/zabbix_server.conf
StartAgents=0 ##客户端的 agent 的模式,0 表示关闭被动模式,zabbix-agentd 不监控本地端口,所以看不到 zabbix_agentd 进程。
#Server=192.168.1.31 ##主动模式需要注释掉此行
ServerActive=192.168.1.31 ##主动模式的 serverip 地址
Hostname=192.168.1.32 ##客户端的 hostname,不配置则使用主机名
RefreshActiveChecks=120 ##被监控端到服务器获取监控项的周期,默认 120S
BufferSize=200 ##被监控端存储监控信息的空间大小
Timeout=3 ##超时时间
(2) 检查 Agent 进程
重启 Agent,并查看、确认已经没有 Agent 进程。
systemctl restart zabbix-agent
netstat -anpt | grep 10050
(3) Web 管理添加主动模式模板
选择配置→模板找到 Template OS Linux 模板,点击“全克隆”按钮
完成克隆之后,修改模板名称,点击“添加”按钮
进入模板列表找到刚刚添加的模板,并点击“监控项”按钮
全选所有监控项,点击最下方“批量更新”按钮
在类型处打钩,选择 Zabbix 客户端(主动式),点击“更新”按钮
添加主机,如下图所示。
添加模板,点击“更新”按钮
添加完成后,ZBX 灯不会亮,因为服务器处于被动模式,客户机处于主动模式。
可以在监控中看到监控数据,选择监测中→图形,选择主动客户机,选择图形为 CPU jumps,可以看到相关数据图,如下图所示。
注意:刚添加的数据可能看的不明显,等几分钟就可以看到。