8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Raspberry Pi 4(64bit)にZABBIXをインストールする方法の自分メモ。
これまでSDカードで運用していて、定期的なSDカードの不良で再構築を行う度に調べるのが面倒なのでまとめました。
これを機にSDカードからSSDに変更しました。
この手順は2024/01/05に実施しました。

64bit OSへのzabbixの導入はソースをダウンロード・コンパイルで実施しないとはまってしまいうまくいきませんでした。
素直に32bit OSへ導入すればよいのですが、折角なので64bitのままで挑戦し成功したので記録しておきます。
導入後にはSSL化とSAML連携を実施したので、こちらも記録しておきます。

zabbixの導入・設定は以下のzabbix documentationを参考にしています。
zabbix documentation − 4. インストール

使用した環境

  • Raspberry pi 4 model B Rev 1.2 4GB
  • SDカード 8GB
     OS初期導入時のみ
  • Crucial NVMe SSD 512GB
     NVMe−USB変換で接続
  • 有線LAN接続

手順のまとめ

1. Raspberry Pi 4へのOSのインストール
2. Apache2とPHPとmariadbの導入
3. zabbixのソースのダウンロードとインストールおよび初期設定
4. zabbixの起動とサービス化
5. zabbixの初期化と動作確認
6. SAMLログイン設定
7. zabbixのSSL化
8. SAMLの暗号化

1. Raspberry Pi 4へのOSのインストール

Raspberry Pi 4へのOSの導入は公式の手順に従いRaspberry Pi Imagerを使いました。
起動後にアップデートを実施します。

$ sudo apt update
$ sudo apt full-upgrade

SDカードでは遅いのでUSBに接続したSSDにイメージを移し、SSDで起動できるようにします。
SDカードのイメージをSD Card Copierを利用してSSDにコピーします。
コピー後、USB起動できるように設定します。

$ sudo raspi-config

6 Advanced Optionsを選択
スクリーンショット 2024-01-06 16.11.48.png

A4 Boot Orderを選択
スクリーンショット 2024-01-06 16.12.06.png

B2 NVMe/USB Bootを選択
スクリーンショット 2024-01-06 16.12.17.png

以上でUSB接続されたSSDからOSが起動します。
以降GUIは必要ないのCLIに変更します。

$ sudo raspi-config

1 System Optionsを選択
スクリーンショット 2024-01-06 16.11.48.png

B1 Consoleを選択
スクリーンショット 2024-01-06 17.11.02.png

$ sudo reboot

これ以降、OSの再導入時はRaspberry Imagerで直接SSDにイメージを導入し、ドライブをUSB接続し電源を入れればUSBから起動します。
SDカードからのコピーは必要ないです。

IPの固定化とホスト名の変更

zabbixサーバーとして運用するため固定IPで運用します。
今回は以下の設定とします。

  • Hostname : zabbix.test.lab
  • IP : 192.168.10.10/24
  • Default Gateway : 192.168.10.1
  • DNS : 192.168.10.1,9.9.9.9
$ sudo raspi-config nonint do_hostname zabbix.test.lab
$ sudo nmcli connection modify 'Wired connection 1' ipv4.addresses 192.168.10.10/24
$ sudo nmcli connection modify 'Wired connection 1' ipv4.gateway 192.168.10.1
$ sudo nmcli connection modify 'Wired connection 1' ipv4.dns 192.168.10.1,9.9.9.9

有線接続名を’Wired connection 1’としています。導入後何もしていなければこの名前だと思います。
ここで念のため再起動します。

$ sudo reboot

2. Apache2とPHPとmariadbの導入

zabbixの前提環境としてApache2、PHP、mariadbを導入します。
DBについてはこれ以外の選択肢もありますが、参考文献の多いmariadbを選択しました。
導入するモジュールは以下を参考にしました。
zabbix documentation − 2 要件

Apache2の導入

aptでApache2を導入します。

$ sudo apt install apache2

PHPの導入

PHPも同様にaptで導入します。

$ sudo apt install php
$ sudo apt install php-gd php-bcmath php-xml php-mbstring php-ldap php-mysql
$ sudo apt install php-fpm

mariadbの導入

mariadbも同様です。

$ sudo apt install mariadb-server

mariadbの初期設定を以下のように実施します。

