- Zabbix企业级应用
- 一. 案例涉及相关知识点
- 二. 案例实施
- 根据主机触发
Template OS Linux by Zabbix agent中的Zabbix agent is not available (for {$AGENT.TIMEOUT})
设置,主要监测zabbix_agentd客户端连接情况。 - 2.5 Zabbix监控系统自动注册
- 2.6 zabbix自定义监控项
- !/usr/bin/bash
- 脚本内容:通过ps检查httpd进程是否存在,如果存在则脚本反馈1,如果不存在则返回0。
- \ ‘ “ ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
- Additionally, newline characters are not allowed.
- 0 - do not allow
- 1 - allow
- Mandatory: no
- Range: 0-1
- Default:
- 默认为0,改为1后可以让用户自定义的脚本中可以包含特殊字符。
- 创建userparameter_httpd.conf文件
- 自定义键值为:check_httpd,要执行的命令为执行check-http.sh这个脚本
Zabbix企业级应用
公司刚刚搭建完Zabbix,现在需要对后续的服务器添加监控,由于公司有几百台服务器,因此使用自动发现或者自动注册来批量添加服务器,并且配置好邮件报警用于及时发现服务器问题。但是由于Zabbix-Server性能有限,所以需要更换Agent工作模式为主动,减轻Zabbix-Server的压力。
一. 案例涉及相关知识点
1.1 获取远程key值
Zabbix_get 是zabbix服务端的命令,用于检测Agent端的配置是否正确,并从 Zabbix agent那里获取所需的信息。
1.2 自动发现;
自动发现是由Zabbix
Server开启发现进程,定时扫描局域网中指定IP服务、设备;
1.3 主被动模式
- 主动模式是Zabbix客户端主动向服务端发送数据;
- 被动模式是被动等待服务端来客户端取数据;
- Zabbix默认使用被动模式;
1.4 邮件报警
- 邮件报警在Zabbix中是非常重要的组件,可以在服务器出现问题是及时邮件发送给管理员;
- 使用sendmail组件来添加发送邮件的支持;
1.5 自动注册
- 自动注册内容与自动发现相反,Active agent主动联系Zabbix Server,最后由Zabbix Server将Agent添加到host;
- 所有服务器批量安装Zabbix Agent,server配置好trigger,就可以迅速添加服务器监控;
二. 案例实施
案例环境:每个应用均由Zabbix-server配合Agent完成
主机 | 操作系统 | 主机名/IP地址 | 主要软件及版本 |
---|---|---|---|
服务器 | Centos7.7 | 192.168.154.101 | Zabbix-server Zabbix-agent |
服务器 | Centos7.7 | 192.168.154.106 | Zabbix-agent |
2.1 获取远程KEY(监控项)
安装zabbix_get
Zabbix没有自带此命令,需要安装;
[root@zabbix-server zabbix]# wget -c https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-get-4.4.5-2.el7.x86_64.rpm
[root@zabbix-server zabbix]# rpm -ivh zabbix-get-4.4.5-2.el7.x86_64.rpm
zabbix_get常用参数
-s --host <host name or IP> 指定目标主机名或IP地址
-p --port <port number> 指定主机上运行 Zabbix agent 的端口号。默认端口10050
-I --source-address <IP address> 指定源 IP 地址
-k --key <item key> 指定要从监控项键值检索的值
-h --help 获得帮助
-V --version 显示版本号
Zabbix_get获取Agent数据举例
# 获取192.168.154.106服务器的CPU个数
[root@zabbix-server zabbix]# zabbix_get -s 192.168.154.106 -p 10050 -k system.cpu.num
4
# 获取192.168.54.106服务器的CPU 15分钟内平均负载:processor load
[root@zabbix-server zabbix]# zabbix_get -s 192.168.154.106 -p 10050 -k system.cpu.load[all,avg15]
0.050000
Zabbix常用key值
- 监控端口的key值: net.tcp.port[,port_number]
- 监控进程key值:proc.num[process_name]
- 查看磁盘容量的key值:vfs.fs.size[/,pfree]
- 查看系统当前网卡的进出流量的key值:
- net.if.out[if,] 例如:net.if.out[ens32,bytes]
- net.if.in[if,]
- net.if.total[if,]
- 查看系统内存大小的key值:vm.memory.size[total]
2.2 Zabbix监控系统自动发现
安装zabbix agent程序
要在所有的服务器上进行安装,可以写脚本批量安装
[root@slave01 ~]# rpm -ivh zabbix-agent-4.4.5-2.el7.x86_64.rpm
[root@slave01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.154.101
ServerActive=192.168.154.101
Hostname=slave01
[root@slave01 ~]# firewall-cmd --add-service=zabbix-agent --permanent
[root@slave01 ~]# firewall-cmd --reload
配置自动发现规则
“配置”->“自动发现”->“创建自动发现规则”
配置动作
“配置”->“动作”->“创建动作”:事件源一定要选择“自动发现”
再配置操作
查看结果
还可以定义移除主机动作
这里就不展示了,由学生自行完成。
案例需求:
- 发现那些正在运行Zabbix代理的主机
- 每10分钟运行一次发现
- 添加主机以监视主机正常运行时间是否超过1小时
- 如果主机停机时间超过24小时,则删除主机
- 将Linux主机添加到“ Linux服务器”组
- 将Windows主机添加到“ Windows服务器”组
- 针对Linux主机使用Template OS Linux
- 针对Windows主机使用Template OS Windows
2.3 Zabbix主被动模式
主动和被动是相对客户端来讲的。
- 被动模式:服务器会主动连接客户端获取监控项目数据,客户端被动地接收连接,并把监控信息传递给服务端;
- 主动模式:客户端会主动把监控数据汇报给服务端,这样可以降低服务端的压力。
当客户端数量非常多时,建议使用主动模式,可以降低服务端的压力;
服务端有公网IP,客户端只有内网IP,但能连外网,这种场景适合主动模式。
zabbix agent端主动模式配置
修改配置文件
[root@active-agent ~]# grep -v '^#' /etc/zabbix/zabbix_agentd.conf | grep -v '^$'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
#被动模式接收的服务器地址
Server=192.168.154.101
#关闭被动模式,0为关闭,不打开后台守护进程
StartAgents=0
#主动模式接收的服务器地址
ServerActive=192.168.154.101
#主机名,要在server添加主机列表中一致
Hostname=active-agent
Include=/etc/zabbix/zabbix_agentd.d/*.conf
重启agent并查看已经没有agent进程
[root@active-agent ~]# systemctl restart zabbix-agent.service
[root@active-agent ~]# netstat -antp | grep agent
[root@active-agent ~]# netstat -antp | grep 10050
添加主动模式主机
选择主动模式模板
在主机中,”ZBX”可用性没有显示(不会变绿),但是可以监控到数据
2.4 Zabbix实战邮件报警
在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。
注册一个可用邮箱
我的是163邮箱,要开启客户端授权码
安装发送邮件工具
[root@zabbix-server ~]# yum install mailx
#更改/etc/mail.rc文件
set from=test@163.com 你的发送邮箱地址
set smtp=smtp.163.com 发送邮件服务器
set smtp-auth-user=test@163.com 发送邮件认证用户名,即你的邮箱地址
set smtp-auth-password=xxxxxxx 客户端授权密码
set smtp-auth=login
# 停止本地邮件服务
[root@zabbix-server ~]# systemctl stop sendmail.service
[root@zabbix-server ~]# systemctl disable sendmail.service
[root@zabbix-server ~]# systemctl disable postfix.service
[root@zabbix-server ~]# systemctl stop postfix.service
发送测试邮件
[root@zabbix-server ~]# echo 'zabbix test mail' | mail -s 'zabbix' test@qq.com
编写发送邮件脚本
#查看默认告警脚本路径
[root@zabbix-server ~]# cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#编写脚本如下:
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/bash
#mail content
messagees=`echo $3 | tr '\r\n' '\n'`
#mail subject
subject=`echo $2 | tr '\r\n' '\n'`
echo "start" >> /tmp/zabbix.log
echo "${messagees}" | mail -s "${subject}" $1
echo "${messagees}" >> /tmp/zabbix.log
echo "end" >> /tmp/zabbix.log
date >> /tmp/zabbix.log
echo '--------------' >> /tmp/zabbix.log
[root@zabbix-server ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.sh
[root@zabbix-server ~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/mail.sh
#测试脚本是否可以成功发送
[root@zabbix-server ~]# /usr/lib/zabbix/alertscripts/mail.sh 147717473@qq.com "zabbix" "zabbix test 2"
Web管理界面添加报警媒介类型
用户关联报警媒介
创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择用户admin,也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。
添加报警动作
“配置”->“动作”->“创建动作”。事件源选择”触发器”
根据主机触发Template OS Linux by Zabbix agent中的Zabbix agent is not available (for {$AGENT.TIMEOUT})
设置,主要监测zabbix_agentd客户端连接情况。
定义操作
恢复操作
测试邮件告警效果
[root@zabbix-server ~]# systemctl stop zabbix-agent.service
可以看到动作日志
去邮箱,可以看到邮件已收到。
2.5 Zabbix监控系统自动注册
Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。
这样功能可以非常方便的自动监控新的Cloud节点。一旦在Cloud中有一个新节点,Zabbix将自动启动host的性能和可用性数据的收集。云中的主机一般都是随机分配IP地址的,自动发现需要指定IP网段,所以使用自动注册功能很适合。
客户端安装Agent并配置
和自动发现配置相同
[root@auto-register ~]# grep -v '^#' /etc/zabbix/zabbix_agentd.conf | grep -v '^$'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.154.101
ServerActive=192.168.154.101
Hostname=auto-register
HostMetadataItem=system.uname 最好加上这个配置,确保自动注册信息正确
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Web管理创建自动注册动作
创建事件源为:自动注册的动作
在操作中链接模板,添加主机动作可以省略
查看结果,自动会加入到”Discovered hosts”主机群组中。
2.6 zabbix自定义监控项
abbix自带的默认模版里包括了很多监控项,有时候为了满足业务需求,需要根据自己的监控项目自定义监控项,下面介绍一种自定义监控项的方式。
2.6.1 首先编写自定义监控脚本,以监控httpd进程是否存在为例。
- 脚本名字:check-http.sh
- 脚本目录(这个目录可以自定义):/etc/zabbix/zabbix_scripts ,需要自己创建;
- 脚本内容:
``` [root@auto-register zabbix_scripts]# vim check-http.sh!/usr/bin/bash
result=ps -ef | grep httpd | grep -v grep
if [ -n “$result” ]; then echo 1 else echo 0 fi
脚本内容:通过ps检查httpd进程是否存在,如果存在则脚本反馈1,如果不存在则返回0。
<a name="7c88a018"></a>
### 2.6.2 修改zabbix_agentd.conf配置文件。
[root@auto-register ~]# vim /etc/zabbix/zabbix_agentd.conf
Option: UnsafeUserParameters
\ ‘ “ ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
Additionally, newline characters are not allowed.
0 - do not allow
1 - allow
#
Mandatory: no
Range: 0-1
Default:
UnsafeUserParameters=1
默认为0,改为1后可以让用户自定义的脚本中可以包含特殊字符。
<a name="21125963"></a>
### 2.6.3 自定义监控项
格式为:`UserParameter=<键值>,<命令>`
[root@auto-register ~]# cd /etc/zabbix/zabbix_agentd.d/
创建userparameter_httpd.conf文件
[root@auto-register zabbix_agentd.d]#vim userparameter_httpd.conf UserParameter=check_httpd,sh /etc/zabbix/zabbix_scripts/check-http.sh
自定义键值为:check_httpd,要执行的命令为执行check-http.sh这个脚本
[root@auto-register zabbix_agentd.d]# systemctl restart zabbix-agent.service ```
2.6.4 创建监控项
选择要增加监控项的主机,点击“监控项”,然后“创建监控项”;
添加成功后,在最新数据中查看是否获取到数据;