本教程使用centos7 搭建,因为8和9官网都有编译好的二进制安装包,centos7的没有,只能使用源码编译安装方式,后端数据库使用PostgreSQL 15 + TimescaleDB 2.15.2 时序数据库。
TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可自动将数据分为基于时间的块,以支持更快的大规模的监控性能。能以更好的性能去删除过期的监控数据和进行实时压缩数据,可节省空间。
配置PostgreSQL 15 + TimescaleDB 2.15.2 源
# 配置Postgresql 源
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{centos})-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
下载下配置文件后,里面有pgsql12-15版本的源,因为zabbix7.0要求PostgreSQL 13.0-16.X yum源里最高15,所以我们这里使用PostgreSQL15
修改pgdg-redhat-all.repo
```shell
[pgdg15]
name=PostgreSQL 15 for RHEL / CentOS 7 - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL7
# 配置TimescaleDB源
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
yum clean all
yum makecache
安装postgresql 和 timescaledb
yum install timescaledb-2-postgresql-15 -y
# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
# 调优参数,由于我对参数并不知道如何设置,这里一路yes。
timescaledb-tune --pg-config /usr/pgsql-15/bin --max-conns=256
# 配置开机启动,并启动
systemctl enable --now postgresql-15
systemctl status postgresql-15
# 检查状态是否正常
ss -an | grep 5432
# 进入psql配置管理员密码,并退出。
sudo -u postgres psql
\password postgres
\q
# 创建zabbix用户并配置密码
sudo -u postgres createuser --pwprompt zabbix
# 创建zabbix数据库并指定所属用户为zabbix.
sudo -u postgres createdb -O zabbix zabbix
# zabbix数据库开启timescaledb扩展
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
# 导入timescaledb sql
cat /root/zabbix-7.0.6/database/postgresql/schema.sql | sudo -u zabbix psql zabbix
cat /root/zabbix-7.0.6/database/postgresql/data.sql | sudo -u zabbix psql zabbix
cat /root/zabbix-7.0.6/database/postgresql/images.sql | sudo -u zabbix psql zabbix
到这数据库安装完成
安装php+nginx
我这里使用lnmp进行的安装,安装过程不安装MySQL即可,这里有个问题gcc-c++版本低的问题,安装php8.3失败了,改为安装的php8.0 这里有个问题,php默认的安装没有开启pgsql的扩展(php -m查看),所以需要手动添加扩展。
安装php pgsql.so pgsql_pdo.so扩展
# 源码包目录,解压后进入扩展的目录
cd /root/lnmp2.1-full/src/php-8.0.30/ext/pgsql_pdo
# 在该源码目录下使用phpize工具
phpize
// 输出结果类似
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
// 配置编译,--with-php-config参数为php-config的文件目录,--with-pdo-pgsql参数为pg_config目录
// 官方文档:http://php.net/manual/en/ref.pdo-pgsql.php
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-pgsql=/usr/pgsql-15/bin/
// 配置时可能需要安装libpq插件
yum install libpqxx-dev
// 安装完libpqxx-dev插件后,重新配置,成功后进行编译
make&&make install
// 完成后,输出类似如下
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20200930
pgsql 也是一样的编译安装,然后修改php.ini
vim /usr/local/php/etc/php.ini,
去掉注释
extension=pdo_pgsql
extension=pgsql
编译安装zabbix-7.0.6
#安装依赖
yum -y install libxml2-devel net-snmp net-snmp-devel golang libcurl-devel OpenIPMI-devel -y
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-postgresql=/usr/pgsql-15/bin/pg_config --enable-webservice --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <https://www.zabbix.com> *
***********************************************************
这里安装过程存在以下问题:
编译报错,代码中使用了 EVDNS_BASE_INITIALIZE_NAMESERVERS 这个宏或常量,但是编译器找不到它的定义
你正在使用的 libevent 版本可能不包含 EVDNS_BASE_INITIALIZE_NAMESERVERS这个宏或常量
scoverer_async.o `test -f 'discoverer_async.c' || echo './'`discoverer_async.c
discoverer_async.c: In function ‘discovery_async_poller_dns_init’:
discoverer_async.c:39:76: error: ‘EVDNS_BASE_INITIALIZE_NAMESERVERS’ undeclared (first use in this function)
if (NULL == (poller_config->dnsbase = evdns_base_new(poller_config->base, EVDNS_BASE_INITIALIZE_NAMESERVERS)))
^
discoverer_async.c:39:76: note: each undeclared identifier is reported only once for each function it appears in
编译安装新版本libevent
卸载libevent
yum remove libevent
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar xf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable/
./configure
make && make install
再次执行make
# make clean
# make install
编译报错,checks_snmp.c 文件中遇到了两个未声明的标识符错误:NETSNMP_CALLBACK_OP_SEC_ERROR 和 NETSNMP_CALLBACK_OP_RESEND。这些标识符通常是 Net-SNMP 库中定义的常量,当前 net-snmp的库中可能不包含
cc -std=gnu11 -DHAVE_CONFIG_H -I../../../include/common -I../../../include -I/usr/include/libxml2 -I/usr/local/include -I/usr/lib64/perl5/CORE -I. -I/usr/include -g -O2 -MT libzbxpoller_a-checks_snmp.o -MD -MP -MF .deps/libzbxpoller_a-checks_snmp.Tpo -c -o libzbxpoller_a-checks_snmp.o `test -f 'checks_snmp.c' || echo './'`checks_snmp.c
checks_snmp.c: In function ‘asynch_response’:
checks_snmp.c:2652:8: error: ‘NETSNMP_CALLBACK_OP_SEC_ERROR’ undeclared (first use in this function)
case NETSNMP_CALLBACK_OP_SEC_ERROR:
checks_snmp.c:2652:8: note: each undeclared identifier is reported only once for each function it appears in
checks_snmp.c:2656:8: error: ‘NETSNMP_CALLBACK_OP_RESEND’ undeclared (first use in this function)
case NETSNMP_CALLBACK_OP_RESEND:
编译安装新版本net-snmp
#先卸载刚才安装的旧版net-snmp
# yum autoremove -y net-snmp*
# curl -LO https://jaist.dl.sourceforge.net/project/net-snmp/net-snmp/5.9.4/net-snmp-5.9.4.zip
# unzip net-snmp-5.9.4.zip
# cd net-snmp-5.9.4
# make clean
# ./configure --prefix=/usr/local/net-snmp --with-default-snmp-version="2"
# make &&make install
#创建软连接
[root@zabbix01 net-snmp-5.9.4]# ln -s /usr/local/net-snmp/lib/* /usr/lib64/
[root@zabbix01 net-snmp-5.9.4]# ln -s /usr/local/net-snmp/lib/pkgconfig/* /usr/lib64/pkgconfig/
[root@zabbix01 net-snmp-5.9.4]# ln -s /usr/local/net-snmp/include /usr/include/net-snmp
[root@zabbix01 net-snmp-5.9.4]# ln -s /usr/local/net-snmp/bin/* /usr/bin/
再次执行make,前面卸载net-snmp的时候,OpenIPMI-devel也被卸载掉了,重装一下
# yum -y install OpenIPMI-devel
# make clean
# make install
zabbix_server安装成功
修改ui配置
vim zabbix.conf.php
$DB['TYPE'] = 'POSTGRESQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '5432';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=5432
添加zabbix_server zabbix_agent 服务
cp /root/zabbix-7.0.6/misc/init.d/fedora/core/zabbix_* /etc/init.d/
#这两需要修改自己真实的zabbix安装目录
# Zabbix-Directory
BASEDIR=/usr/local/zabbix
启动服务
service zabbix_server start
service zabbix_agentd start
service php-fpm start
service nginx start
查看日志有无报错信息
评论列表,共 0 条评论
暂无评论