从源码编译安装ZABBIX
首先,需要前往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网页安装步骤即可
- 从源码包目录下的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.点击配置-动作-自动注册动作-创建动作
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即可正常启用
一些小问题
- 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时出现make3: *** 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镜像的持久化配置也很奇怪,总之就是非常的折磨
完整样式的文章请前往我的博客 https://blog.im.ci/study-notes/linux-notes/940/
参考文章
- 3 从源代码安装 (zabbix.com)
- Run Grafana Docker image | Grafana documentation
- Zabbix agent2 インストール | サーバーレシピ (server-recipe.com)
- 七牛云 – Goproxy.cn
- #オリジナル Untitled – きのこ姫的插画 – pixiv
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的