$ sudo mysql_secure_installation

初期設定の各質問にはすべて'Y'で回答
mariadbにアクセスできることを確認

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8738
Server version: 10.11.4-MariaDB-1~deb12u1 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)]> quit;
Bye

3. zabbixのソースのダウンロードとインストールおよび初期設定

ソースのダウンロード

以下よりzabbixのソースをダウンロードします。
Download and install Zabbix

導入時は以下で実施しています。

$ wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.10.tar.gz
$ tar xzvf zabbix-6.4.10.tar.gz
$ sudo mv zabbix-6.4.10 /usr/local/src/

リンクは最新の安定版のURLに読み替えてください。

ユーザーの作成

zabbixを稼働させるユーザーを作成します。

$ sudo addgroup --system --quiet zabbix
$ sudo adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

必要なモジュールの導入

zabbixを以下の設定でビルドするため必要なモジールを導入します。

$ cd /usr/local/src/zabbix-6.4.10
$ ./configure --enable-server --enable-agent --enable-agent2 --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2 --with-ldap

--with-ldapは今のところLDAP連携の予定はないので必要ない
--enable-agentもagent2を使うことにしたので必要ないかも
agent関係は $ sudo apt install zabbix_agentとかで導入すればよいので必要ないかも
ということで、オプションはこんな感じでよいかと。

./configure --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2

上記のオプションでビルドするために必要なモジュールは以下の通りです。

$ sudo apt install libpcre3-dev libevent-dev libmariadb-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libopenipmi-dev libxml2 libxml2-dev libldap2-dev golang gettext

--with-ldap を使わないならldapのインストールも必要ない
--enable-agent2 しないなら golang も必要ない
agentについては$ sudo apt install zabbix-agentとか$sudo apt install zabbix-agent2で導入できるので、ここでビルドする必要はそもそもない。
ということで、必要なモジュールはこれくらいかと。

$ sudo apt install libpcre3-dev libevent-dev libmariadb-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libopenipmi-dev libxml2 libxml2-dev golang gettext

DBの初期化

mariadbにzabbix用にDB作成し、初期設定を実施します。
DB初期化作業は以下を参考にしました。
1 データベースの作成

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8767
Server version: 10.11.4-MariaDB-1~deb12u1 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)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by 'password';
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost';
MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
Bye

上記のユーザーのパスワード 'password' は適宜適切なパスワードを使用してください。

作成したDBにスキーマ・イメージ・データをインポートします。

$ cd /usr/local/src/zabbix-6.4.10/database/mysql
$ cat schema.sql | mysql -u zabbix -p zabbix
$ cat images.sql | mysql -u zabbix -p zabbix
$ cat data.sql | mysql -u zabbix -p zabbix

log_bin_trust_function_creatorsを無効にします。

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8767
Server version: 10.11.4-MariaDB-1~deb12u1 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)]> SET GLOBAL log_bin_trust_function_creators = 0;
MariaDB [(none)]> quit;
Bye

zabbixのインストール

以下の手順でzabbixをインストールします。

$ cd /usr/local/src/zabbix-6.4.10
$ ./configure --enable-server --enable-agent --enable-agent2 --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2 --with-ldap

事前に必要なモジュールを導入しているのでエラーなしで上記コマンドは終了するはず。
もしエラーとなった場合は、該当する必要なモジュールを導入する。

$ make

念のため、エラーがないことを確認。

$ sudo make install

設定ファイルの編集

zabbixサーバーとエージェントの起動の前に設定ファイルの編集を行います。

zabbix agent

/usr/local/etc/zabbix_agentd.conf ファイルを編集します。
zabbix agent2の場合は /usr/local/etc/zabbix_agent2.conf です。

このファイルは、zabbix_agentdがインストールされているすべてのホストで設定する必要があります。
Zabbix server のIPアドレスを指定する必要があります。他のホストからの接続は拒否されます。

$ cd /usr/local/etc
$ sudo vi /usr/local/etc/zabbix_agentd.conf
- Server=127.0.0.1
+ Server=127.0.0.1,192.168.10.10,zabbix.test.lag

ここ以外にもPIDファイルやログファイルの出力先の指定もした方がよいでしょう。

