17.4 Zabbix 监控(基于 PostgreSQL)
最后更新于
最后更新于
zabbix7-server 是服务器端。负责接收、处理监控数据,应运行在监控服务器上。
pkg 安装会安装多余的 MySQL(且会捆绑死),故使用 Ports 安装。
# cd /usr/ports/net-mgmt/zabbix7-server/
# make config
按如图配置,选中 PGSQL
后按回车键:
# make install clean
安装:
# pkg install postgresql16-server postgresql16-client
或
# cd /usr/ports/databases/postgresql16-server/ && make install clean
# cd /usr/ports/databases/postgresql16-client/ && make install clean
zabbix7-frontend 是 web 控制前端。
# pkg ins zabbix7-frontend-php83
上述安装过程会自动安装 PHP,本文中安装的版本是 PHP8.3(写作本文时 PHP8.4 会报错),具体可用版本可以到 zabbix7-frontend 看一下。
或者:
# cd /usr/ports/net-mgmt/zabbix7-frontend/
# make install clean
注意 PHP 版本:
# pkg ins php83-pdo_pgsql php83-pgsql
或
# cd /usr/ports/databases/php83-pdo_pgsql/ && make install clean
# cd /usr/ports/databases/php83-pgsql/ && make install clean
zabbix7-agent 负责数据采集,安装在被监控的服务器上。
# pkg install zabbix7-agent
或者
# cd /usr/ports/net-mgmt/zabbix7-agent/
# make install clean
# pkg install nginx
# cd /usr/ports/www/nginx/
# make install clean
# service zabbix_server enable
# service zabbix_agentd enable
# service postgresql enable
# service nginx enable
# service php_fpm enable
初始化数据库
# service postgresql initdb # 初始化数据库
# su - postgres # 切换到数据库用户
$ /usr/local/bin/pg_ctl -D /var/db/postgres/data16 -l logfile start # 初始化服务
$ cd /usr/local/share/zabbix7/server/database/postgresql/
$ psql
psql (16.8)
Type "help" for help.
template1=# create database zabbix; # 创建 zabbix 数据库
CREATE DATABASE
template1=# CREATE USER zabbix WITH PASSWORD 'z'; # 此处设置用户 zabbix 密码为 z
CREATE ROLE
postgres=# GRANT USAGE, CREATE on SCHEMA PUBLIC to zabbix; # 授权
GRANT
postgres=# GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix; # 在授予用户 zabbix 对 zabbix 数据库有所有权限
GRANT
postgres=# grant all on database zabbix to zabbix; # 授权
GRANT
postgres=# ALTER DATABASE zabbix owner to zabbix; # 授权
ALTER DATABASE
postgres=# \q
必须退出再继续:
$ psql -U zabbix zabbix # 使用用户账户 zabbix 登录到数据库 zabbix
psql (16.8, server 16.7)
Type "help" for help.
zabbix=> \i schema.sql # 导入数据库,下同
CREATE TABLE
CREATE INDEX
CREATE TABLE
CREATE INDEX
CREATE TABLE
……省略……
zabbix=> \i images.sql
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
……省略……
zabbix=> \i data.sql
START TRANSACTION
INSERT 0 4
INSERT 0 1
INSERT 0 2
……省略……
zabbix=# \q # 退出
$ exit # 退出数据库用户
root@ykla:~ # # 回来了
Zabbix 的主要配置文件位于 /usr/local/etc/zabbix7/zabbix_server.conf
。
加入以下内容:
SourceIP=127.0.0.1
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=
DBName=zabbix
DBUser=zabbix
DBPassword=z
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
Zabbix Agent 配置文件位于 /usr/local/etc/zabbix7/zabbix_agentd.conf
加入以下内容:
LogFile=/var/log/zabbix/zabbix_agentd.log
SourceIP=127.0.0.1
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=ykla
Zabbix 前端配置文件模板位于 /usr/local/www/zabbix7/conf/zabbix.conf.php.example
。
复制模板:
# cp /usr/local/www/zabbix7/conf/zabbix.conf.php.example /usr/local/www/zabbix7/conf/zabbix.conf.php
编辑 /usr/local/www/zabbix7/conf/zabbix.conf.php
,将:
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '';
修改如下:
$DB['TYPE'] = 'POSTGRESQL'; #数据库改成这个
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'z'; # 这里是你的数据库密码
备份原有主要配置文件:
# cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.conf.simple
编辑 /usr/local/etc/nginx/nginx.conf
,清空原有内容,修改如下,
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /usr/local/www/zabbix7;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}}
/usr/local/etc/php.ini-production
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
编辑 /usr/local/etc/php.ini
:
找到 ;date.timezone =
修改为 date.timezone = Asia/Shanghai
(注意要删掉原来开头的 ;
)
找到 post_max_size = 8M
修改为 post_max_size = 16M
找到 max_execution_time = 30
,修改为 max_execution_time = 300
找到 max_input_time = 60
,修改为 max_input_time = 300
# service postgresql restart
# service php_fpm start
# service nginx start
# service zabbix_server start
# service zabbix_agentd start
Zabbix 的默认用户名和密码如下:
用户名:Admin
密码:zabbix
代理:/var/log/zabbix/zabbix_agentd.log
服务器端:/var/log/zabbix/zabbix_server.log
PHP 相关错误:/var/log/nginx/error.log
中文乱码
监控项不全
HTTP 等安全设置