👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事中“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
《精进 Java 学习指南》:系统学习,互联网主流技术栈
《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
来源:民工哥技术之路
blog.csdn.net/weixin_47019016/
article/details/111040042
www.zabbix.com/documentation/
6.0/zh/manual/installation/
upgrade/packages/rhel
前面介绍了 常见运维工具、数据库监控、Zabbix 等开源监控系统对比分析、Zabbix入门与安装等相关的知识点,今天我将详细的为大家介绍 Zabbix 基础配置相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈 支持一波!!!
Zabbix特点
Zabbix是一个高度集成的网络监控解决方案,具备如表所示的特点。
数据采集
可用性和性能检查支持SNMP(trapping或polling),IPMI,JMX,VMware的监控,自定义检测,按照自定义时间间隔收集所需数据,通过server/proxy和agent来执行监控。
灵活的阈值定义
可以定义非常灵活的问题阈值,称为触发器(triggers),从后端数据库调用数值。
高度可配置的告警
可以自定义警告升级(escalation),接受者及告警方式,告警信息可以配置并允许使用宏(macro)变量,通过远程命令实行自动化动作(action)。
实时绘图
通过内置的绘图方法实现监控数据实时绘图。
Web监控能力
Zabbix可以模拟鼠标单击网站并检查其功能性和响应时间。
广泛的可视化选项
能够创建自定义图表,可以组合多个项到一个单一的视图中网络拓扑,自定义屏幕和侧边栏作为仪表盘(dashboard)样式显示报告,监视资源的高级视图(商业)。
历史数据存储
用数据库来存储数据配置历史,内置的管理程序。
容易配置
添加监控设备作为主机,一旦在数据库中,主机即可被监控,将模版应用到监控监控设备。
使用模版
模版中的可以组监控,模版中可以继承其他模版。
网络发现
网络设备的自动发现,代理(agent)自动注册,自动发现文件系统,网络接口,SNMP OID。
快速的web接口
Web前端采用php编写,按照自定义的方式单击审计日志。
Zabbix API
Zabbix API 提供可编程接口面向Zabbix大规模操作,方便第三方软件集成,安全的用户认证。
权限系统
某些用户可以受限于某些试图。
功能齐全且易于扩展的代理(agent)
部署在监控目标上,Linux和windows上都可以部署,用C语言写的,高性能且内存占用小。
二进制守护进程
易移植,通过使用zabbix proxy可以轻松进行远程监控。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
Zabbix 基础配置
页面中文乱码这块在安装部署的时候,已经解决了,不再赘述了。
监控一台主机
这里以监控Win10主机为例来描述具体步骤。关闭防火墙、IP地址为192.168.59.128。
首先在C盘根目录下创建zabbix的文件夹,将需要的文件拖到该文件夹内(bin/win64和conf下的所有文件)。
修改windows配置文件(zabbix.agent.win.conf)的三处如下
Server=192.168.59.137
ServerActive=192.168.59.137
Hostname=win10
Windows中启动zabbix(注意:以下操作请严格安装文档操作否则将会报错)
安装代理、启动服务
cd /zabbix
zabbix_agentd.exe -c zabbix_agentd.win.conf -i 安装
zabbix_agentd.exe -c zabbix_agentd.win.conf -s 启动
netstat -an|find "10050" 查看代理端口
Web图形操作:配置--->主机--->创建主机
配置--->主机--->win10--->名称、新群组、ip--->添加
配置--->主机--->模板-->指示器选择--->添加--->更新
等待一段时间后刷新(1-2分钟),ZBX变绿后操作。
监测--->图形--->群组--->服务器--->查看内容,显示如下:
分离zabbix数据库
开启一台centos7虚拟机,安装mariadb-server,创建zabbix数据库和用户。
[root@localhost ~]# hostname mariadb
[root@localhost ~]# bash
[root@mariadb ~]# systemctl stop firewalld
[root@mariadb ~]# setenforce 0
[root@mariadb ~]# yum -y install mariadb-server
[root@mariadb ~]# systemctl start mariadb
[root@mariadb ~]# systemctl enable mariadb
[root@mariadb ~]# mysql_secure_installation
[root@mariadb ~]# mysql -uroot -pasd123
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'192.168.229.%' identified by 'asd123';
在zabbix服务器上备份导出zabbix数据库
[root@zabbix-server ~]# mysqldump -uroot -pasd123 --databases zabbix > `date +%F-%H`_zabbix.sql
在zabbix服务器上把备份的数据库文件导入到分布式数据库上
[root@zabbix-server ~]# cat 2020-07-04-08_zabbix.sql | mysql -h 192.168.229.160 -uzabbix -pasd123 zabbix
修改zabbix-server上的数据库连接信息
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
定位修改
DBHost=192.168.229.160
DBName=zabbix
DBUser=zabbix
DBPassword=asd123
[root@zabbix-server ~]# vim /etc/zabbix/web/zabbix.conf.php
定位修改
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.229.160';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'asd123';
重启zabbix和httpd服务
[root@zabbix-server ~]# systemctl restart zabbix-server httpd
自定义监控–磁盘吞吐量
检查磁盘的tps
[root@zabbix-agent ~]# yum -y install sysstat
[root@zabbix-agent ~]# iostat | awk '/^sda/{print $2}'
0.64
在agent客户端的配置文件目录下新增监控配置文件(键值对命名法)
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/iostat.conf
添加:
UserParameter=iostat,iostat | awk '/^sda/{print $2}'
[root@zabbix-agent ~]# systemctl restart zabbix-agent
客户端查看监控项
[root@zabbix-agent ~]# zabbix_agentd -p | grep iostat
iostat [t|0.66]
在服务端安装zabbix-get,查看客户端新增监控项
[root@zabbix-server ~]# yum -y install zabbix-get
[root@zabbix-server ~]# zabbix_get -s 192.168.229.209 -p10050 -k iostat
0.66
在zabbix web界面进行监控项关联
配置--主机--找到对应主机--监控项--创建监控项--命名--键值(iostat)--信息类型(浮点数)--应用集名监测--最新数据
zabbix报警音报警
前端声音报警
右上角小人(用户)--正在发送信息--勾选
添加触发器:配置--主机--找到对应主机--触发器--创建触发器--命名--严重性--添加表达式--选择监控项--间隔--结果--添加
zabbix邮件报警
(1)配置--动作--启用report--应用
(2)右上角小人(用户)--报警媒介--添加--收件人邮箱地址(推荐使用qq邮箱)
(3)管理--报警媒介类型--email--添加SMTP服务器:smtp.qq.com--端口:465--HELO:qq.com--SMTP电邮:xxxxx@qq.com--SSL/TLS--勾选--用户名称:xxxxxx@qq.com--密码:授权码(打开邮箱--设置--开启smtp服务--获取授权码--保存配置)
(4)微信关联qq邮箱,实现微信报警
首先点击进入微信“设置”选项。
然后点击进入“账号与安全”设置选项。
再点击进入“更多安全设置”选项。
接着点击“邮箱地址”设置选项。
最后输入需要绑定的邮箱地址,点击确定即可完成绑定
zabbix官方使用说明文档:https://www.zabbix.com/documentation/4.0/zh/manual/
邮件脚本报警
使用原因 :企业使用centos6,zabbix2.*,zabbix没有email报警媒介模块。
关闭zabbix-server上的邮件服务,安装mailx。
[root@zabbix-server ~]# systemctl stop postfix
[root@zabbix-server ~]# systemctl disable postfix
[root@zabbix-server ~]# yum -y install mailx
编辑mailx的配置,指定收件邮箱和用户密码。
[root@zabbix-server ~]# vim /etc/mail.rc
末尾添加:
set from=1599840577@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1599840577@qq.com
set smtp-auth-password=yuemqwmhdizdbjeg
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
[root@zabbix-server ~]# echo 123 | mail -s test 1599840577@qq.com #测试邮件
zabbix-server编写邮件报警脚本
[root@zabbix-server ~]# yum -y install dos2unix
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim email_notice.sh
添加:
#!/bin/bash
> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址:<https://github.com/YunaiV/yudao-cloud>
> * 视频教程:<https://doc.iocoder.cn/video/>
# export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@zabbix-server alertscripts]# chmod +x email_notice.sh
zabbix web控制台关联邮件报警脚本
管理--报警媒介类型--关闭已有的email报警--右上角“创建媒体类型”“名称,类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”,添加:右上角--小人(用户)--报警媒介--“类型(邮件脚本,收件人:真实邮箱地址)”,添加--更新。
微信报警
申请企业微信
我的企业--复制企业ID:ww15f160c1bf39f6b1,应用管理--创建应用--名称:报警机器人--选择部门--创建应用--点开报警机器人,复制:AgentId 1000002,Secret ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU
编写python微信报警脚本,并修改企业id和用户密码
复制weixin.py到zabbix-server的/usr/lib/zabbix/alertscripts/下
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim weixin.py
修改:
corpid='ww15f160c1bf39f6b1' #企业ID
appsecret='ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU' #报警机器人密码
agentid=1000002 #报警机器人ID
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
[root@zabbix-server alertscripts]# chmod 777 weixin.py
[root@zabbix-server alertscripts]# dos2unix -k weixin.py #格式转换
[root@zabbix-server alertscripts]# touch /tmp/weixin.log
[root@zabbix-server alertscripts]# chown zabbix:zabbix /tmp/weixin.log #赋权weixin.log
[root@zabbix-server alertscripts]# ./weixin.py ZhangJie(企业微信账号) test 123456 #测试发送微信
zabbix web关联
管理--报警媒介类型--右上角“创建媒体类型”“名称(微信报警),类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”,更新:右上角--小人(用户)--报警媒介--“类型(微信报警,收件人:微信账号)”--添加--更新
修改邮件通知内容
配置–动作–Report problems to Zabbix administrators
操作:修改默认标题,修改消息内容
主题:Problem: {EVENT.NAME}故障{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}
恢复操作:修改默认标题,修改消息内容
恢复主题:恢复{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}
2.修改后,更新
创建图形
配置--主机--web1--图形--右上角“创建图形”--填写“名称”--添加“监控项” 点击最后一行“添加”。
查看图形:监测--图形--选择“群组”--选择"主机"--选择“图形名称”。
创建聚合图形
监测--聚合图形--创建聚合图形--填写聚合图形“名称”--添加--选择新建聚合图 --编辑聚合图形
版本升级
上一篇讲解的是从头安装,但在现实的情况中,多数都是版本升级的居多。
升级前你需要判断一下你的系统,基础组件,例如 PHP-FPM 版本,数据库版本,是否支持最新版本的 ZABBIX。
从 5.0LTS 到 6.0,只要保证 PHP-FPM 版本>7.2 即可。
备份
停掉现有的 Zabbix-Server,并备份数据库,备份相关配置文件。
service zabbix-server stop
mysqldump zabbix > zabbix_20220220.sql
mkdir /opt/zabbix-backup-20220220/
cp -R /usr/share/zabbix/ /opt/zabbix-backup-20220220/
cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup-20220220/
升级软件包
删掉老的 Zabbix 源,下载 Zabbix-Release 包,需要格外注意的是,请下载与你系统相匹配的软件包,可以访问 ZABBIX 下载 页面,使用页面提供的选择器,进行选择。
注意,执行 apt-get install –only-upgrade 时,因为我用的 Nginx 作为 WebServer,所以升级了 zabbix-nginx-conf,如果你是 Apache,请替换成 zabbix-apache-conf。
rm -Rf /etc/apt/sources.list.d/zabbix.list
wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-2+debian11_all.deb
dpkg -i zabbix-release_6.0-2+debian11_all.deb
apt update
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-nginx-conf
升级完毕,启动相关服务。
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
重新访问,Zabbix Web,能看到新版 Web 界面,采集状态正常。如果 Web 提示数据库版本不一致,等一会,ZABBIX 正在处理数据库的升级和迁移操作,一会就好了。
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)