Zabbixはオープンソースのサーバ監視・モニタリングツールで、自宅サーバのパフォーマンスやリソースの使用状況をリアルタイムで把握できます。
この記事では、Debian Linuxを使用した自宅サーバでのZabbixの導入方法を詳しく解説します。
Zabbix Agent
Zabbix Agentをインストールすることで、サーバのCPU使用率やメモリ使用量などの情報を収集できるようになります。
データは、Zabbix Serverに送信され、監視や分析に使用されます。
Zabbix Agentは、ユーザー定義の監視項目をサポートしており、独自のスクリプトやコマンドを使ってデータ収集を行うことができます。
これにより、標準的な監視項目に加えて、特定のアプリケーションや環境に特化した監視が可能になります。
カスタム監視項目を利用することで、システム管理者は自分たちのニーズに合わせた監視設定を構築できます。
Zabbix Agentは、アクティブチェックとパッシブチェックの2つのモードで動作できます。
アクティブチェックは能動的にデータ収集と送信を行い、パッシブチェックはサーバーからの要求を受けてからデータ収集と送信を行います。
デフォルトはパッシブチェックになります。
インストール
Zabbix Agentをインストールします。
Zabbix AgentをDocker上にインストールすることもできますが、今回はサーバに直接インストールします。
sudo apt install -y zabbix-agent
設定
Zabbix ServerはDocker上で 172.16.238.0/24
のネットワークに設定する予定です。
Zabbix Serverのネットワークを設定します。
zabbix_agentd.conf
sudo sed -i "s/^Server=.*/Server=172.16.238.0\/24/" /etc/zabbix/zabbix_agentd.conf
sudo sed -i "s/^ServerActive=.*/ServerActive=172.16.238.1/" /etc/zabbix/zabbix_agentd.conf
Zabbix Agentを再起動します。
sudo service zabbix-agent restart
Postfix
Zabbix ServerはDocker上で 172.16.238.0/24
のネットワークに設定する予定です。
Zabbix Serverからメールを送信できるように設定します。
sudo sed -i "s|^mynetworks =.*|mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 172.16.238.0/24|" /etc/postfix/main.cf
Postfixを再起動します。
sudo service postfix restart
Zabbix Server
Zabbix Serverは、Zabbix Agentなど監視対象ホストから収集されたデータの処理、アラートの生成、通知の送信など、主要な監視機能を担当しています。
インストール
Docker上にインストールします。
mkdir -p ~/docker/zabbix
cd ~/docker/zabbix
Docker Composeの設定
以下のリポジトリを参考に必要な設定だけしています。
https://github.com/zabbix/zabbix-docker
ネットワークは 172.16.238.0/24
を設定します。
vi compose.yaml
services:
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-6.4-latest
restart: always
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
deploy:
resources:
limits:
cpus: '0.70'
memory: 1G
env_file:
- .env
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- zabbix-postgres
networks:
zabbix-network:
stop_grace_period: 30s
zabbix-web:
image: zabbix/zabbix-web-apache-pgsql:alpine-6.4-latest
restart: always
ports:
- "9080:8080"
- "9443:8443"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
deploy:
resources:
limits:
cpus: '0.70'
memory: 512M
env_file:
- .env
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- zabbix-postgres
- zabbix-server
networks:
zabbix-network:
stop_grace_period: 10s
zabbix-postgres:
image: postgres:15-alpine
restart: always
volumes:
- postgres-db:/var/lib/postgresql/data:rw
env_file:
- .env
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
stop_grace_period: 1m
networks:
zabbix-network:
aliases:
- postgres-server
volumes:
postgres-db:
driver: local
networks:
zabbix-network:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
secrets:
POSTGRES_USER:
file: .POSTGRES_USER
POSTGRES_PASSWORD:
file: .POSTGRES_PASSWORD
データベースやZabbixの設定を行います。
vi .env
POSTGRES_USER_FILE=/run/secrets/POSTGRES_USER
POSTGRES_PASSWORD_FILE=/run/secrets/POSTGRES_PASSWORD
POSTGRES_DB=zabbix
ZBX_SERVER_HOST=zabbix-server
ZBX_ALLOWEDIP=zabbix-server
ZBX_TIMEOUT=10
PHP_TZ=Asia/Tokyo
echo 'zabbix' > .POSTGRES_USER
echo 'zabbix' > .POSTGRES_PASSWORD
起動
起動します。
docker compose up -d
ステータス確認
docker compose ps
ログ確認
docker compose logs -f
Zabbix管理画面
以下からZabbixの管理画面にアクセスします。
http://[ IPアドレス ]:9080/
※起動後数分でアクセス可能
デフォルトは以下の情報でログイン可能です。
Username: Admin
Password: zabbix
言語設定
デフォルトだと英語表記になっていると思うので、User Settings -> Profile
から 言語(Language)を日本語に変更します。
同じ場所でパスワードの変更もできます。
監視ホスト設定
データ収集 -> ホスト
から監視するホストを登録できます。
デフォルトでは Zabbix server
が登録されています。
これは Zabbix server
自信を監視する用途で登録されています。
ここにDockerホストのZabbix Agent
を登録します。
インターフェース - IPアドレス
172.16.238.1
[更新]
Zabbix serverはDocker上で動いていて、Zabbix AgentはDockerホスト上で動いています。
Zabbix serverからは 172.16.238.1:10050
からZabbix Agentにアクセスできます。
監視したいサーバを追加する場合は、ホスト作成
から追加できます。
データ確認
監視データ -> ホスト
から監視ホストのデータが確認できます。
最新データ
から取得しているデータ一覧が表示されます。
グラフ
からデータをもとに作成されるグラフ一覧が表示されます。
ダッシュボード
Zabbixのダッシュボードには収集したデータのグラフを複数配置できます。
さまざまなデータをわかりやすく、すばやく確認できるので、ダッシュボードの機能を使うと便利です。
ダッシュボードの作成
ダッシュボードは複数作成できます。
ダッシュボード
からパンくずリストのすべてのダッシュボード
を選択することにより、ダッシュボード一覧が表示できます。
ダッシュボードの作成
から新規作成ができます。
既存のダッシュボードを修正することも可能です。
ウィジェット
ダッシュボードにはウィジェットが複数配置できます。
ウィジェットでグラフを作成してみます。
-
CPU
タイプ: グラフ 名前: CPU データセット #1 ホストパターン: Zabbix server アイテムパターン: CPU utilization
-
HDD
タイプ: グラフ 名前: HDD データセット #1 ホストパターン: Zabbix server アイテムパターン: /mmnt/share: Space utilization
データセットには監視しているホストの取得しているデータが選択できます。
データセットは複数設定することも可能です。
ダッシュボードの表示
このように、自由にグラフを配置することが可能です。
モニタリングしたいデータを配置すると良いでしょう。
メッセージ通知設定
Zabbixからのメッセージを通知する設定を行います。
トリガーアクション
通知 -> アクション -> トリガーアクション
からReport problems to Zabbix administrators
を有効にします。
メディアタイプ
さまざまなメディアタイプが設定できます。
今回はメールの設定を行います。
通知 -> メディアタイプ
からメールを有効にします。
Email
選択
SMTPサーバ: 172.16.238.1
SMTP helo: 172.16.238.1
送信元メールアドレス: zabbix@example.com
有効
※Dockerホスト上でメールサーバが設定されている場合の設定
設定後、テストできるので、メールが送信されるか確認してください。
メッセージテンプレート
Email
の メッセージテンプレート
に下記変数を登録しておくと通知内容がわかりやすくなります。
{ITEM.NAME1}: {ITEM.VALUE1}
{ITEM.NAME2}: {ITEM.VALUE2}
※障害/障害復旧などに追記
障害通知設定
障害が起こった時にメッセージを受け取れるように設定します。
ユーザ -> ユーザ
から Admin
を選択します。
メディア
からタイプ
・送信先
・深刻度
を設定します。
おわりに
この記事では、オープンソースのサーバ監視・モニタリングツールであるZabbixを利用し、自宅サーバの監視・モニタリングを設定する方法について解説しました。
Zabbix AgentとZabbix Serverをインストールし、適切な設定を行うことで、自宅サーバのパフォーマンスやリソースの利用状況を把握できます。
機会があればぜひ導入することをオススメします。
コメント