zabbix 6.0源码安装

zabbix 源码安装

麒麟系统,zabbix 6.0源码安装,数据库使用 pgsql,前端使用nginx,php

环境:
$ cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"

zabbix6.0LTS稳定版下载地址 选择Zabbix Sources 源码包后缀带LTS为稳定版,其他版本下载在Unsupported Version中下载。

postgresql下载地址 源码下载

nginx下载地址

一, 编译安装pgsql
  1. 安装pg前置依赖
yum install readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel perl-devel gcc gcc-c++
  1. 编译安装指定路径
[root@0006 data]# tar -vxzf postgresql-12.13.tar.gz && cd postgresql-12.13
[root@0006 data]# ./configure --prefix=/data/pgsql
[root@0006 data]# make
[root@0006 data]# make install
  1. 创建pg用户和组
[root@0006 data]# groupadd postgres;
[root@0006 data]# useradd postgres -g postgres;echo "6j63#3GbTUqkY" |passwd --stdin postgres;chage -M 99999 postgres;
  1. 创建data目录,并赋权
[root@0006 data]# mkdir -p /data/pgsql/data
[root@0006 data]# chown postgres:postgres -R /data/pgsql
  1. 写入环境变量
echo "export PGHOME=/data/pgsql
export PGDATA=/data/pgsql/data
PATH=$PATH:$PGHOME/bin
export PATH" >> /etc/profile
  1. 创建zabbix库和zabbix用户,并导入zabbix表结构
su - postgresql
pgsql
postgres=# CREATE ROLE zabbix WITH LOGIN PASSWORD 'PwdofEip@2019';
CREATE ROLE
postgres=# CREATE DATABASE zabbix;
CREATE DATABASE
postgres=# GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
GRANT
postgres=# exit


# 第三行创建用户并指定密码,第五行创建zabbix数据库,第七行赋予zabbix用户zabbix数据库的所有权限。
# 后面退出pgsql,重新指定zabbix用户来登录。
----------
# 查看zabbix库的权限
zabbix=> \l
   Name    |  Owner    
-----------+----------
 postgres  | postgres |   
 template0 | postgres | 
           |          |    
 template1 | postgres |   
           |          | 
 zabbix    | postgres |  
 
# zabbix库的所有者是postgres,所以要先修改zabbix的所有者权限,再导入数据库。
zabbix=>    ALTER DATABASE zabbix OWNER TO zabbix;
# 修改zabbix数据库的所有者为zabbix。
$ psql -U zabbix -W
Password: 
psql (16.0)
Type "help" for help.
zabbix=> 

导入zabbix自带的sql
zabbix=> \i /data/zabbix-6.0.30/database/postgresql/schema.sql
zabbix=> \i /data/zabbix-6.0.30/database/postgresql/images.sql
zabbix=> \i /data/zabbix-6.0.30/database/postgresql/data.sql 
  1. 切换用户启动pgsql

    initdb是初始化pg,初始化后再/usr/local/pgsql/data下会有配置文件出现。

    pg_ctl是启动

[root@VM-16-11-centos ~]# su - postgres
[root@VM-16-11-centos ~]# /data/pgsql/bin/initdb -D /data/pgsql/data
[root@VM-16-11-centos ~]# /data/pgsql/bin/pg_ctl -D /data/pgsql/data -l logfile start
  1. 检查是否启动成功
[postgres@0006 ~]$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data status
pg_ctl: server is running (PID: 9966)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data"

  1. pg_hba.conf配置,#默认只允许当前服务器连接pgsql
$ cat pg_hba.conf |grep ^[0-Z]
local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
host    all             all             ::1/128                 trust
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

  1. postgresql.conf配置 $ listen_addresses 修改为 listen_addresses = ‘*’
$ cat postgresql.conf |grep ^[0-Z]
listen_addresses = '*'          # what IP address(es) to listen on;
max_connections = 100                   # (change requires restart)
shared_buffers = 128MB                  # min 128kB
dynamic_shared_memory_type = posix      # the default is the first option
max_wal_size = 1GB
min_wal_size = 80MB
log_timezone = 'Asia/Shanghai'
datestyle = 'iso, ymd'
timezone = 'Asia/Shanghai'
lc_messages = 'zh_CN.UTF-8'                     # locale for system error message
lc_monetary = 'zh_CN.UTF-8'                     # locale for monetary formatting
lc_numeric = 'zh_CN.UTF-8'                      # locale for number formatting
lc_time = 'zh_CN.UTF-8'                         # locale for time formatting
default_text_search_config = 'pg_catalog.simple'


二,编译安装zabbix
  1. 安装zabbix前置依赖
