CentOS7で最新版を使いたい場合はやはりソースからのコンパイル

ソースの取得先は https://www.zabbix.com/jp/download_sources から

zabbixユーザを作成

まずzabbixを稼働させるユーザを用意します.

[root@zabbix ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@zabbix ~]# getenforce
Disabled
 
[root@zabbix ~]# groupadd --system zabbix
[root@zabbix ~]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
[root@zabbix ~]# id zabbix
uid=997(zabbix) gid=995(zabbix) groups=995(zabbix)
 
[root@zabbix ~]#

postgreSQLの準備

zabbixはデータベースを使用しますので、ここではpostgreSQLをそのデータベースにします

[root@zabbix ~]# yum install postgresql-server postgresql-devel
 
(データベースを準備して稼働させます)
[root@zabbix ~]# PGSETUP_INITDB_OPTIONS="--encoding=UTF-8 --no-locale"  postgresql-setup initdb
[root@zabbix ~]# systemctl start postgresql && systemctl enable postgresql
 
(データベース内のユーザを作成します)
[root@zabbix ~]# sudo -u postgres createuser --pwprompt zabbix
 
(zabbix向けのデータベースを作成)
[root@zabbix ~]# sudo -u postgres createdb -O zabbix --locale=ja_JP.UTF-8 zabbix --template=template0
[root@zabbix ~]# sudo -u postgres psql -l
 
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | C           | C           |
 template0 | postgres | UTF8     | C           | C           | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | C           | C           | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 zabbix    | zabbix   | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
(4 rows)
 
[root@zabbix ~]#
 
(データベースへのアクセスを許可させます)
[root@zabbix ~]# vi /var/lib/pgsql/data/pg_hba.conf
 :
local   all             all                                     peer
host    all             all             127.0.0.1/32            md5   # identからmd5へ「-h localhost」として接続するなら
host    all             all             ::1/128                 md5   # 同じ
 
(もしフロントエンドが別のマシンならネットワーク越しにアクセス可能にします)
[root@zabbix ~]# vi /var/lib/pgsql/data/postgresql.conf
 :
listen_addresses = '*'
 :
 
(アクセスを許可も変更します)
[root@zabbix ~]# vi /var/lib/pgsql/data/pg_hba.conf
 :
host   zabbix      zabbix   192.188.0.3/32  md5         # ネット経由で zabbixデータベースにzabbixユーザが192.188.0.3からアクセスを許可
 
 
[root@zabbix ~]# systemctl restart postgresql
 
 
 
(接続確認)
[root@zabbix ~]# psql -d zabbix -h localhost -p 5432 -U zabbix
Password for user zabbix:
psql (9.2.24)
Type "help" for help.
 
zabbix=> \q
[root@zabbix ~]#

zabbixのコンパイル

開発環境のインストールと追加のパッケージを予めインストールする

yum groupinstall "Development Tools"
yum install libxml2-devel net-snmp-devel libevent-devel libcurl-devel libssh2-devel OpenIPMI-devel

そしてzabbixのソースを取得.

[root@zabbix ~]# curl -O https://cdn.zabbix.com/zabbix/sources/stable/5.2/zabbix-5.2.6.tar.gz

zabbixのサーバとフロントエンド、サーバ自体の情報を取得するのでそのエージェントが使えるようにコンパイル
インストール先は /opt/zabbix としてます

[root@zabbix ~]# tar xf zabbix-5.2.6.tar.gz
[root@zabbix ~]# cd zabbix-5.2.6
 
[root@zabbix zabbix-5.2.6]# ./configure --prefix=/opt/zabbix --enable-server --enable-agent --with-postgresql \
                     --with-net-snmp --with-libcurl --with-libxml2 --with-ssh2 --with-openipmi  --with-openssl
 :
 :
