该篇内容为基于 Timescale 时序插件的方案。
正文
环境处理
如果您的环境为自己装的系统,需要去掉SELINUX和防火墙的因素干扰,由于为测试环境,所以做如下处理(如果为生产环境,谨慎关闭)
代码语言:javascript复制sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld && systemctl disable firewalld
环境
- CentOS: 8.5
- Zabbix 版本:6.0 beta2
- Postgresql:13
- Timescale:2.1
- Nginx:1.21
安装 Zabbix 国内 yum 源
本文采用清华源,国内源比较多,根据个人喜好自行更换。
代码语言:javascript复制cat <<EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
安装 Zabbix Server、前端、agent
本文的 agent为 agent2,可以自行替换。
代码语言:javascript复制dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 -y
安装数据库
1、安装 Postgresql 源。
代码语言:javascript复制dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y
2、替换为国内源。
代码语言:javascript复制sed -i "s@https://download.postgresql.org/pub@https://mirrors.tuna.tsinghua.edu.cn/postgresql@g" /etc/yum.repos.d/pgdg-redhat-all.repo
3、禁用内置 Postgresql 版本(CentOS 7 无需操作)
代码语言:javascript复制dnf -qy module disable postgresql
4、安装 Postgresql 。
代码语言:javascript复制dnf install -y postgresql13-server
5、初始化并启动数据库
代码语言:javascript复制/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl enable postgresql-13
systemctl start postgresql-13
安装 Timescale 插件
1、安装 timescale 源.
代码语言:javascript复制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
2、安装 Timescale.
代码语言:javascript复制dnf install timescaledb-2-postgresql-13 -y
3、加载 Timescale 插件。
代码语言:javascript复制timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config
4、重启数据库
代码语言:javascript复制systemctl restart postgresql-13
配置数据库
进入 tmp 目录是避免使用 postgres 用户出现无权限报错(实际执行成功)。
代码语言:javascript复制cd /tmp
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
5、开启 Timescale 插件
代码语言:javascript复制echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
导入 Zabbix 数据文件
代码语言:javascript复制zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
导入时序插件数据文件
代码语言:javascript复制cat /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql | sudo -u zabbix psql zabbix
配置 Postgresql 数据库
1、修改配置文件 如果是非 All-In-One 环境,这里必须进行调整,如果是这里可选,根据自身环境分析。另外在利用 timescale 插件初始化 Postgresql 数据库会更改数据库配置文件,除了监听地址改为 *,其他的不要改变。
代码语言:javascript复制vim /var/lib/pgsql/13/data/postgresql.conf
2、修改权限文件 这里仅仅需要将 host 部分的验证方式改为 md5(用户名/密码方式),如果数据库分开部署,需要将IP地址改为使用库的IP地址,或者直接设置为0.0.0.0
代码语言:javascript复制vim /var/lib/pgsql/13/data/pg_hba.conf
3、重启数据库
代码语言:javascript复制systemctl restart postgresql-13
配置 Zabbix Server 配置文件
这里需要注意的是数据库部分和自身配置关系很大,如果用户名密码非配置文件默认,则需要进行调整,文中数据库实例名称为zabbix,用户名为zabbix,密码为xiaoyu123,所以仅调整数据库密码。
代码语言:javascript复制vim /etc/zabbix/zabbix_server.conf
Nginx 配置
1、将默认Nginx配置的端口部分加上注释。如下图,已经将80端口配置加上注释了.
代码语言:javascript复制vim /etc/nginx/nginx.conf
2、将 nginx 的 conf.d 里的zabbix.conf的端口注释取消,如下图所示。
代码语言:javascript复制vim /etc/nginx/conf.d/zabbix.conf
启动 Zabbix 相关服务
代码语言:javascript复制systemctl start zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
前端配置
进入首页,IP访问即可,无需携带后缀。
数据库连接部分需要注意的是Database schema,为public。
默认用户名依然为 Admin/zabbix
效果图
写在最后
该版本相比 mysql 版本还是优化了很多的,包括数据压缩比、以及读写数据能力确实提高了很对,不过具体效果怎么样大家可以自行测试,如果不太熟悉切勿上生产。