$ yum install -y net-snmp-devel OpenIPMI-devel.x86_64 ibevent-devel curl-devel 

  1. 创建zabbix用户
  127  2024-05-22 15:17:41 root# groupadd zabbix
  128  2024-05-22 15:18:00 root# useradd -g zabbix -M -s /sbin/nologin zabbix
  129  2024-05-22 15:18:07 root# passwd zabbix

  1. 编译zabbix安装指定路径,指定pg_config路径。
./configure --prefix=/data/zabbix --enable-server --enable-agent --with-postgresql=/data/pgsql/bin/pg_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

当然可以,下面是对你提供的 `./configure` 命令中每个参数的详细解释:
1. `--prefix=/usr/local/zabbix`:
- 指定 Zabbix 的安装前缀目录。这意味着所有 Zabbix 的程序和文件将被安装在这个路径下。
2. `--enable-server`:
- 启用 Zabbix 服务器功能。如果你打算运行 Zabbix 服务器,你需要启用这个选项。
3. `--enable-agent`:
- 启用 Zabbix 代理功能。如果你打算运行 Zabbix 代理,你需要启用这个选项。
4. `--with-postgresql=/data/pgsql/bin/pg_config`:
- 指定 PostgreSQL 配置文件的位置。这里的路径指向 `pg_config` 工具,这个工具可以提供 PostgreSQL 的配置信息和路径。
5. `--enable-ipv6`:
- 启用 IPv6 支持。如果你的系统支持 IPv6,并且你希望 Zabbix 支持 IPv6,你需要启用这个选项。
6. `--with-net-snmp`:
- 指定 Net-SNMP(网络管理系统)的安装路径。这通常通过 `net-snmp-config` 工具自动检测,但如果需要手动指定,可以使用这个参数。
7. `--with-libcurl`:
- 指定 libcurl(一个支持多种协议的客户端-服务器程序库)的安装路径。这通常通过 `libcurl-config` 工具自动检测,但如果需要手动指定,可以使用这个参数。
8. `--with-libxml2`:
- 指定 libxml2(一个用于处理 XML 数据的 C 库)的安装路径。这通常通过 `libxml2-config` 工具自动检测,但如果需要手动指定,可以使用这个参数。
9. `--with-openipmi`:
- 指定 OpenIPMI(开放 IPMI 接口)的安装路径。这通常通过 `openipmi-config` 工具自动检测,但如果需要手动指定,可以使用这个参数。
这个配置命令告诉 `./configure` 脚本你想要安装 Zabbix 服务器和代理,并连接到 PostgreSQL 数据库。此外,它还启用了对 IPv6、Net-SNMP、libcurl、libxml2 和 OpenIPMI 的支持。如果你不需要某些功能(例如,如果你不打算运行 Zabbix 代理或使用特定的库),你可以相应地省略或禁用这些选项。

  1. 赋权给zabbix目录为zabbix用户权限
chown zabbix:zabbix -R /data/zabbix

  1. 修改zabbix_server.conf配置文件
LogFile=/data/zabbix/logs/zabbix_server.log
DBName=zabbix_server #数据库名称
DBSchema= #数据库访问协议
DBUser=zabbix #数据库用户名称
DBPassword=123456 #数据库用户密码
DBPort=5432 #数据库端口
  1. 配置zabbix.services
$ cat /usr/lib/systemd/system/zabbix-server.service
[Service]
Type=simple
ExecStart=/data/zabbix/sbin/zabbix_server -c /data/zabbix/etc/zabbix_server.conf
User=zabbix


三,编译安装nginx

下载地址在文档最前面

  1. 安装前置依赖
yum -y install gcc gcc-c++ make pcre pcre-devel openssl openssl-devel zlib zlib-devel

  1. 编译安装指定目录
./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module

