从源码编译安装ZABBIX

从源码编译安装ZABBIX

首先,需要前往Download Zabbix sources 下载所需的源码包,本文中将使用6.0LTS版本,因为6.2并没有附带LTS长期支持的标识,而6.4仍处于开发中的状态。

下载

使用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官方推荐将守护进程以非特权用户运行,所以此处我们需要创建两个非特权用户zabbixzabbix-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.XMariaDB 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;

导入数据库

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语言环境

安装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网页安装步骤即可

  • 从源码包目录下的ui文件夹复制全部文件
  • 配置Nginx网站,将文件全部复制到网站根目录
  • 正常配置SSL等其他Web服务器设置即可

Agent2链接到主机配置

编辑/home/zabbix-agent/etc/zabbix_agent2.conf

搜索以下字段,并修改其值

Server=Server端IP地址	     #被动模式,表示哪些主机可以到本机取数据
ServerActive=Server端IP地址   #主动模式的server IP地址(客户端主动发送数据给服务端)
Hostname=主机名               #客户端的hostname(在web界面上显示的名字)

此时,被控端设置完成,但我们仍需要前往Web端配置一下主机自动注册规则

1.点击配置-动作-自动注册动作-创建动作

图片[1]-从源码编译安装ZABBIX-Rain's Blog

2.设置任务名称,添加一个条件,例如匹配主机名称中包含的字段

图片[2]-从源码编译安装ZABBIX-Rain's Blog

添加要执行的动作

图片[3]-从源码编译安装ZABBIX-Rain's Blog

添加完成后

图片[4]-从源码编译安装ZABBIX-Rain's Blog

然后,启动客户端的Agent2,等待一两分钟后,新的客户端将被自动添加到主机列表

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即可正常启用

一些小问题

  • configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h

缺少libopenipmi-dev 包,安装即可

apt install libopenipmi-dev
  • 前端界面未检测到Zh-CN语言包,即使已经正确安装了语言包与PHP gettext 扩展

重启PHP即可

  • [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

你的MySQL数据库链接地址不正确,请查看MySQL配置文件中socket段的路径,并将其值复制,修改/home/zabbix/etc/zabbix_server.conf 中的DBSocket=字段,删除前面的#并将路径粘贴到=后面,保存并重启即可

大问题:编译Agent2时出现make[3]: *** [Makefile:633: install-zabbix.com/cmd/zabbix_agent2] Error 1

此问题是由于机器本身通过yum/apt安装了golang包,请使用下面的命令完全卸载

apt-get remove golang
apt-get remove golang-go
apt-get remove --auto-remove golang-go

再从任意镜像下载最新版本安装即可,安装步骤可见上文

一些总结

ZABBIX的文档还是很详细的,有些细节点讲的也很清楚,不过还是有些意外问题会出来,大体来说编译还算顺利

而Grafana这玩意文档就没见到有中文,Docker镜像的持久化配置也很奇怪,总之就是非常的折磨

参考文章

© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏 分享
评论 抢沙发
头像
说点什么?
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容