$ sudo mkdir /var/log/zabbix
$ sudo chown zabbix:zabbix /var/log/zabbix
$ sudo mkdir /var/run/zabbix
$ sudo chown zabbix:zabbix /var/run/zabbix
$ sudo vi /usr/local/etc/zabbix_agentd.conf
- # PidFile=/tmp/zabbix_agentd.pid
+ PidFile=/var/run/zabbix/zabbix_agentd.pid
- # LogFile=/tmp/zabbix_agentd.log
+ LogFile=/var/log/zabbix/zabbix_agentd.log

zabbix server

/usr/local/etc/zabbix_server.conf ファイルを編集します。
データベース名、ユーザー名、パスワード(使用している場合)を指定する必要があります。

$ cd /usr/local/etc
$ sudo vi /usr/local/etc/zabbix_server.conf
- DBPassword=
+ DBPassword=password

上記パスワードはDB初期化時に指定した適切なパスワードに読み替えてください。

ここ以外にもPIDファイルやログファイルの出力先の指定もした方がよいでしょう。

$ sudo vi /usr/local/etc/zabbix_server.conf
- # PidFile=/tmp/zabbix_server.pid
+ PidFile=/var/run/zabbix/zabbix_server.pid
- # LogFile=/tmp/zabbix_server.log
+ LogFile=/var/log/zabbix/zabbix_server.log

フロントエンドへの言語の追加

利用可能な言語を確認します。

$ locale -a

必要な言語がリストされていない場合は/etc/locale.genファイルを開き、必要なロケールのコメントを解除します。 ZabbixはUTF-8エンコーディングを使用するため、UTF-8文字セットを使用してロケールを選択する必要があります。

- # en_US.UTF-8 UTF-8
+ en_US.UTF-8 UTF-8
- # ja_JP.UTF-8 UTF-8
+ ja_JP.UTF-8 UTF-8

その後、以下を実行します。

$ sudo locale-gen

ここでwebサーバーを再起動してください。

$ sudo systemctl restart apache2

Zabbixの翻訳ファイルを手動で生成するには以下のコマンドを実行します。

$ cd /usr/local/src/zabbix-6.4.10
$ make gettext
$ ui/locale/make_mo.sh

14 フロントエンドへの言語追加

4. zabbixの起動とサービス化

zabbix_server を起動します。

$ zabbix_server

zabbix_agentd を起動します。

$ zabbix_agentd

Zabbix web interface のインストール

zabbixのUIを稼働させるために必要なファイルをコピーします。
念のため、apache2関連を再起動します。

$ sudo mkdir /var/www/html/zabbix
$ cd /usr/local/src/zabbix-6.4.10/ui
$ sudo cp -a . /var/www/html/zabbix
$ sudo chown -R zabbix:zabbix /var/www/html/zabbix
$ sudo systemctl stop apache2
$ sudo systemctl stop php8.2-fpm
$ sudo systemctl start php8.2-fpm
$ sudo systemctl start apache2

5. zabbixの初期化と動作確認

zabbixが稼働できているかweb interfaceにアクセスして確認します。

http://zabbix.test.lab/zabbix

スクリーンショット 2024-01-06 232845.png
言語を日本語に変更します。
プルダウンから日本語を選択します。
スクリーンショット 2024-01-06 232859.png
次のステップに進みます。
スクリーンショット 2024-01-06 232909.png
php.iniの設定内容に修正が必要です。
スクリーンショット 2024-01-06 232923.png
画面に表示されている内容を修正します。
/etc/php/8.2/apache2/php.ini

- post_max_size = 8M
+ post_max_size = 16M
- max_execution_time = 30
+ max_execution_time = 300
- max_input_time = 60
+ max_input_time = 300

修正後にapache2関連の再起動

$ sudo systemctl stop apache2
$ sudo systemctl stop php8.2-fpm
$ sudo systemctl start php8.2-fpm
$ sudo systemctl start apache2

スクリーンショット 2024-01-06 233639.png
次のステップに進みます。
スクリーンショット 2024-01-06 233734.png
内容を確認して、次のステップに進みます。
スクリーンショット 2024-01-06 233847.png
サーバー名とタイムゾーンを設定します。
スクリーンショット 2024-01-06 233917.png
設定したパラメーターを確認します。
スクリーンショット 2024-01-06 233936.png
画面の指示の通り、設定ファイルを所定のディレクトリに保存します。
設定ファイルを手元にダウンロードして、これをzabbixサーバーの/tmpにアップロードします。
その後、指定の場所に保存します。