make && make install

  1. 修改nginx.conf配置
        location / {
            root   /data/nginx/html/zabbix;
            try_files $uri $uri/ /index.php?query_string;
            index index.php index.html index.htm;
        }
        location ~ \.php$ {
            root   /data/nginx/html/zabbix;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
          #  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


  1. 把zabbix的ui文件传到nginx配置目录下。
cp -r /data/zabbix-6.0.30/ui  /data/nginx/html/zabbix/

  1. 启动nginx
/data/nginx/sbin/nginx -t
/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf

四,编译安装php
  1. 安装前置依赖
yum  install php-bcmath php-gd php-xml php-mbstring php-mysqlnd  php-json libonig-dev oniguruma-devel  php-pgsql openldap openldap-devel

  1. 编译安装 php
./configure --prefix=/usr/local/php --with-ldap=shared --enable-fpm --enable-gd --enable-ftp --with-freetype --with-jpeg --with-iconv --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --with-pdo-pgsql=/data/pgsql --with-pgsql 
# 在编译ldap的时候平凡报错。后面指定--with-ldap=shared解决。
# 后来在检查时感觉不编译此参数也可以。

  1. 创建php配置文件
cp /data/package/php-8.3.7/php.ini-production /usr/local/php/etc/php.ini
cp /data/package/php-8.3.7/sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

  1. 配置php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai
# 修改php.ini的这些参数,大部分已存在,不能直接复制添加。需要修改参数。

  1. 配置php下的var目录权限为nginx
chown nginx:nginx -R /usr/local/php/var

  1. 测试并启动php
/usr/local/php/sbin/php-fpm -t -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf 
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
#第一行为测试,第二行为启动命令

五,zabbix_agent 源码安装
  1. 源码编译安装(server端的服务器上面在编译安装时顺带安装了agent,)

    其他服务器只需要但端盖安装agent即可。

# tar -xzvf zabbix-6.0.30.tar.gz
# cd /data/zabbix-6.0.30
# ./configure --prefix=/data/zabbix/ --enable-agent
# make
# make install

# 编译时只加-- enable-agent,那么在sbin目录下只会生成zabbix_agent,没有zabbix_server

  1. 修改zabbix_agent.conf配置文件
vim /data/zabbix/etc/zabbix_agent.conf
ListenPort=10050
Server=your_zabbix_server_ip # 
ServerActive=your_zabbix_server_ip
#下面两个都是zabbix_server端的ip

  1. 启动zabbix_agent
/data/zabbix/sbin/zabbix_agent -c /data/zabbix/etc/zabbix_agent.conf

六,安装遇到的问题与解决方案
  1. zabbix_server 启动报错
cannot use database "zabbix": database is not a Zabbix database
# 报错提示没有这个zabbix库,但实际已经存在zabbix库了。并且zabbix库的所有者为zabbix。有权限访问。
#解决办法:
# navicat使用zabbix登录pgsql,zabbix库下的public的所有者为zabbix
#1、修改schema所有者   ALTER SCHEMA PUBLIC OWNER TO zabbix;

#2、schema下面所有表修改所有者
#select 'ALTER TABLE ' || tablename || ' OWNER TO zabbix;'  from pg_tables where #schemaname='public'
#执行生成的语句

  1. zabbix启动报错
3982829:20240528:202426.097 Starting Zabbix Server. Zabbix 6.0.30 (revision 680df722d6b).
3982829:20240528:202426.097 ****** Enabled features ******
3982829:20240528:202426.097 SNMP monitoring:           YES
3982829:20240528:202426.097 IPMI monitoring:           YES
3982829:20240528:202426.097 Web monitoring:            YES
3982829:20240528:202426.097 VMware monitoring:         YES
3982829:20240528:202426.097 SMTP authentication:       YES
3982829:20240528:202426.097 ODBC:                       NO
3982829:20240528:202426.097 SSH support:                NO
3982829:20240528:202426.097 IPv6 support:              YES
3982829:20240528:202426.097 TLS support:                NO
3982829:20240528:202426.097 ******************************
3982829:20240528:202426.097 using configuration file: /data/zabbix/etc/zabbix_server.conf
3982829:20240528:202426.126 current database version (mandatory/optional): 06000000/06000044
3982829:20240528:202426.126 required mandatory version: 06000000
3982838:20240528:202426.160 starting HA manager
3982838:20240528:202426.165 HA manager started in active mode
3982829:20240528:202426.166 server #0 started [main process]
3982840:20240528:202426.166 server #1 started [service manager #1]
3982841:20240528:202426.167 server #2 started [configuration syncer #1]
3982829:20240528:202426.197 Got signal [signal:15(SIGTERM),sender_pid:1,sender_uid:0,reason:0]. Exiting ...
3982838:20240528:202427.178 HA manager has been paused
3982838:20240528:202427.180 HA manager has been stopped
3982829:20240528:202427.187 syncing trend data...
3982829:20240528:202427.187 syncing trend data done
3982829:20240528:202427.190 Zabbix Server stopped. Zabbix 6.0.30 (revision 680df722d6b)

# 无明显报错,只能看到是系统强制停止zabbix进程。使用的是systemctl start zabbix-server.service
# 百度找很久找不到解决办法,突发其想使用命令来启动/data/zabbix/sbin/zabbix_server -c /data/zabbix/etc/zabbix_server.conf 启动成功了。
# 重新 编写zabbix-server.service 并且重新加载等操作。依然不行。

  1. zabbix登录失败,原因最初使用pg12.13 zabbix不支持12版本。最低pg13版本。卸载pg12,重新安装pg13后发现zabbix登录不上了,密码不对或者禁止登录。

    解决办法:重新安装zabbix-server,猜测安装是有顺序的。在编译安装zabbix时pgsql会生成一个账号密码为Admin/zabbix的登录用户。原本pg12版本是存在Admin用户的。卸载重新安装pg16后缺少这个用户所以无法登录。

七,zabbix使用手册

zabbix使用手册

推荐使用官方手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值