文章目录
- 部署zabbix-server
- zabbix监控节点部署
- 解决zabbix中文乱码
- 创建主机组
- 创建模版
- 配置主机与模版关联
- 监控boot分区
- 监控网卡流量
- 出网卡流量监控
- 进入和出的总流量
- 监控内存
- 监控服务器端口
- 用户自定应监控key值 (监控mysql查询数量)
- zabbix触发器
- 监控cpu
- 监控入网卡流量
- 邮件告警
- 内置宏变量
- 自动发现
- 自定义监控key(监控tcp链接状态)
- 优化:使用传参数的方式
修改主机名
hostnamectl set-hostname zyj86
hostnamectl set-hostname zyj87
部署zabbix-server
安装mysql
mkdir packages
tar -xf mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar -C packages/
cd packages
yum install -y ./*
systemctl enable --now mysqld
cat /var/log/mysqld.log | grep pass
2024-10-12T11:38:07.021454Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hHuk/UeP!0LQ
mysqladmin -uroot password aaA...111 -p
MySQL安全配置向导
mysql_secure_installation
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
systemctl restart mysqld.service
# 可选
# 设置root可以远程连接
update user set host='%' where user='root';
grant all privileges on *.* to root@"%";
flush privileges;
安装zabbixserver
# 配置yum仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-5.el8.noarch.rpm
dnf clean all
# 安装Zabbix server,Web前端,agent
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-get
# 创建初始数据库
mysql> drop user zabbix@'localhost';
mysql> flush privileges;
mysql -uroot -paaA...111
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by 'aaA...111';
mysql> grant all privileges on zabbix.* to'zabbix'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
# 导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
# Disable log_bin_trust_function_creators option after importing database schema.
mysql -uroot -paaA...111
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
# 为Zabbix server配置数据库
编辑配置文件 vim /etc/zabbix/zabbix_server.conf
DBPassword=aaA..111
# 启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm
web界面进行安装,访问 192.168.3.86:80/zabbix
点击下一步后 这里遇到一个错误: php版本低,不支持使用mysql的caching_sha2_password验证插件
无法连接到数据库 The server requested authentication method unknown to the client
PHP 7.2.8和PHP 7.1.20已经可以支持caching_sha2_password,直接连接MySQL8。
切换php版本至7.4
dnf module switch-to php:7.4
重启httpd服务
systemctl restart httpd
再次点击下一步继续安装即可
安装完成
默认登录账号密码为: Admin zabbix
zabbix监控节点部署
# 配置yum仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-5.el8.noarch.rpm
dnf clean all
# 被监控机器安装zabbix-get和zabbix-agent
yum install zabbix-get zabbix-agent -y
# 修改zabbix-agent 配置文件指向server端地址
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.3.86
171 ServerActive=192.168.3.86
# 启动zabbix-agent
systemctl enable --now zabbix-agent.service
监控信息的两种方式
主动模式:定时查看业务状态,及时性好。占用资源多。
被动模式:监控对象上报故障,占用资源少,如网络,存储资源。及时性差。
使用 zabbix_get 命令手动获取
zabbix_get -s 127.0.0.1 -k system.uname
Linux zyj86 4.18.0-553.el8_10.x86_64 #1 SMP Fri May 24 13:05:10 UTC 2024 x86_64
将主机添加到zabbix中 选择主机所属的群组
配置主机模版
在查看图形数据中存在乱码 如图
解决zabbix中文乱码
上传到 zabbix 服务器 simkai.ttf 中文楷体字体,也可上传其他字体。
cd /usr/share/zabbix/assets/fonts/
rz simkai.ttf
mv graphfont.ttf ./graphfont.ttf.bak
mv simkai.ttf graphfont.ttf
刷新网页后就不会出现乱码了
创建主机组
创建模版
选择关联的群组 (模版是一个监控项,图形,触发器等集合,一个群组可包括多个模版)
在添加主机后放置到群组中后 与群组关联的模版即生效,可以看到有很多监控项图形触发器等监控条目。
配置主机与模版关联
当我们在模板中添加监控项后就可以在web页面中查看了,如下例监控boot分区
监控boot分区
创建监控项
在这个模板中创建图形 选择刚才创建的监控项 为该数据展示图形
查看图表
监控网卡流量
创建监控项
添加两个预处理步骤
添加网卡的图形
将模板和主机关联
出网卡流量监控
键值net.if.out[ens160,bytes]
单位bps
进入和出的总流量
键值net.if.total[ens160,bytes]
单位bps
监控内存
键值vm.memory.size[buffers]
单位B
监控服务器端口
键值net.tcp.listen[3306]
# 使用zabbix_get 查看获取的数据
[root@zyj86 ~]# zabbix_get -s 127.0.0.1 -k net.tcp.listen[3306]
1
键值net.tcp.listen[3306]
# 使用zabbix_get 查看获取的数据
[root@zyj86 ~]# zabbix_get -s 127.0.0.1 -k net.tcp.port[127.0.0.1,3306]
1
用户自定应监控key值 (监控mysql查询数量)
# 使用shell命令获取mysql查询数
mysqladmin status -uroot -paaA...111 2>&1
mysqladmin status -uroot -paaA...111 2>&1 | grep "^Uptime" | awk '{print $6}'
104
自定义key
vim /etc/zabbix/zabbix_agentd.d/self_define_parameter_mysql.conf
UserParameter=mysql.questions,mysqladmin status -uroot -paaA...111 2>&1 | grep "^Uptime" | awk '{print $6}'
使用zabbix_agentd -t 指定key名查看是否可以获取
[root@zyj87 ~]# zabbix_agentd -t mysql.questions
mysql.questions [t|110]
重启agent客户端
systemctl restart zabbix-agent.service
创建模版
UserParameter=mysql.questions 使用前面自定义的mysql.questions 作为key
添加图形
将模版与主机关联
zabbix触发器
触发器用于定义item的报警阈值,触发器对象可以用于主机或模版。
监控cpu
创建一个 用于监控cpu的模版
创建监控项 监控cpu的负载
添加触发器
触发器表达式解释:
last(/cpualert/system.cpu.load[all,avg1])>1
cpualert使用这个模版的主机的system.cpu.load所有cpu的1分钟平均值,最近一次数据的平均值大于1报警
完整设置如下
添加图形展示
将主机和模版关联
生成 大文件 压测cpu
dd if=/dev/zero of=/1.txt bs=1M count=10000
cpu利用率大于1 高于阈值出发告警
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
查看首页有告警信息
监控入网卡流量
当入网卡流量过高时会报警
邮件告警
开启授权码
BZgBZWARUac4TePu
添加一个邮箱报警媒介
创建此媒介的告警消息模板
点击添加后如下图所示
配置好后会在媒介中有字节添加的电子邮件告警栏目,可以点击右方测试按钮进行测试
如有以下结果说明上述步骤均配置成功
创建运维用户组 group_cloud2024_yunwei
创建属于group_cloud2024_yunwei组的用户group_cloud2024_zhangsan
添加该用户的报警媒介,使用163邮箱报警
设置用户为超级管理员权限
点击添加
创建触发器动作,例如: zyj87 主机宕机,监控项检测不到数值后触发器就会触发动
设置触发该动作的满足条件
添加操作
点击添加
内置宏变量
如定义报警消息时使用
主题: 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
自动发现
需安装zabbix-agent
# 修改zabbix-agent 配置文件指向server端地址
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.3.86
171 ServerActive=192.168.3.86
创建自动发现规则
创建发现动作
创建动作
添加相应操作
稍等片刻zabbix会自动扫描局域网内的机器并添加到zabbix的监控中,如下图192.168.3.88
TCP连接状态
1、LISTENING状态
HTTPD服务启动后首先处于侦听(LISTENING)状态。
2、ESTABLISHED状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。
3、CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭
4、TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。
5、SYN_SENT状态
SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。
自定义监控key(监控tcp链接状态)
准备自定义key
vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
# Format:UserParameter=<key>,<shell commmand>
UserParameter=tcp.status.listen,ss -an | grep :80 |grep -i 'LISTEN' | wc -l
UserParameter=tcp.status.timewait,ss -an | grep :80 |grep -i 'TIME-WAIT' | wc -l
UserParameter=tcp.status.established,ss -an | grep :80 |grep -i 'ESTAB' | wc -l
UserParameter=tcp.status.syn_recv,ss -an | grep :80 |grep -i 'SYNC-RECV' | wc -l
UserParameter=tcp.status.syn_sent,ss -an | grep :80 |grep -i 'SYNC-SENT' | wc -l
UserParameter=tcp.status.close,ss -an | grep :80 |grep -i 'CLOSE' | wc -l
重启zabbix-agent
systemctl restart zabbix-agent.service
使用zabbix_get 指定key获取数据
zabbix_get -s 192.168.3.87 -k tcp.status.established
创建模版用于监控tcp状态
创建使用自定义key值的监控项 tcp.status.established
在模板中添加图形展示
设置主机与群组下的模板关联
用户访问httpd服务,查看图形展示
优化:使用传参数的方式
vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp.status.[*],ss -an | grep :80 |grep -i '$1' | wc -l
重启zabbix-agent
systemctl restart zabbix-agent.service
使用key获取数据
zabbix_get -s 192.168.3.87 -k tcp.status.[listen]
设置监控项键值使用 tcp.status.[listen] [] 中的listen为传入$1的参数 ,使用这种穿传参的方式就简化了配置文件,只需要在设置健康项的时候出入需要监控的值即可。如传入:time_wait listen 等
当然也可以在shell脚本中使用函数调用的方式再进行优化。