首先,需要前往Download Zabbix sources 下载所需的源码包,本文中将使用6.0LTS版本,因为6.2并没有附带LTS长期支持的标识,而6.4仍处于开发中的状态。
本文中使用的系统为Debian10 ARM64,请注意替换部分依赖的架构类型
下载
使用Wget下载,并使用tar命令进行解压
wget -c https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.13.tar.gz
tar -zxvf zabbix-6.0.13.tar.gz
创建用户
由于Zabbix官方推荐将守护进程以非特权用户运行,所以此处我们需要创建两个非特权用户zabbix与zabbix-agent
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /home/zabbix zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /home/zabbix-agent zabbix-agent
配置数据库
Zabbix 6.0要求MySQL 8.0.X或MariaDB 10.5.00-10.8.X 本文我们采用MariaDB10.5.10
创建数据库与用户
mysql -uroot -p<password>
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> quit;
导入数据库
对于宝塔面板用户,请不要使用面板的导入SQL文件功能
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# 如果您正在为 Zabbix 代理创建数据库,请在此处停止
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> zabbix < data.sql
成功导入schema后,可以禁用 log_bin_trust_function_creators
mysql -uroot -p<password>
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
编译
编译Server端
./configure --prefix=/home/zabbix --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
安装
make install
编译Agent2端
./configure --prefix=/home/zabbix-agent --enable-agent2 --enable-ipv6
安装
make install
此处我使用了Agent2,需要提前安装Go语言环境 如果按此命令编译,那么安装后的所有文件均在/home/zabbix 与/home/zabbix-agent目录下
安装Go语言支持
wget -c https://go.dev/dl/go1.20.linux-arm64.tar.gz
tar -C /usr/local -xzf go1.20.linux-arm64.tar.gz
编辑/etc/profile ,最尾端增加下行
export PATH=$PATH:/usr/local/go/bin
重载当前环境
source ~/.profile
验证是否安装成功
root@instance:~# go version
go version go1.20 linux/arm64
杂项配置
配置Server端Systemctl文件
vi /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
User=zabbix
Group=zabbix
Environment="CONFFILE=/home/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/home/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
配置Agent2 Systemctl文件
vi /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
User=zabbix-agent
Group=zabbix
Environment="CONFFILE=/home/zabbix-agent/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=simple
Restart=on-failure
PIDFile=/tmp/zabbix_agent2.pid
KillMode=control-group
ExecStart=/home/zabbix-agent/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
前端控制台配置
前端控制台其实是单独的一个PHP程序,与zabbix的运行相互独立,你只需要按照正常的PHP网页安装步骤即可
Agent2链接到主机配置
编辑/home/zabbix-agent/etc/zabbix_agent2.conf
搜索以下字段,并修改其值
Server=Server端IP地址 #被动模式,表示哪些主机可以到本机取数据
ServerActive=Server端IP地址 #主动模式的server IP地址(客户端主动发送数据给服务端)
Hostname=主机名 #客户端的hostname(在web界面上显示的名字)
此时,被控端设置完成,但我们仍需要前往Web端配置一下主机自动注册规则
1.点击配置-动作-自动注册动作-创建动作
2.设置任务名称,添加一个条件,例如匹配主机名称中包含的字段
添加要执行的动作
添加完成后
然后,启动客户端的Agent2,等待一两分钟后,新的客户端将被自动添加到主机列表
如果长时间无反应,请检查防火墙是否放行端口10050/10051
Grafana简单配置
Grafana是一个监控仪表系统,它只负责生成各种各样的展示图标与警报功能,并不关心数据来源,因为它支持市面上绝大部分的数据形式
这里我们使用Docker简化部署过程
docker run -d \
-p 3000:3000 \
--name=grafana \
-v /home/grafana/lib:/var/lib/grafana \
-v /home/grafana/etc/grafana.ini:/etc/grafana/grafana.ini \
-v /home/grafana/log:/var/log/grafana \
-e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app" \
grafana/grafana-oss
安装完成后,使用Nginx反向代理,默认地址是127.0.0.1:3000(此处不再赘述反向代理的配置)
首次安装时的用户名与密码均为admin,在第一次登录成功后会让你重设密码
如果你使用的是我上面的命令,那么zabbix的扩展已经安装完毕,进入控制台后点左下角齿轮图标-Plugins- 搜索zabbix-点击进入插件-点击enable即可正常启用
一些小问题
缺少libopenipmi-dev 包,安装即可
apt install libopenipmi-dev
重启PHP即可
你的MySQL数据库链接地址不正确,请查看MySQL配置文件中socket段的路径,并将其值复制,修改/home/zabbix/etc/zabbix_server.conf 中的DBSocket=字段,删除前面的#并将路径粘贴到=后面,保存并重启即可
apt-get remove golang
apt-get remove golang-go
apt-get remove --auto-remove golang-go
再从任意镜像下载最新版本安装即可,安装步骤可见上文
一些总结
ZABBIX的文档还是很详细的,有些细节点讲的也很清楚,不过还是有些意外问题会出来,大体来说编译还算顺利
而Grafana这玩意文档就没见到有中文,Docker镜像的持久化配置也很奇怪,总之就是非常的折磨
完整样式的文章请前往我的博客 https://blog.im.ci/study-notes/linux-notes/940/
参考文章
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。