Zabbix#

やんごとなき理由により某組織のネットワーク管理を予算ほぼゼロで保守する必要性があり, 数百のネットワーク機器の監視を行うため統合監視ツールのzabbixを用いて監視の自動化したそ際の備忘録である. 無料で使っているが予算があれば課金したいところ.

installation#

Download and install Zabbixよりinstallする.dabaseはmysqlを選択するが,debian 11の場合mysql = mariadbを意味する(公式のmysqlをinstallする必要性はない). 基本的には公式の手順に従うが,debian 11 ではmariadbがデフォルトで動いていないのでmariadbを起動する.

# systemctl start mariadb
# systemctl enable mariadb

Install and configure Zabbix server for your platform#

a. Install Zabbix repository#

# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian11_all.deb
# dpkg -i zabbix-release_6.0-1+debian11_all.deb
# apt update

b. Install Zabbix server, frontend, agent#

# apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

c. Create initial database#

Documentation Make sure you have database server up and running.

Run the following on your database host.

下記3行目の<<dbpassword>> はマニュアル通りにコピペするとzabbix database のパスワードがpassword になるので注意する.

# mysql -uroot -p
<<root_password>>
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '<<dbpassword>>';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

d. Configure the database for Zabbix server#

Edit file /etc/zabbix/zabbix_server.conf

DBPassword=<<dbpassword>>

旧データベースのdump#

旧zabbixサーバーにて

# systemctl stop zabbix-server
# mysqldump -u root -p  zabbix > zabbix.sql

scpなどでzabbix.sqlを新サーバーに移す

新zabbixサーバーにて

mysql -u root -p zabbix < zabbix.sql
Enter password:

php data.timezone#

zabbixのweb interfaceでphp timezoneがfailになる場合は

# php --ini
Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini
...

 962	date.timezone = Asia/Tokyo

とすれば良い.

設定ファイル (zabbix-server.conf)#

以下の項目をデフォルトから変更した.

# cat /etc/zabbix/zabbix_server.conf | grep -v "#" | sed '/^$/d'
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=********
StartPingers=5
StartDiscoverers=5
VMwareCacheSize=1G
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8G
HistoryCacheSize=1G
HistoryIndexCacheSize=1G
TrendCacheSize=1G
TrendFunctionCacheSize=1G
ValueCacheSize=1G
Timeout=4
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

Databaseの引越し#

mysql (mariadb)のdatabeseを デフォルトの /var/lib/mysql から /hddpool/mysql に移行した.以前にもトライしたがうまくいかなったのだがChatGPTに聞くと原因はAppArmorだったようだ. 引越しの目的はzabbixの書き込みが想定より多く,OSが動いているSSDの書き込み総量を減らし寿命を伸ばしたい. 一応OS全体はbtrfsのbackupを/hddpool/backupに残しているのでSSDとHDD(RAID 10)が同時に死ななければシステムの復旧は比較的容易(なはず). 以降は引越し手順

  1. データベースのパスの確認

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 465
Server version: 10.11.14-MariaDB-0+deb12u2 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/libl/mysql/ |
+---------------+-----------------+
1 row in set (0.000 sec)

MariaDB [(none)]> quit;
Bye
  1. 引越し先の作成

# ディレクトリ作成
sudo mkdir -p /hddpool/mysql

# 権限を一時的に変更してコピー
sudo rsync -av /var/lib/mysql/ /hddpool/mysql/

# 所有権が mysql ユーザーになっていることを確認
sudo chown -R mysql:mysql /hddpool/mysql
  1. mariadbの設定

/etc/mysql/mariadb.conf.d/50-server.cnf を次のように書き換える

[mysqld]
# datadir = /var/lib/mysql
datadir = /hddpool/mysql
  1. AppArmorの設定

AppArmor のalias /etc/apparmor.d/tunables/alias を次のように書き換える

# cat /etc/apparmor.d/tunables/alias
# ------------------------------------------------------------------
#
#    Copyright (C) 2010 Canonical Ltd.
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------

# Alias rules can be used to rewrite paths and are done after variable
# resolution. For example, if '/usr' is on removable media:
# alias /usr/ -> /mnt/usr/,
#
# Or if mysql databases are stored in /home:
# alias /var/lib/mysql/ -> /home/mysql/,
alias /var/lib/mysql/ -> /hddpool/mysql/,
  1. サービスの再起動

sudo systemctl restart apparmor
sudo systemctl start mariadb
  1. 引越しの確認

mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 465
Server version: 10.11.14-MariaDB-0+deb12u2 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /hddpool/mysql/ |
+---------------+-----------------+
1 row in set (0.000 sec)

MariaDB [(none)]> quit;
Bye
  1. zabbixの再起動

sudo systemctl start zabbix-server

これでweb UIにログインできれば引越し完了