Zabbix进阶11--在ARM下安装Zabbix server

安装nginx

安装yum-utils

1
sudo yum install yum-utils

创建nginx官方镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装nginx

1
yum install nginx

安装PostgreSQL+TimescaleDB

PostgreSQL安装

Install the repository RPM:

1
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Disable the built-in PostgreSQL module:

1
sudo dnf -qy module disable postgresql

Install PostgreSQL:

1
sudo dnf install -y postgresql17-server

Optionally initialize the database and enable automatic start:

1
2
3
4
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
sudo systemctl enable postgresql-17
sudo systemctl start postgresql-17
sudo systemctl status postgresql-17

TimescaleDB安装:

添加 TimescaleDB 存储库

1
2
3
4
5
6
7
8
9
10
11
12
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$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

更新本地仓库列表

1
sudo yum update

安装 TimescaleDB

1
sudo yum install timescaledb-2-postgresql-17

为 TimescaleDB 优化 PostgreSQL 实例

这个命令执行后全部输入Yes会将配置修改为推荐的设置

1
sudo timescaledb-tune --pg-config=/usr/pgsql-17/bin/pg_config

重启Postgresql:

1
2
sudo systemctl restart postgresql-17
sudo systemctl status postgresql-17

以 postgres 身份登录 PostgreSQL

1
sudo -u postgres psql

设置 postgres 的密码

1
\password postgres

设置密码后,键入 \q 退出

强制使用密码登录

配置认证方法:

在 pg_hba.conf 文件中配置认证方法。

这个文件通常位于 PostgreSQL 数据目录中

例如

1
/var/lib/pgsql/17/data/pg_hba.conf

你需要为相应的用户和数据库配置使用密码认证的方法。

例如,要允许所有用户使用密码认证登录,可以添加或修改以下行:

1
host    all             all             0.0.0.0/0               md5

这里 md5 表示使用 MD5 加密的密码进行认证。你也可以使用 scram-sha-256,这是 PostgreSQL 17 推荐的认证方法 。

重启 PostgreSQL 服务:

修改 pg_hba.conf 文件后,需要重启 PostgreSQL 服务以使更改生效。

在大多数系统上,你可以使用以下命令来重启服务:

1
sudo systemctl restart postgresql-17

或者根据你的系统环境使用相应的命令。

测试连接:使用新设置的密码测试连接,以确保配置正确。

可以使用 psql 命令行工具连接到数据库:

1
2
sudo -u postgres psql
psql -U postgres -h localhost -d postgres

系统会提示你输入密码,这时应该输入你为 postgres 用户设置的密码。

请注意,出于安全考虑,不建议在生产环境中使用 trust 方法,因为它允许任何用户无需密码即可连接到数据库。始终使用密码认证,并确保密码足够复杂,以防止未经授权的访问 。

创建初始数据库

在数据库主机上运行以下代码。

1
2
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix_db

切换到zabbix_db

1
\c zabbix_db

将 TimescaleDB 添加到数据库

1
CREATE EXTENSION IF NOT EXISTS timescaledb;

检查是否已安装 TimescaleDB

1
\dx

您将看到已安装扩展的列表:

1
2
3
4
5
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+---------------------------------------------------------------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
timescaledb | 2.17.2 | public | Enables scalable inserts and complex queries for time-series data (Community Edition)

查看分区情况

查看分区表的概览信息,可以查询timescaledb_information.hypertables视图。这将显示所有已创建的超表(即被转换为支持时间序列数据存储的表)的元数据。

1
SELECT * FROM timescaledb_information.hypertables;

postgresql启用socket连接:

1
2
3
4
/var/lib/pgsql/17/data/postgresql.conf

取消注释以下选项并重启:
unix_socket_directories = '/run/postgresql' # comma-separated list of directories

安装zabbix

安装Zabbix源

1
2
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpm
dnf clean all

切换PHP的DNF模块版本

1
dnf module switch-to php:8.2

安装Zabbix server, frontend, agent2

1
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2

安装Zabbix agent 2插件

1
2
3
dnf install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql

yum install zabbix-agent2-plugin-*

导入初始架构和数据,系统将提示您输入新创建的密码。

1
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix_db

源码安装zabbix导入初始架构和数据:

1
2
3
4
5
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix_db
# 如果您正在为 Zabbix 代理创建数据库,请在此处停止
cat images.sql | sudo -u zabbix psql zabbix_db
cat data.sql | sudo -u zabbix psql zabbix_db

对于新安装,运行 postgresql/timescaledb/schema.sql 脚本。 该脚本必须在使用初始模式/数据创建常规 PostgreSQL 数据库之后运行。

1
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix_db

为Zabbix server配置数据库

编辑配置文件

1
2
3
/etc/zabbix/zabbix_server.conf

DBPassword=password

启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

1
2
3
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
systemctl status zabbix-server zabbix-agent2 nginx php-fpm

报错解决:

1
2
报错信息
/usr/sbin/zabbix_server: /lib64/libpq.so.5: no version information available (required by /usr/sbin/zabbix_server)