1 Zabbix7.0+Grafana案例概述
由于最近发生了几次服务器系统盘满,导致业务受影响的事件,打算研究一下运维管理系统,把各种服务器整体做个监控,安装过程中遇到不少问题,参考了很多文档,最终安装成功,所以写篇文章记录一下我的安装过程。
我更倾向于做一些案例类文章,从头到尾跟着操作就能出效果,同时弄清楚整个过程,放到生产环境中使用也比较放心,如果大家在操作过程中发现有地方写的不清楚,请私信我,我会及时完善。
文章打算分三个阶段,本篇是第一阶段:
- 第一阶段:本篇文章,Zabbix+Grafana安装、对接,监控Windows和Linux。
- 第二阶段:Grafana面板分享、创建面板、数据展现。
- 第三阶段:Zabbix实现告警到邮件、钉钉和微信。
1.1 环境介绍
本案例全部软件都采用官网安装包或安装流程进行安装,由于7不支持yum安装zabbix,为了方便安装,所以选择了CentOS9。
Grafana服务器采用了Windows Server系统,这台同时作为运维机使用,Grafana在CentOS9中安装也很方便,可以按需选择。
软件也可以按需选择版本、编译安装,请自行选择。
1.2 软件版本
名称 | 软件版本 | 链接 |
---|---|---|
操作系统 | CentOS 9 Stream | 自行安装(安装时选择中文,如果安装的英文版,可以参考2.2修改,不然zabbix配置时,不能选择中文) |
操作系统 | Windows Server | 自行安装,尽量新版 |
中间件 | Nginx 1.22.1 | Zabbix安装过程中附带安装,不需要自行安装 |
PHP | PHP 8.0.30 | Zabbix安装过程中附带安装,不需要自行安装 |
数据库 | mysql 8.0.36 RHEL9 x86_64 | https://repo.mysql.com//mysql80-community-release-el9-5.noarch.rpm |
Zabbix | 7.0 LTS 7.0.3 | https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=centos&os_version=9&components=server_frontend_agent&db=mysql&ws=nginx |
Grafana | 10.4.1 Enterprise | https://grafana.com/grafana/download/10.4.1?pg=get&platform=windows&plcmt=selfmanaged-box1-cta1 |
1.3 服务器配置
前三台服务器可以合并为一台,只是在安装zabbix导入数据库时有些差异,如果不会操作可以评论区留言。
角色 | IP | 数量 | 安装软件 | vCPU | 内存 | 磁盘 |
---|---|---|---|---|---|---|
Zabbix应用服务器 | 192.168.1.1 | 1 | zabbix-server、Nginx、PHP | 4 | 16 | 100 |
数据库服务器 | 192.168.1.2 | 1 | Mysql | 4 | 8 | 100 |
Grafana应用服务器 | 192.168.1.3 | 1 | Grafana | 4 | 8 | 100 |
被监控客户端 | / | 按需 | zabbix-agent | / | / | / |
2 服务端安装
2.1 Mysql安装及配置
在数据库服务器中操作
-
配置防火墙
#开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
-
安装Mysql官方源
rpm -Uvh https://repo.mysql.com//mysql80-community-release-el9-5.noarch.rpm
-
安装mysql-community-server
yum install mysql-community-server
-
启动Mysql服务
#启动服务 systemctl start mysqld systemctl enable mysqld #查看服务状态 systemctl status mysqld
-
获取root初始密码,保存备用
grep password /var/log/mysqld.log
-
修改root初始密码
#使用初始密码登录 mysql -uroot -p Enter password:输入初始密码 #以下是在mysql命令行中操作 #修改初始密码为Zabbix@123,这里自行替换成你自己的密码,建议设置的复杂一些 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zabbix@123';
-
(按需)设置允许root远程连接
zabbix通过独立的账户连接数据库,所以root是否允许远程登录都可以,默认只允许本机登录,可以配置允许全部或允许指定IP:
-
允许全部IP远程登录
#以下是在mysql命令行中操作 use mysql; UPDATE user SET host='%' WHERE user='root'; #刷新权限 FLUSH PRIVILEGES; #检查结果 use mysql; SELECT user,host FROM user;
-
允许指定IP远程登录
#以下是在mysql命令行中操作 #例如:允许root用户通过192.168.1.1远程登录,并设置密码为Zabbix@123 CREATE USER root@192.168.1.1 IDENTIFIED BY 'Zabbix@123'; #给远程账户添加权限 GRANT ALL PRIVILEGES ON *.* TO root@192.168.1.1; #刷新权限 FLUSH PRIVILEGES; #检查结果 SELECT user,host FROM user;
-
-
创建zabbix数据库
#以下是在mysql命令行中操作 #创建zabbix的数据库 create database zabbix character set utf8mb4 collate utf8mb4_bin; #创建zabbix账户,允许zabbix服务器的IP访问数据库 create user zabbix@localhost identified by 'Zabbix@123'; create user zabbix@192.168.1.1 identified by 'Zabbix@123'; #授权zabbix账户访问数据库 grant all privileges on zabbix.* to zabbix@localhost; grant all privileges on zabbix.* to zabbix@192.168.1.1; #开启权限,为后续导入初始数据做准备 set global log_bin_trust_function_creators = 1; quit;
-
Mysql配置完成
2.2 Zabbix安装及配置
在zabbix应用服务器中操作
-
配置防火墙
#开放8080、10050、10051端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --zone=public --add-port=10050/tcp --permanent firewall-cmd --zone=public --add-port=10051/tcp --permanent firewall-cmd --reload
-
(按需)服务器安装中文环境,不然配置zabbix时不能选中文
#确认当前语言,如果是en_US.UTF-8说明是英文,按照此方法安装 echo $LANG en_US.UTF-8 #安装中文环境 yum install glibc-common yum install langpacks-zh_CN.noarch #编辑配置文件 vim /etc/locale.conf 修改为LANG="zh_CN.UTF-8" source /etc/locale.conf #重启系统 reboot
-
(按需)如果之前安装了epel源,需要在epel源中排除zabbix,确保使用Zabbix源安装
#编辑epel源配置文件 vim /etc/yum.repos.d/epel.repo #在[epel]下添加如下语句 excludepkgs=zabbix*
-
安装Zabbix源
#安装Zabbix官方源 rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm #清理缓存 yum clean all
-
安装Zabbix server,Web前端,agent
yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
-
在zabbix应用服务器中操作,导入初始架构和数据,系统将提示您输入新创建的密码。
#在zabbix应用服务器中执行,将IP换成自己数据库服务器的IP #本案例中数据库服务器IP为192.168.1.2 zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h 192.168.1.2 --default-character-set=utf8mb4 -uzabbix -p zabbix Enter password:输入数据库zabbix用户的密码 Zabbix@123
-
导入完成,关闭权限
mysql -h 192.168.1.2 -uroot -p Enter password:输入root用户密码 #关闭权限 set global log_bin_trust_function_creators = 0; quit;
-
修改zabbix配置文件
vim /etc/zabbix/zabbix_server.conf #填写数据库服务器IP DBHost=192.168.1.2 //95行 #填写数据库zabbix账户的密码 DBPassword=Zabbix@123 //131行 #填写端口号 DBPort=3306 //148行 #修改缓存大小 CacheSize=1G //486行 ValueCacheSize=256M //548行
-
修改nginx配置文件
vim /etc/nginx/conf.d/zabbix.conf #取消listen注释,默认端口8080
-
启动zabbix、nginx、php服务
systemctl restart zabbix-server zabbix-agent nginx php-fpm systemctl enable zabbix-server zabbix-agent nginx php-fpm
-
浏览器访问http://192.168.1.1:8080,选择中文
-
确认全部项目都是OK
-
配置连接数据库
填写数据库服务器的IP、端口、数据库密码
-
配置主机名,此名称将显示在浏览器标题处
-
出现此页面表示安装成功
-
Zabbix配置完成
默认用户名:Admin
默认密码:zabbix
-
解决zabbix中文显示为□□方块的问题
处理前:
在windows系统中找一个字体,上传到zabbix应用服务器,替换zabbix的默认字体
#默认字体位置/usr/share/zabbix/assets/fonts/graphfont.ttf
#我这里选择黑体,直接覆盖
cp simhei.ttf /usr/share/zabbix/assets/fonts/graphfont.ttf
处理后:
2.3 Grafana安装及配置
在grafana应用服务器中操作
-
配置防火墙,开放80端口
-
下载、解压安装包,我这里用的二进制包
https://grafana.com/grafana/download/10.4.1?pg=get&platform=windows&plcmt=selfmanaged-box1-cta1
-
nssm可以把grafana注册成服务
https://nssm.cc/download
-
进入nssm目录,安装服务
cd C:\Users\Administrator\Desktop\grafana-v10.4.0\bin\nssm-2.24\win64 nssm.exe install GrafanaService
弹出窗口,path选择grafana-v10.4.0\bin\grafana-server.exe,其他保持默认,点击install service
-
修改配置文件
复制grafana-v10.4.0\conf\sample.ini,重命名为custom.ini
修改端口为80
-
启动服务
-
浏览器访问http://192.168.1.3
默认用户名:admin
默认密码:admin
-
设置中文
3 grafana对接zabbix数据
3.1 安装grafana对接zabbix插件
- 命令安装:
#在grafana-v10.4.0\bin\目录下执行
grafana-cli.exe plugins install alexanderzobnin-zabbix-app
-
手动安装:
-
我这里网络原因没法在线安装,也说一下手动安装,在这里下载安装包:
https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app/?tab=installation
-
解压到grafana-v10.4.0\data\plugins\
添加环境变量,如果不添加,我这里插件会报错,在此记录一下
在环境变量-系统变量-path中,添加bin和插件目录,添加如下内容:
这是我的安装目录,需要根据你的实际安装目录修改
-
C:\Users\Administrator\Desktop\grafana-v10.4.0\bin;C:\Users\Administrator\Desktop\grafana-v10.4.0\data\plugins\alexanderzobnin-zabbix-app
3.2 重启grafana服务
3.3 启用插件
管理-插件和数据-插件-zabbix,点击enable
3.4 回到zabbix中创建api token
-
(右下角)用户设置-API token
-
点击“创建API令牌”
-
输入信息,点击添加
-
名称随意
-
取消到期时间选项
-
点击添加
-
复制认证令牌,保存好
3.5 到grafana中添加数据源
-
连接-数据源-Add data source
-
划到最后,找到zabbix
-
对接参数
-
名称:随意,选择Default
-
URL:http://192.168.1.1:8080/api_jsonrpc.php
-
Auth type:选择api token
-
API Token:填写第11步生成的Token
- 勾选此选项,点击save & test
3.6 出现这个代表对接成功,至此服务端安装工作全部完成
4 被监控客户端安装
被监控客户端安装相对简单,Windows直接下载MSI安装包,CentOS、Ubuntu、Debian等linux系统按照官网的流程yum安装即可,还有客户端需要在防火墙开放10050端口。
Windows安装包:https://www.zabbix.com/cn/download_agents
Linux安装包,需选择对应系统:https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=centos&os_version=9&components=agent_2&db=&ws=
本文的环境是7.0 LTS 7.0.3,你可以根据实际情况选择,版本建议选择agent2,功能、性能都好一些。
以下是两种常用系统的安装流程:
4.1 Windows
-
下载安装包
https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.3/zabbix_agent2-7.0.3-windows-amd64-openssl.msi
-
安装agent2
-
hostname自动生成,不需要修改,填写zabbix服务器IP,勾选添加agent路径到PATH
-
-
安装完成
-
防火墙开放10050端口,安装时会自动添加
4.2 CentOS
-
防火墙开放10050端口
firewall-cmd --zone=public --add-port=10050/tcp --permanent firewall-cmd --reload
-
安装zabbix源
-
(按需)如果之前安装了epel源,需要在epel源中排除zabbix,确保使用Zabbix源安装
#编辑epel源配置文件 vim /etc/yum.repos.d/epel.repo #在[epel]下添加如下语句 excludepkgs=zabbix*
-
安装zabbix官方源
#安装Zabbix官方源 rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm #清理缓存 yum clean all
-
-
安装agent2
yum install zabbix-agent2 zabbix-agent2-plugin-*
-
配置agent2(被动模式,适用内网环境:服务器/客户端在同一网络中)
vim /etc/zabbix/zabbix_agent2.conf #被动模式,仅需要配置Server:填写zabbix服务器IP Server=192.168.1.1
-
启动服务
systemctl restart zabbix-agent2 systemctl enable zabbix-agent2
5 Zabbix中添加客户端
5.1 登录zabbix,找到监测-主机
5.2 创建主机(被动模式)
-
主机名:填写IP地址或主机名
-
模板根据系统类型选择:
- Windows选择:Windows by Zabbix agent
- Liunx选择:Linux by Zabbix agent
- 群组:自行选择,可以用自带的,也可以新建
- Interfaces:点击“添加”,选择“客户端”,填写客户端IP地址
5.3 添加完成
ZBX图标变为绿色,表示添加成功
5.4 查看数据
点击最新数据,能看到数据表示监控成功