前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从源码编译安装ZABBIX

从源码编译安装ZABBIX

原创
作者头像
SakuraRain
发布2023-02-08 19:30:10
1.1K0
发布2023-02-08 19:30:10
举报
文章被收录于专栏:Rain的随笔小记Rain的随笔小记

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

本文中使用的系统为Debian10 ARM64,请注意替换部分依赖的架构类型

下载

使用Wget下载,并使用tar命令进行解压

代码语言:javascript
复制
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

代码语言:javascript
复制
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

创建数据库与用户

代码语言:javascript
复制
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文件功能

代码语言:javascript
复制
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

代码语言:javascript
复制
mysql -uroot -p<password>
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;

编译

编译Server端

代码语言:javascript
复制
./configure --prefix=/home/zabbix --enable-server  --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

安装

代码语言:javascript
复制
make install

编译Agent2端

代码语言:javascript
复制
./configure --prefix=/home/zabbix-agent --enable-agent2 --enable-ipv6

安装

代码语言:javascript
复制
make install

此处我使用了Agent2,需要提前安装Go语言环境 如果按此命令编译,那么安装后的所有文件均在/home/zabbix 与/home/zabbix-agent目录下

安装Go语言支持

代码语言:javascript
复制
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 ,最尾端增加下行

代码语言:javascript
复制
export PATH=$PATH:/usr/local/go/bin

重载当前环境

代码语言:javascript
复制
source ~/.profile

验证是否安装成功

代码语言:javascript
复制
root@instance:~# go version
go version go1.20 linux/arm64

杂项配置

配置Server端Systemctl文件

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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网页安装步骤即可

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

Agent2链接到主机配置

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

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

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

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

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

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

添加要执行的动作

添加完成后

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

如果长时间无反应,请检查防火墙是否放行端口10050/10051

Grafana简单配置

Grafana是一个监控仪表系统,它只负责生成各种各样的展示图标与警报功能,并不关心数据来源,因为它支持市面上绝大部分的数据形式

这里我们使用Docker简化部署过程

代码语言:javascript
复制
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 包,安装即可

代码语言:javascript
复制
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包,请使用下面的命令完全卸载

代码语言:javascript
复制
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大问题:编译Agent2时出现make3: *** Makefile:633: install-zabbix.com/cmd/zabbix_agent2 Error 1
  • 此问题是由于机器本身通过yum/apt安装了golang包,请使用下面的命令完全卸载
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档