Configuration:
 
  Detected OS:           linux-gnu
  Install path:          /opt/zabbix
  Compilation arch:      linux
 
  Compiler:              cc
  Compiler flags:         -g -O2
 
  Library-specific flags:
    database:                -I/usr/include
    libXML2:               -I/usr/include/libxml2
    Net-SNMP:               -I/usr/local/include -I/usr/lib64/perl5/CORE -I. -I/usr/include
    OpenIPMI:              -I/usr/include
    libssh2:               -I/usr/include
    TLS:                   -I/usr/include
 
  Enable server:         yes
  Server details:
    With database:         PostgreSQL
    WEB Monitoring:        cURL
      SSL certificates:      /opt/zabbix/share/zabbix/ssl/certs
      SSL keys:              /opt/zabbix/share/zabbix/ssl/keys
    SNMP:                  yes
    IPMI:                  yes
    SSH:                   yes (libssh2)
    TLS:                   OpenSSL
    ODBC:                  no
    Linker flags:             -L/usr/lib64     -L/usr/lib64 -L/usr/lib  -L/usr/lib    -L/usr/lib   -rdynamic
    Libraries:                -lpq  -lxml2    -lnetsnmp -lssh2  -lOpenIPMI -lOpenIPMIposix -lz -lpthread -levent -lssl -lcrypto   -lcurl -lm -ldl  -lresolv  -lpcre
    Configuration file:    /opt/zabbix/etc/zabbix_server.conf
    External scripts:      /opt/zabbix/share/zabbix/externalscripts
    Alert scripts:         /opt/zabbix/share/zabbix/alertscripts
    Modules:               /opt/zabbix/lib/modules
 
  Enable proxy:          no
 
  Enable agent:          yes
  Agent details:
    TLS:                   OpenSSL
    Modbus:                no
    Linker flags:             -L/usr/lib   -rdynamic
    Libraries:              -lz -lpthread -lssl -lcrypto   -lcurl -lm -ldl  -lresolv  -lpcre
    Configuration file:    /opt/zabbix/etc/zabbix_agentd.conf
    Modules:               /opt/zabbix/lib/modules
 
  Enable agent 2:        no
 
  Enable Java gateway:   no
 
  LDAP support:          no
  IPv6 support:          no
 
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
 
[root@zabbix zabbix-5.2.6]# make && make install

PostgreSQLにスキーマを作成

[root@zabbix ~]# cd ./zabbix-5.2.6/database/postgresql
 
[root@zabbix postgresql]# ls -l *.sql
-rw-r--r-- 1 1000 1000 10485679 Mar 29 18:21 data.sql
-rw-r--r-- 1 1000 1000      413 Mar 29 18:02 double.sql
-rw-r--r-- 1 1000 1000  1979089 Mar 29 17:33 images.sql
-rw-r--r-- 1 1000 1000   155077 Mar 29 18:21 schema.sql
-rw-r--r-- 1 1000 1000      856 Mar 29 18:21 timescaledb.sql
[root@zabbix postgresql]#

と対応すべきsqlファイルは 5 つあようだ. 内容を見て順序としては
schema.sql -> double.sql -> images.sql/data.sql -> timescaledb.sql
っぽい.
ただdouble.sqlって既に schema.sql に反映されているように見える...

っでインポートを行う

[root@zabbix ~]# cat zabbix-5.2.6/database/postgresql/schema.sql |  sudo -u zabbix psql zabbix
[root@zabbix ~]# cat zabbix-5.2.6/database/postgresql/double.sql |  sudo -u zabbix psql zabbix
[root@zabbix ~]# cat zabbix-5.2.6/database/postgresql/images.sql |  sudo -u zabbix psql zabbix
[root@zabbix ~]# cat zabbix-5.2.6/database/postgresql/data.sql   |  sudo -u zabbix psql zabbix
[root@zabbix ~]# cat zabbix-5.2.6/database/postgresql/timescaledb.sql |  sudo -u zabbix psql zabbix

*最後のtimescaledb.sqlで chunk_time_interval カラムがないとエラーになる...

ZabbixサーバとPostgreSQLを繋ぐ設定を施す

Zabbixのプロセスファイルを置く場所とか整備します
/runと/var/runは同じディレクトリ. /run --link--> /var/run

