【Zabbixサーバー構築 #6】データベースサーバーとしてPostgreSQLとTImescaleDBをインストールする
概要
監視サーバーZabbixのデータの保存先として、データベースサーバーのPostgreSQLと、その拡張機能であるTimescaleDBをインストールします。
環境
ソフトウェア
- Debian 11 (bullseys)
- PostgreSQL 13
- TimescaleDB 2.4.2
インストール
PostgreSQLサーバー本体
PostgreSQLサーバーは、Debian標準のレポジトリにあるバージョン13を利用します。
# apt install postgresql-13
TimescaleDB
TImescaleDBのサイトにある手順をもとにインストールします。
# sh -c "echo 'deb [signed-by=/usr/share/keyrings/timescale.keyring] https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main' > /etc/apt/sources.list.d/timescaledb.list" # wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescale.keyring # apt update # apt install timescaledb-2-postgresql-13
PostgreSQLにTImescaleDBを組み込むための設定をします。
# timescaledb-tune -yes Using postgresql.conf at this path: /etc/postgresql/13/main/postgresql.conf Writing backup to: /tmp/timescaledb_tune.backup202111070825 shared_preload_libraries needs to be updated Current: #shared_preload_libraries = '' Recommended: shared_preload_libraries = 'timescaledb' success: shared_preload_libraries will be updated Recommendations based on 3.66 GB of available memory and 2 CPUs for PostgreSQL 13 Memory settings recommendations Current: shared_buffers = 128MB #effective_cache_size = 4GB #maintenance_work_mem = 64MB #work_mem = 4MB Recommended: shared_buffers = 959609kB effective_cache_size = 2811MB maintenance_work_mem = 479804kB work_mem = 9596kB 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 success: parallelism settings will be updated WAL settings recommendations Current: #wal_buffers = -1 min_wal_size = 80MB Recommended: wal_buffers = 16MB min_wal_size = 512MB 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_connections = 100 #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_connections = 50 max_locks_per_transaction = 64 autovacuum_max_workers = 10 autovacuum_naptime = 10 effective_io_concurrency = 256 success: miscellaneous settings will be updated Saving changes to: /etc/postgresql/13/main/postgresql.conf
有効にするためにPostgreSQLサーバーを再起動します。
# systemctl restart postgresql@13-main
以上で終了です。
【Zabbixサーバー構築 #5】VeeamBackup&Replication(無償版)によるDebianのイメージバックアップ
概要
VeeamBackup&Replication(以下、Veeam)にはLinuxサーバーにインストールすることで、イメージバックアップまでできる無償版が存在します。 イメージバックアップを取得することで、ディスクが破損した場合でも復旧出来たり、テスト環境を保存しておいて複数の環境にコピーすることが出来るようになります。
環境
ハードウェア
- ECS Liva Q1L
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
インストール
1. Veeam(無償版の)ダウンロード
左上の「製品」→「全ての無償ツール」から「Veeam Agent for Linux Free」をダウンロードします。 ダウンロードにはアカウントの作成が必要です。
2. ダウンロードしたファイルをサーバーにコピーする
RloginのSFTP転送機能でファイルをサーバーにコピーします。
3. インストールする
# apt install /home/user/veeam-release-deb_1.0.8_amd64.deb # apt update # apt install veeam
4. バックアップ用USBディスクを初期化してマウントする
ディスクを接続して接続先の識別子を確認する 下の例だと sda1 が外付けディスク
# lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda └─sda1 vfat FAT32 28BF-2A2F mmcblk1 ├─mmcblk1p1 swap 1 efe99b5a-5ec9-4585-babd-621abe16f6ad [SWAP] ├─mmcblk1p2 vfat FAT32 0C93-B305 89.2M 4% /boot/efi └─mmcblk1p3 xfs e3f180c1-1c0a-4de4-9980-6ef22651ba8f 51.6G 4% / mmcblk1boot0 mmcblk1boot1
バックアップディスクを初期化する
# mkfs.xfs -f /dev/sda1
自動マウントの設定をする マウントポイントは /data とする
# mkdir /data # echo "UUID=$(lsblk -n -o UUID /dev/sda1) /data xfs defaults 0 0" >> /etc/fstab # mount -a
5. Veeamのエラー回避のための設定
重要!バックアップエラーを回避するための設定
# cp /proc/kallsyms /boot/System.map-`uname -r`
6. Veeamの初期設定
# veeamconfig ui
ライセンスの許諾
リカバリメディアの作成 無線LAN経由でリカバリなどする場合には、ドライバを追加でインストールしたパッチ済みISOが必要です。 今回は、外付けUSBディスクへのバックアップを想定しISOイメージは標準のものを利用します。
ライセンスファイルの指定 有償版のライセンスを持っている場合はここで指定することが出来ます。 無料版を利用する場合は空欄のままで進めます。
7. バックアップ設定
8. バックアップの実行
【Zabbixサーバー構築#4】IPアドレスを固定する
概要
サーバーとして動作させる場合、IPアドレスが再起動のたびに変わると大変なので固定します。
環境
ハードウェア
- ECS Liva Q1L
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
- Debian 11 (bullseys)
- NetworkManager
設定
Network-Managerをインストールする
# apt -y install network-manager
IPアドレスをNetworkManagerで管理できるようにする
以下のコマンドで、該当行の先頭に # を入力してコメントアウトする
# nano /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface # allow-hotplug enp0s3 ← コメントアウト # iface enp0s3 inet dhcp ← コメントアウト
編集が終わったら Ctrl + X で終了
再起動
# reboot
IPアドレスを確認してSSHで接続する
IPアドレスを変更する
# nmtui
アドレス、ゲートウェイ、DNSサーバーを環境に合わせて設定する
再起動する
# reboot
【Zabbixサーバー構築#2】Debian 11 をインストールする
- 概要
- 環境
- インストール
- CDから起動する
- Graphical Install を選択
- Japanese 日本語を選択
- 日本を選択
- キーボードの選択 → 日本語を選択
- ホスト名の入力
- ドメイン名を入力
- 管理者パスワードの設定
- ユーザーのフルネーム設定
- ユーザー名の設定
- ユーザーパスワードの設定
- ディスクのパーティション設定方法の選択
- パーティション設定するディスクの設定
- パーティションテーブルの作成
- パーティションを設定する
- パーティション構成を書き込む
- 別のインストールメディアを選択
- ミラーサイト(国)の選択
- ミラーサイトの選択
- HTTPプロキシの設定
- 統計調査への参加
- インストールするパッケージの選択
- ブートローダーのインストール
- ブートローダーをインストールするディスクの選択
- インストールの完了
概要
前回入手したイメージを使ってDebianをインストールしていきます。
環境
ハードウェア
- ECS Liva Q1L
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
- Debian 11 (bullseys)
インストール
CDから起動する
Graphical Install を選択
Japanese 日本語を選択
日本を選択
キーボードの選択 → 日本語を選択
ホスト名の入力
ドメイン名を入力
管理者パスワードの設定
ユーザーのフルネーム設定
ユーザー名の設定
ユーザーパスワードの設定
ディスクのパーティション設定方法の選択
パーティション設定するディスクの設定
パーティションテーブルの作成
パーティションを設定する
スワップ領域は、メモリと同容量設定する。 それ以外を1つのパーティションに設定する。 ファイルシステムは、データベースに適したXFSを選択する。
パーティション構成を書き込む
別のインストールメディアを選択
今回は、インターネットからダウンロードするため「なし」を選択する。
ミラーサイト(国)の選択
ミラーサイトの選択
HTTPプロキシの設定
統計調査への参加
インストールするパッケージの選択
今回は、サーバー用途のためGUIはインストールしない
ブートローダーのインストール
ブートローダーをインストールするディスクの選択
インストールの完了
以上でインストール完了です。 お疲れさまでした。
【Zabbixサーバー構築#1】Debian 11 を入手する
概要
100台程度の機器を監視するためのZabbixサーバーを構築します。 本稿では、ベースとなるOSをインストールします。
OSの選定
今回は、Intel CPUを利用しますが、Raspberry PiなどCPUにARMを利用する組み込み系機器でも利用できるDebianを利用します。
環境
ハードウェア
- CPU Intel® Celeron® N3350
- メモリ 4GB
- 内蔵ストレージ eMMC 64GB
- 有線LAN 2×Gigabit LAN (10BASE-T/100BASE-TX/1000BASE-T)
- 無線LAN Wi-Fi 802.11ac
ソフトウェア
- Debian 11 (bullseys)
インストールイメージを入手する
Debianのインストールには、インストーラとして最低限の機能のみが含まれ、インターネットから必要なパッケージをダウンロードしながらインストールするnetinstイメージが推奨されます。但し、これには無線LANなどで必要なファームウェアが含まれていないため、Unofficial non-free images including firmware packagesを利用します。
PostgreSQL14をZabbix用にパーティション構成で設定する
概要
監視サービスのZabbixに適したパーティション構成でPostgreSQLをインストールしていきます。
Zabbixは、直近の監視データを historyテーブルに保存し指定した期間を過ぎるとtrendsテーブルにデータを集約してコピーした後にhistoryテーブルのデータを削除します。しかし、監視対象が増えると削除処理が追い付かなくなってきます。パーティション構成にすると、不要になったパーティションをDropすることでデータの削除処理が大幅に軽減されます。
環境
- Debian 11
- PostgreSQL 14
- Zabbix 5.4
- CPU Intel(R) Celeron(R) CPU N3350 @ 1.10GHz
- メモリ 4GB
インストール
PostgreSQL 14
# apt install postgresql-common # sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh # sh -c "echo 'deb [signed-by=/usr/share/keyrings/timescale.keyring] https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main' > /etc/apt/sources.list.d/timescaledb.list" # wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescale.keyring # apt update # apt install timescaledb-2-postgresql-14 # timescaledb-tune --quiet --yes
Zabbix
サイトの手順に従ってパッケージをインストールする
パッケージはOSなどに合わせて選択します。
- Install Zabbix repository
# wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian11_all.deb # dpkg -i zabbix-release_5.4-1+debian11_all.deb # apt update
- Install Zabbix server, frontend, agent
# apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
DBユーザーとDB作成
# su - postgres $ createuser --pwprompt zabbix $ createdb -O zabbix zabbix
アクセス権の設定
/etc/postgresql/14/main/postgresql.conf 内の以下の行のコメントを外す。
#listen_addresses = 'localhost' # what IP address(es) to listen on;
を
listen_addresses = 'localhost' # what IP address(es) to listen on;
にしてデータベースを再起動する。
# systemctl restart postgresql@14-main
Zabbix用のスキーマ(テーブルなど)を作成する
# zcat /usr/share/doc/zabbix-sql-scripts/postgresql/create.sql.gz | psql -h 127.0.0.1 -U zabbix zabbix Password for user zabbix:
timescaledbを有効にする
# psql -h 127.0.0.1 -U zabbix zabbix Password for user zabbix: zabbix=> CREATE extension timescaledb; WARNING: WELCOME TO _____ _ _ ____________ |_ _(_) | | | _ \ ___ \ | | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ / | | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \ | | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ / |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/ Running version 2.5.0 For more information on TimescaleDB, please visit the following links: 1. Getting started: https://docs.timescale.com/timescaledb/latest/getting-started 2. API reference documentation: https://docs.timescale.com/api/latest 3. How TimescaleDB is designed: https://docs.timescale.com/timescaledb/latest/overview/core-concepts 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.timescale.com/timescaledb/latest/how-to-guides/configuration/telemetry. CREATE EXTENSION zabbix=> quit # cat /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql | psql -h 127.0.0.1 -U zabbix zabbix Password for user zabbix: NOTICE: PostgreSQL version 14.0 (Debian 14.0-1.pgdg110+1) is valid NOTICE: TimescaleDB extension is detected NOTICE: TimescaleDB version 2.5.0 is valid NOTICE: TimescaleDB is configured successfully DO
Zabbix server のDBパスワードの設定
/etc/zabbix/zabbix_server.conf を編集する
DBPassword=password
Zabbixのフロントエンドを表示するための設定
/etc/zabbix/nginx.conf を編集して、以下の項目のコメントを外す
listen 80; server_name example.com;
/etc/php/7.4/fpm/pool.d/zabbix-php-fpm.conf を編集して、タイムゾーンを日本語にする
; php_value[date.timezone] = Europe/Riga ↓ php_value[date.timezone] = Asia/Tokyo
Zabbix server と agent を再起動して、自動起動するよう設定する
# systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm # systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
フロントエンドの設定
ブラウザで http://
デフォルトは Admin / zabbix