Zabbixを使ったサーバ監視・モニタリングの設定方法 – Debian Linuxによる自宅サーバ

自宅サーバ
自宅サーバ

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をインストールし、適切な設定を行うことで、自宅サーバのパフォーマンスやリソースの利用状況を把握できます。

機会があればぜひ導入することをオススメします。

コメント

タイトルとURLをコピーしました