[root@zabbix ~]# echo "d /run/zabbix 755 zabbix zabbix" > /etc/tmpfiles.d/zabbix.conf
[root@zabbix ~]# /usr/bin/systemd-tmpfiles --create /etc/tmpfiles.d/zabbix.conf
[root@zabbix ~]# ls -ld  /run/zabbix/
drwxr-xr-x 2 zabbix zabbix 40 Apr 20 20:53 /run/zabbix/
 
[root@zabbix ~]# mkdir /var/log/zabbix && chown zabbix. $_
--- /opt/zabbix/etc/zabbix_server.conf.orig     2021-04-20 13:39:50.691601586 +0900
+++ /opt/zabbix/etc/zabbix_server.conf  2021-04-20 20:59:53.393037647 +0900
@@ -35,7 +35,7 @@
 # Default:
 # LogFile=
 
-LogFile=/tmp/zabbix_server.log
+LogFile=/var/log/zabbix/zabbix_server.log
 
 ### Option: LogFileSize
 #      Maximum size of log file in MB.
@@ -67,6 +67,8 @@
 # Default:
 # PidFile=/tmp/zabbix_server.pid
 
+PidFile=/run/zabbix/zabbix_server.pid
+
 ### Option: SocketDir
 #      IPC socket directory.
 #              Directory to store IPC sockets used by internal Zabbix services.
@@ -117,6 +119,8 @@
 # Default:
 # DBPassword=
 
+DBPassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
 ### Option: DBSocket
 #      Path to MySQL socket.
 #

起動ファイルを作成
パッケージ版のzabbixを参照してます

[root@zabbix ~]# vi /etc/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=postgresql.service
 
[Service]
Environment="CONFFILE=/opt/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/opt/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
 
[Install]
WantedBy=multi-user.target
 
[root@zabbix ~]# systemctl daemon-reload

そして zabbix-server を起動させる

[root@zabbix ~]# systemctl start zabbix-server.service && systemctl enable $_

「/var/log/zabbix/zabbix_server.log」を見て zabbix-server 自体の起動にエラーがないかを調べる.
エラーっぽいメッセージがありますが、気にせず
「item "Zabbix server:zabbix[vmware,buffer,pused]" became not supported: No "vmware collector" processes started.」

firewallに穴を空ける 幸いなことに定義ファイルが用意されている. /usr/lib/firewalld/services/zabbix-server.xml

[root@zabbix ~]# firewall-cmd --add-service=zabbix-server --zone=public --permanent
[root@zabbix ~]# firewall-cmd --reload

Zabbixエージェントを起動

Zabbixサーバにエージェントを載せて、まずは自分自身を観察してみる. 既にconfigureの段階でエージェント機能もコンパイルしてインストールしている.

まずは設定ファイルを修正します

--- /opt/zabbix/etc/zabbix_agentd.conf.orig     2021-04-20 13:39:50.425599679 +0900
+++ /opt/zabbix/etc/zabbix_agentd.conf  2021-04-20 23:48:14.610484627 +0900
@@ -10,6 +10,8 @@
 # Default:
 # PidFile=/tmp/zabbix_agentd.pid
 
+PidFile=/run/zabbix/zabbix_agentd.pid
+
 ### Option: LogType
 #      Specifies where log messages are written to:
 #              system  - syslog
@@ -27,7 +29,7 @@
 # Default:
 # LogFile=
 
-LogFile=/tmp/zabbix_agentd.log
+LogFile=/var/log/zabbix/zabbix_agentd.log
 
 ### Option: LogFileSize
 #      Maximum size of log file in MB.
@@ -110,7 +112,7 @@
 # Default:
 # Server=
 
-Server=127.0.0.1
+Server=127.0.0.1,zabbix
 
 ### Option: ListenPort
 #      Agent will listen on this port for connections from the server.
@@ -162,7 +164,7 @@
 # Default:
 # Hostname=
 
-Hostname=Zabbix server
+Hostname=zabbix
 
 ### Option: HostnameItem
 #      Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.

