Zabbix5.0 を CentOS8 で構築します。この前、zabbix4が出たばっかりだと思っていたのに、もう5がでたのか。。。
DBはPostgreSQLを利用しますが、パフォーマンスがアップするとかしないとかいう TimescaleDB を構成します。
CentOS8でZabbix5.0をインストール
環境
- CentOS8
- nginx-1.14.1
- PHP-FPM-7.2
- PostgreSQL-12 + TimescaleDB
DBセットアップ(postgresql)
postgresqlインストール
まず、リポジトリ追加します。
1 |
# dnf install https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
PostgreSQLをインストールします。
1 2 3 4 5 |
# dnf install postgresql12-server postgresql12-contrib メタデータの期限切れの最終確認: 0:00:23 時間前の 2020年05月22日 13時19分08秒 に実施しました。 一致した引数がありません: postgresql12-server 一致した引数がありません: postgresql12-contrib エラー: 一致するものが見つかりません: postgresql12-server postgresql12-contrib |
エラーになります。
OS 標準の postgresql モジュールが優先されてしまい、パッケージが見つからずにエラーになってしまう。無効にするために以下を実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# dnf module disable postgresql メタデータの期限切れの最終確認: 0:02:52 時間前の 2020年05月22日 13時21分39秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== モジュールの無効化: postgresql トランザクションの概要 ======================================================================================================================== これでよろしいですか? [y/N]: y 完了しました! |
改めて、PostgreSQLをインストールします。
1 |
# dnf install postgresql12-server postgresql12-contrib |
ちなみに、、、
appstreamからインストールする場合は以下 ※TimescaleDBを構成する場合はpostgresqlのリポジトリからインストールする必要があるのでやらないでよいです
1 |
# dnf install @postgresql:12/server |
そして、appstreamからインストールしてしまったパッケージを削除するには以下。
1 |
# dnf remove postgresql |
そしてそして、念の為、リセットしておく。
1 |
# dnf module reset postgresql |
雑談おわり。
PostgreSQLの初期化
1 2 |
# /usr/pgsql-12/bin/postgresql-12-setup initdb Initializing database ... OK |
TimescaleDBの設定
各公式ページ
zabbix公式:https://www.zabbix.com/documentation/current/manual/appendix/install/timescaledb
timescale公式:https://docs.timescale.com/latest/getting-started/installation/rhel-centos/installation-yum
まずリポジトリ追加します。
1 2 3 4 5 6 7 8 9 10 11 |
# cat timescale_timescaledb.repo [timescale_timescaledb] name=timescale_timescaledb baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch ★7でよい 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 |
★8にすると timescaledb-tools の Ver.0.8以上がなく以下のようにエラーとなる。
1 2 3 4 5 6 7 |
# dnf install timescaledb-postgresql-12 timescale_timescaledb 461 B/s | 833 B 00:01 エラー: 問題: conflicting requests - nothing provides timescaledb-tools >= 0.8 needed by timescaledb-postgresql-12-1.7.1-0.el8.x86_64 (インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、 最適候補のパッケージのみを使用しないでください) |
インストールします。
1 2 3 4 5 |
# dnf install timescaledb-postgresql-12 インストール済み: timescaledb-postgresql-12-1.7.1-0.el7.x86_64 compat-openssl10-1:1.0.2o-3.el8.x86_64 timescaledb-tools-0.8.1-0.el7.x86_64 |
TimeScale用に設定ファイルを書き換えます。
基本的にYesで進んでいけばOKだと思われます。マシンのリソースに応じて、自動で調整してくれるようです。一応、出力を残しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# timescaledb-tune -pg-config /usr/pgsql-12/bin/pg_config Using postgresql.conf at this path: /var/lib/pgsql/12/data/postgresql.conf Is this correct? [(y)es/(n)o]: y Writing backup to: /tmp/timescaledb_tune.backup202005221356 shared_preload_libraries needs to be updated Current: #shared_preload_libraries = '' Recommended: shared_preload_libraries = 'timescaledb' Is this okay? [(y)es/(n)o]: y success: shared_preload_libraries will be updated Tune memory/parallelism/WAL and other settings? [(y)es/(n)o]: y Recommendations based on 1.79 GB of available memory and 2 CPUs for PostgreSQL 12 Memory settings recommendations Current: shared_buffers = 128MB #effective_cache_size = 4GB #maintenance_work_mem = 64MB #work_mem = 4MB Recommended: shared_buffers = 468171kB effective_cache_size = 1371MB maintenance_work_mem = 234085kB work_mem = 2340kB Is this okay? [(y)es/(s)kip/(q)uit]: y success: memory settings will be updated Parallelism settings recommendations Current: missing: timescaledb.max_background_workers #max_worker_processes = 8 #max_parallel_workers_per_gather = 2 #max_parallel_workers = 8 Recommended: timescaledb.max_background_workers = 8 max_worker_processes = 13 max_parallel_workers_per_gather = 1 max_parallel_workers = 2 Is this okay? [(y)es/(s)kip/(q)uit]: y success: parallelism settings will be updated WAL settings recommendations Current: #wal_buffers = -1 min_wal_size = 80MB Recommended: wal_buffers = 14044kB min_wal_size = 512MB Is this okay? [(y)es/(s)kip/(q)uit]: y success: WAL settings will be updated Miscellaneous settings recommendations Current: #default_statistics_target = 100 #random_page_cost = 4.0 #checkpoint_completion_target = 0.5 #max_locks_per_transaction = 64 #autovacuum_max_workers = 3 #autovacuum_naptime = 1min #effective_io_concurrency = 1 Recommended: default_statistics_target = 500 random_page_cost = 1.1 checkpoint_completion_target = 0.9 max_locks_per_transaction = 64 autovacuum_max_workers = 10 autovacuum_naptime = 10 effective_io_concurrency = 200 Is this okay? [(y)es/(s)kip/(q)uit]: y success: miscellaneous settings will be updated Saving changes to: /var/lib/pgsql/12/data/postgresql.conf |
PostgreSQL起動
このへんで、PostgreSQLの起動と自動起動設定をしておく。
zabbix用DB、ユーザ作成
ユーザを作成します。
1 2 3 |
# sudo -u postgres createuser --pwprompt zabbix 新しいロールのためのパスワード: もう一度入力してください: |
DBを作成します。
1 |
# sudo -u postgres createdb -O zabbixuser zabbix_db |
ZABBIX用のデータを投入します。
1 2 3 4 5 6 7 8 |
# cd /usr/share/doc/zabbix-server-pgsql # gzip -d create.spl.gz # cat create.sql.gz | sudo -u zabbix psql zabbix_db : INSERT 0 1 INSERT 0 1 INSERT 0 1 COMMIT |
TimescaleDB拡張機能を先程作成したzabbix用のDBに対して有効にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix_db WARNING: WELCOME TO _____ _ _ ____________ |_ _(_) | | | _ \ ___ \ | | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ / | | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \ | | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ / |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/ Running version 1.7.1 For more information on TimescaleDB, please visit the following links: 1. Getting started: https://docs.timescale.com/getting-started 2. API reference documentation: https://docs.timescale.com/api 3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture Note: TimescaleDB collects anonymous reports to better understand and assist our users. For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry. CREATE EXTENSION |
timescaledb構成用のSQLを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# pwd /usr/share/doc/zabbix-server-pgsql/zabbix-server-pgsql # cat timescaledb.sql | sudo -u zabbix psql zabbix_db create_hypertable ---------------------- (1,public,history,t) (1 行) create_hypertable --------------------------- (2,public,history_uint,t) (1 行) create_hypertable -------------------------- (3,public,history_log,t) (1 行) create_hypertable --------------------------- (4,public,history_text,t) (1 行) create_hypertable -------------------------- (5,public,history_str,t) (1 行) create_hypertable --------------------- (6,public,trends,t) (1 行) create_hypertable -------------------------- (7,public,trends_uint,t) (1 行) UPDATE 1 UPDATE 1 |
PostgreSQL基本設定
postgresのパスワードを設定しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 |
# su - postgres 最終ログイン: 2020/05/22 (金) 16:15:48 JST日時 pts/0 $ psql psql (12.3) "help"でヘルプを表示します。 postgres=# \password 新しいパスワードを入力してください: もう一度入力してください: postgres=# \q |
認証設定を適宜md5などで実施しておきます。(pg_hba.conf)
Nginx設定
デフォルトサーバのセクションをコメントアウトします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# pwd /etc/nginx # diff nginx.conf nginx.conf.org 38,57c38,57 < # server { < # listen 80 default_server; < # listen [::]:80 default_server; < # server_name _; < # root /usr/share/nginx/html; < # < # # Load configuration files for the default server block. < # include /etc/nginx/default.d/*.conf; < # < # location / { < # } < # < # error_page 404 /404.html; < # location = /40x.html { < # } < # < # error_page 500 502 503 504 /50x.html; < # location = /50x.html { < # } < # } --- > server { > listen 80 default_server; > listen [::]:80 default_server; > server_name _; > root /usr/share/nginx/html; > > # Load configuration files for the default server block. > include /etc/nginx/default.d/*.conf; > > location / { > } > > error_page 404 /404.html; > location = /40x.html { > } > > error_page 500 502 503 504 /50x.html; > location = /50x.html { > } > } |
conf.d/zabbix.conf は触らずでOKです。
PHP-FPM設定
ユーザ設定とタイムゾーンを変更します。変更しなくてもよいがメモリ値も変更しておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# diff zabbix.conf ~/zabbix.conf.org_php-fpm 2,3c2,3 < user = nginx < group = nginx --- > user = apache > group = apache 6c6 < listen.acl_users = nginx --- > listen.acl_users = apache,nginx 19c19 < php_value[memory_limit] = 256M --- > php_value[memory_limit] = 128M 24c24 < php_value[date.timezone] = Asia/Tokyo --- > ; php_value[date.timezone] = Europe/Riga |
ライブラリディレクトリのパーミッションを変更します。(デフォルトではapache)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# pwd /var/lib/php # ll 合計 0 drwxrwx--- 2 root apache 6 11月 14 2019 opcache drwxr-xr-x 2 root root 6 11月 14 2019 peclxml drwxrwx--- 2 root apache 6 11月 14 2019 session drwxrwx--- 2 root apache 6 11月 14 2019 wsdlcache # chown -R root:nginx ./* # ll 合計 0 drwxrwx--- 2 root nginx 6 11月 14 2019 opcache drwxr-xr-x 2 root nginx 6 11月 14 2019 peclxml drwxrwx--- 2 root nginx 6 11月 14 2019 session drwxrwx--- 2 root nginx 6 11月 14 2019 wsdlcache |
あとは、WEBで接続して最後のセットアップをしてください。
まとめ
zabbix5からnginxが正式にサポートされたり、TimescaleDBが利用できるようになったり(これは zabbix4から)といろいろ変わっているところがでてきていたので手順をまとめました。
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