安装zabbix 6.0
安装说明:Download and install Zabbix
中文手册:Zabbix 文档
环境准备:
主机名 | 地址 |
---|---|
zabbixserver | 192.168.88.5/24 |
web1 | 192.168.88.100/24 |
关闭防火墙,将 SELinux 设置为宽容模式(Permissive)
先将Zabbix rpm包更新到yum仓库,安装包清单如下:
- zabbix-nginx-conf-6.0.11-release1.el8.noarch.rpm
- zabbix-web-6.0.11-release1.el8.noarch.rpm
- fping-3.16-1.el8.x86_64.rpm
- zabbix-selinux-policy-6.0.11-release1.el8.x86_64.rpm
- zabbix-web-deps-6.0.11-release1.el8.noarch.rpm
- zabbix-agent-6.0.11-release1.el8.x86_64.rpm
- zabbix-server-mysql-6.0.11-release1.el8.x86_64.rpm
- zabbix-web-mysql-6.0.11-release1.el8.noarch.rpm
- zabbix-get-6.0.12-release1.el8.x86_64.rpm
- zabbix-sql-scripts-6.0.11-release1.el8.noarch.rpm
1.在Zabbixserver上安装相应软件包
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server langpacks-zh_CN
2. 启动mysqld服务
[root@pubserver zabbix]# systemctl enable mysqld --now
3.配置数据库
# 在zabbix上创建连接数据库的用户
[root@zabbixserver ~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
# 在binlog日志开启的情况下,打开函数生成器
mysql> set global log_bin_trust_function_creators = 1;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
# 验证数据库配置,如果登陆不到数据库表示上一步配置不正确
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -hlocalhost zabbix
# 在数据库中创建表并导入数据
[root@zabbixserver ~]# cp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz .
[root@zabbixserver ~]# gzip -d server.sql.gz
[root@zabbixserver ~]# mysql -uzabbix -pzabbix zabbix < server.sql
4.配置zabbix_server
[root@zabbixserver ~]# vim +129 /etc/zabbix/zabbix_server.conf
DBPassword=zabbix
5.配置Zabbix_agent
[root@zabbixserver ~]# vim +182 /etc/zabbix/zabbix_agentd.conf
Hostname=zabbixserver
6.配置Nginx展示Zabbix
[root@zabbixserver ~]# vim /etc/nginx/conf.d/zabbix.conf
# 打开第2、3行的注释,结果如下所示:
server {
listen 8080;
server_name example.com;
...以下省略...
7.启动相关服务
[root@pubserver zabbix]#systemctl enable zabbix-server --now
[root@pubserver zabbix]#systemctl enable zabbix-agent --now
[root@pubserver zabbix]#systemctl enable nginx --now
[root@pubserver zabbix]#systemctl enable php-fpm --now
访问zabbixserver的8080端口,进行初始化:
注意:这里的用户名Admin,A是大写的!密码是小写的zabbix
- 此时zabbix已经开始在监控自己了,查看默认监控配置
配置zabbix监控web1服务器
1.在web1上安装agent
安装配置启动agent
[root@web1 ~]# dnf -y install zabbix-agent
修改web1配置文件
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=127.0.0.1,192.168.88.5
182 Hostname=web1
启动服务
[root@web1 ~]# systemctl enable zabbix-agent --now
在web页面中添加对web1的监控
- 主机:安装了agent,被监控的主机
- 主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
- 模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。
常用监控指标
- Space utilization:以百分比显示的磁盘利用率
- Used space:已用磁盘空间
- Available memory:可用内存
- CPU idle time:CPU空闲时间。不宜过低。
- Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
- Interface eth0: Bits received:网卡接收到的数据量
- Interface eth0: Bits sent:网卡发送的数据量
- Number of processes:系统运行的进程数
- Number of logged in users:已登陆的用户数
自定义监控项
实现监控web1用户数量的监控项
- 在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
- 在web页面中创建监控项。监控项对应key值。
在被控端创建key
- 创建key的语法
UserParameter=自定义key值,命令
# 命令的执行结果,是key的value
- 创建自定义配置文件。文件名自定义。
root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/usercnt.conf
UserParameter=usercnt,sed -n '$=' /etc/passwd
[root@web1 ~]# systemctl restart zabbix-agent.service
- 验证自定义监控项
# 1. 安装zabbix-get
[root@zabbixserver ~]# yum install -y zabbix-get
[root@web1 ~]# yum install -y zabbix-get
# 2. 获取监控项的值
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
46
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usercnt
46
创建模板
- 创建模板
- 创建监控项
应用模板到主机
查看结果
配置告警钉钉机器人提示消息
- 默认情况下,监控项不会自动发送告警消息
- 需要配置触发器与告警,并且通过通知方式发送信息给联系人
- 触发器:设置条件,当条件达到时,将会执行某个动作
- 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令
用户数超过50,钉钉机器人提示
- 当web1的用户数超过50时,认为这是一个问题(Problem)
- 当出现问题时,将会执行动作。
- 执行的动作是钉钉机器人提示。
- 通过钉钉机器人提示消息需要添加新的报警媒介
实施
- 创建触发器规则
上图中,点击“添加”后,出现下图:
上图中,点击“插入”后的结果如下:
创建钉钉机器人
- 在手机上创建一个组织
- 登陆钉钉开发者后台:阿里巴巴-钉钉,是一个工作方式!超过1000w家企业正在使用钉钉!开发者后台统一登录 - 钉钉统一身份认证阿里巴巴-钉钉,是一个工作方式!超过1000w家企业正在使用钉钉!
- 获取开发者权限
- 创建机器人
- 下面以钉钉手机版为例,配置钉钉群聊机器人
- 进入组织群设置 点击机器人
- 点击添加机器人
- 点击刚才在开发者后台添加的应用
注意上面的Webhook地址,不要泄露,谁拥有此地址,谁就可以控制机器人说话。
编写脚本并测试
# 安装钉钉机器人脚本需要用到的模块
[root@zabbixserver ~]# yum install -y python3-requests
# 编写钉钉机器人脚本
[root@zabbixserver ~]# vim /usr/lib/zabbix/alertscripts/dingalert.py
#!/usr/bin/env python3
import json
import requests
import sys
def send_msg(url, remiders, msg):
headers = {'Content-Type': 'application/json; charset=utf-8'}
data = {
"msgtype": "text",
"at": {
"atMobiles": remiders,
"isAtAll": False,
},
"text": {
"content": msg,
}
}
r = requests.post(url, data=json.dumps(data), headers=headers)
return r.text
if __name__ == '__main__':
msg = sys.argv[1]
remiders = []
url = '钉钉机器人Webhook地址' # 注意此处需输入机器人的webhook地址
print(send_msg(url, remiders, msg))
[root@zabbixserver ~]# chmod +x /usr/lib/zabbix/alertscripts/dingalert.py
[root@zabbixserver ~]# /usr/lib/zabbix/alertscripts/dingalert.py 'warn: 测试消息' # 注意消息中要包含关键字warn
{"errcode":0,"errmsg":"ok"}
添加报警媒介类型
为用户添加报警媒介
创建触发器
- 创建触发器,用户数超过55则触发问题
创建动作
- 创建动作,用户数超过55则发送钉钉告警消息
验证
- 创建用户,使用户数超过55
[root@web1 ~]# for user in user{6..10}; do useradd $user; done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
56
(这是之前测试的用户数量超过35的截图)
附监控原理图