その後に

[root@zabbix ~]# vi /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
 
[Service]
Environment="CONFFILE=/opt/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/opt/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
 
[Install]
WantedBy=multi-user.target
 
[root@zabbix ~]# systemctl daemon-reload

っでエージェントを起動させてみる

[root@zabbix ~]# systemctl start zabbix-agent.service  && systemctl enable $_

っでこれも穴を空ける. zabbix-serverとのお話のために

[root@zabbix ~]# firewall-cmd --add-service=zabbix-agent --permanent
[root@zabbix ~]# firewall-cmd --reload

以上で zabbix のサーバ機能とプローブとなるエージェント機能が動き出した

次は、サーバ機能とwebを繋ぐ

zabbix uiの準備

ソースの中にui(webの材料)が入っていてこれをコピーします。
ですが、その前にhttpやらphpらのパッケージをインストールします

[root@zabbix ~]# yum install httpd
[root@zabbix ~]# yum install centos-release-scl-rh
[root@zabbix ~]# yum install rh-php72 rh-php72-php-fpm rh-php72-php-pgsql rh-php72-php-mbstring rh-php72-php-gd \
                             rh-php72-php-bcmath rh-php72-php-ldap
[root@zabbix ~]#

っでコンテンツを準備します

[root@zabbix ~]# cp -r zabbix-5.2.6/ui /var/www/zabbix-5.2.6
 
(zabbixパッケージ版から拝借)
[root@zabbix ~]# vi /etc/httpd/conf.d/zabbix-5.2.6.conf
Alias /zabbix /var/www/zabbix-5.2.6
 
ProxyTimeout 300
 
<Directory "/var/www/zabbix-5.2.6">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
 
    <IfModule dir_module>
        DirectoryIndex index.php
    </IfModule>
 
    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock|fcgi://localhost"
#        SetHandler "proxy:unix:/var/opt/rh/rh-php73/run/php-fpm/zabbix.sock|fcgi://localhost"
    </FilesMatch>
</Directory>
 
<Directory "/var/www/zabbix-5.2.6/conf">
    Require all denied
</Directory>
 
<Directory "/var/www/zabbix-5.2.6/app">
    Require all denied
</Directory>
 
<Directory "/var/www/zabbix-5.2.6/include">
    Require all denied
</Directory>
 
<Directory "/var/www/zabbix-5.2.6/local">
    Require all denied
</Directory>
 
[root@zabbix ~]# chown apache. /var/www/zabbix-5.2.6/conf    <--- web画面で設定した内容を保存させるためにパーミッションを変更

zabbixではphpスクリプトを動かすために php-fpm 機構を採用しています. httpとphpを繋ぐのに
っで、その設定ファイルを用意しまし(これもzabbixパッケージ版から拝借)

[root@zabbix ~]# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
 
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1
 
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
 
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/opt/rh/rh-php72/lib/php/session/
 
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Tokyo
[root@zabbix ~]#

っで稼働させます

[root@zabbix ~]# systemctl restart httpd rh-php72-php-fpm
[root@zabbix ~]# systemctl enable httpd rh-php72-php-fpm

これもfirewallに穴を空けます

[root@zabbix ~]# firewall-cmd --add-service={http,https} --zone=public --permanent
[root@zabbix ~]# firewall-cmd --reload

この後「http://zabbix/zabbix」へアクセスします

っでやっとお目見え
2021y04m21d_011109488.png

他の計算機へのagent追加

rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm
yum install zabbix-agent -y
vi /etc/zabbix/zabbix_agentd.conf
   Server=zabbix,<ip address>
   ServerActive=zabbix,<ip address>
   Hostname=n01
systemctl restart zabbix-agent.service && systemctl enable zabbix-agent.service

[設定]->[ホスト] から右上の「ホストの作成」を開き
「ホスト名」とインターフェースに「エージェント」を選んでipを追加
そしてテンプレートを選ぶ


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-06-17 (木) 03:15:17 (5d)