$ sudo mv /tmp/zabbix.conf.php /var/www/html/zabbix/conf/zabbix.conf.php

スクリーンショット 2024-01-06 234346.png
無事インストール完了
スクリーンショット 2024-01-06 234355.png
ログイン画面が表示されました。
初期ユーザーのAdmin/zabbixでログインします。
スクリーンショット 2024-01-06 234747.png
zabbix サーバーがインストールでき、稼働できていることが確認できました。

zabbix serverとzabbix agentのサービス化

Zabbix Server

サービスファイルの作成

cd /etc/systemd/system
$ sudo vi zabbix-server.service

ファイルは以下の通りとしています。

[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="DAEMON_ARGS= -c /usr/local/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/%p
Type=simple
KillMode=control-group
PIDFile=/var/run/zabbix/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server $DAEMON_ARGS
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
User=zabbix
Group=zabbix
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

自動起動を有効にします。

$ systemctl enable zabbix-server.service

サービスを起動します。

$ systemctl start zabbix-server

Zabbix agent

サービスファイルの作成

cd /etc/systemd/system
$ vi zabbix-agent.service

こちらは apt で導入した場合に配置される/lib/systemd/system/zabbix-agent.serviceを参考にしました。

[Unit]
[Unit]
Description=Zabbix Agent
Documentation=man:zabbix_agentd
After=network.target

[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/sbin/zabbix_agentd --foreground
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Agentを$sudo apt install zabbix-agentで導入している場合は/lib/systemd/system/zabbix-agent.serviceがあるので、上記は必要ない。
zabbix-agent2 の場合も同様。

自動起動を有効にします。

$ systemctl enable zabbix-agent

サービスを起動します。

$ systemctl start zabbix-agent

6. SAMLログインの設定

IDaaSと認証連携を行います。
IDaaSにはIBM Security Verifyを利用しています。SAML連携なので他のIDaasでも基本は同じはずです。
IBM Security Verifyは以下より無料トライアルの利用が可能です。
IBM Security Verify Trial

zabbix SAML設定は以下を参考にしています。
ZABBIX - SAML設定

まずは暗号化無しで連携

まずは証明書の取得・配置の必要ない暗号化設定なしで連携設定を行います。
この状態でSAML連携ができていることを確認した後に、暗号化設定などを実施します。

IBM Security Verifyの設定

IBM Security VerifyにAdminモードでログインし、アプリケーションメニューよりアプリケーションを追加します。
アプリケーションの追加ボタンを押した後に表示されるダイアログでzabbixと入力します。
スクリーンショット 2024-01-10 16.30.00.png
zabbixを選択し、アプリケーションの追加を行います。
アプリケーションの追加画面になりますので、ここで設定を行います。
一般タブでホスト名を入力します。
スクリーンショット 2024-01-10 16.32.36.png
プロバイダーIDにはzabbixで入力するのと同じ値を設定します。
ここではzabbix-verify-SAML-integrationとしました。
アサーション・コンシューマー・サービスURLとターゲットURLは以下の通りです。
スクリーンショット 2024-01-10 16.43.48.png
SAMLサブジェクト、属性マッピングは以下のようにemailを指定します。
スクリーンショット 2024-01-10 16.44.48.png

SAMLサブジェクト、属性マッピングについてはemail以外でも問題ないです。
適切な値を設定してください。

zabbix側の設定

メニューよりユーザー、認証を開き、SAML認証の設定タブに移動します。
zabbixのSAML認証画面でSAML認証の有効化ボタンをチェックします。
各項目はIBM Security Verifyの画面に表示されていた内容を使用します。
ユーザー名の属性はUsernameとします。

スクリーンショット 2024-01-10 18.06.03.png

ユーザーの作成

IBM Security Verifyでzabbixにログインするユーザーを作成します。
ここで重要なのは優先Eメールです。この値をzabbix側で作成するユーザー名と一致させます。
スクリーンショット 2024-01-10 16.50.50.png
スクリーンショット 2024-01-10 16.51.03.png

IBM Security Verifyで作成したユーザーの優先Eメールと同じユーザー名でzabbixにユーザーを作成します。
スクリーンショット 2024-01-10 18.10.34.png

IdPの証明書の配置

IDP cert fileとしてIBM Security Verifyの画面に表示されている証明書を/var/www/html/conf/certs/idp.crtとして保存します。
保存したファイルの所有者をzabbixに変更します。

$ cd /var/www/html/zabbix/conf/certs
$ sudo chown www-data:www-data idp.crt
$ sudo chmod 400 idp.crt

SAMLログインの検証

SAMLでのログインを検証するため、一度zabbixおよびIBM Security Verifyからログアウトします。
zabbixにアクセスし、SAMLログインを検証します。
スクリーンショット 2024-01-10 17.29.05.png
ログイン画面に表示されている”SSO(SAML)でサインイン"をクリックします。
IdPの認証画面 - IBM Security Verifyのログイン画面が表示されます。
スクリーンショット 2024-01-10 17.30.29.png
まだzabbix/apache2のSSL化をしていないため、警告が表示されます。
ここはこのまま進めます。
スクリーンショット 2024-01-10 17.31.14.png
SAMLでのログインに成功しました。
スクリーンショット 2024-01-10 17.32.35.png

SCIMの設定を行うことでzabbix側にユーザーがない場合に自動的にユーザーの作成が可能です。

7. zabbixのSSL化

このままですと、ログイン時に毎回警告が出ますのでSSL化を行います。
SSLに必要な証明書はLet's Encryptで取得しました。
Let's Encryptで取得した証明書等 server.crt/server.key を/tmp等に一旦アップロードし、これを配置します。

$ sudo mkdir /etc/apache2/ssl
$ sudo mv /tmp/server.crt /etc/apache2/ssl
$ sudo mv /tmp/server.key /etc/apache2/ssl
$ sudo chown root:root /etc/apache2/ssl/*
$ sudo chmod 400 /etc/apache2/ssl/*

配置した証明書が利用されるようにApache2を設定します。

$ sudo a2enmod ssl
$ sudo vi /etc/apache2/sites-available/default-ssl.conf

ファイル内の以下の項目を設定します。

  • SSLCertificateFile
  • SSLCertificateKeyFile
    この項目には先ほど配置したファイルを指定します。
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

SSLをサイトで有効にします。

$ sudo a2ensite default-ssl
$ sudo systemctl restart apache2

以上でhttpsでのアクセスが可能になります。
IBM Security Verifyの設定でhttpとなっているところをhttpsに変更します。
以上でSSO/SAML時の警告が表示されなくなります。

8. SAMLの暗号化

ここまでの設定で通信がSSLで暗号化されました。
さらにSAML Assertionの暗号化や署名設定を行います。
Apache2のSSL化に利用したのと同じ証明書を利用して、SAML Assertionの暗号化や署名の設定を行います。
SSL化で使用した証明書等を/var/www/html/zabbix/conf/certsにsp.crt,sp.keyとして配置します。

$ sudo cd /var/www/html/zabbix/conf/certs
$ sudo cp /etc/apache2/ssl/* ./
$ sudo mv server.crt sp.crt
$ sudo mv server.key sp.key
$ sudo chown www-data:www-data sp.*
$ sudo chmod 400 sp.*

zabbixのSAML設定で以下をチェックします。

サイン
  • メッセージ
  • アサーション
    スクリーンショット 2024-01-11 21.45.00.png

IBM Security Verifyでは以下の設定を行います。
上記で配置した証明書をIBM Security Verifyに配置します。
管理画面のセキュリティー → 証明書の画面を開き、署名証明書の追加ボタンをクリックします。
表示されるダイアログで証明書を指定しアップロードします。
スクリーンショット 2024-01-12 18.21.44.png
アプリケーションよりzabbix連携設定を開きます。
サインオンタブの署名オプションをチェックし、先ほどアップロードした証明書を選択します。
次に暗号化オプションのアサーションの暗号化をチェックし、こちらにも先ほどアップロードした証明書を選択します。
スクリーンショット 2024-01-12 18.25.01.png
以上で設定が完了です。
以後、SAML連携暗号化されメッセージ・アサーションは署名を確認して行われます。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?