🐤

ローカルにZabbixサーバを構築

2023/06/07に公開

はじめに

Zabbixについて理解を深めるために、簡単な構成で構築してみました。
その際の構築手順をまとめました。
Zabbixの概要について知りたい方は下記ページを参照ください。
https://zenn.dev/naotobarca/articles/c298fce7d3e5d2

対象者

PHP, Apache, MySQLを含め、Zabbix構築の一連について知りたい人。

構成

Zabbixサーバ・・・1台
Linux仮想マシン(zabbix-server)にZabbixサーバをインストールする。

Zabbixエージェント・・・1台
Linux仮想マシン(zabbix-agent-linux)にZabbixエージェントをインストールする。

ZabbixサーバはZabbixエージェントから情報を収集する。
上記のホストは同一ネットワーク上に存在する。
ネットワークアドレス・・・10.10.0.0 /24

各ホストの情報

  • Zabbixサーバ
    ホスト名・・・zabbix-server
    OS・・・CentOS 7.9.2009
    Zabbixサーバ・・・Zabbix 5.0
    MySQL・・・MySQL 8.0.33
    Apache・・・Apache 2.4.6
    IPアドレス・・・10.10.0.1 /24
    SELinux・・・無効
    firewalld・・・無効

  • Zabbixエージェント
    ホスト名・・・zabbix-linux-agent
    OS・・・CentOS 7.9.2009
    Zabbixエージェント・・・Zabbix 5.0
    IPアドレス・・・10.10.0.2 /24
    SELinux・・・無効
    firewalld・・・無効

検証ゴール

zabbix-linux-agentが再起動したとき、zabbix-serverはそれを検知する。
再起動したことを示すイベントがWEBインターフェースから確認できる。

具体的なシナリオ

①zabbix-serverにPHPをインストールする。
②zabbix-serverにApacheをインストールする。
③zabbix-serverにMySQLをインストールする。
④zabbix-serverに必要なコンポーネントをインストールする。
⑤zabbix-linux-agentにZabbixエージェントをインストールする。
⑤Zabbixサーバに対して、Zabbixエージェントがインストールされているマシンの再起動を検知する監視項目やトリガーを設定する。
⑥Zabbixエージェントインストールされているマシンを再起動する。
⑦再起動したことを示すイベントがWEBインターフェース上で表示されることを確認する。

zabbix-serverにPHPをインストール

まずはPHPをインストールします。

epel-release パッケージをインストール
これによりEPELリポジトリをシステムに追加できる
yum install epel-release

Remiリポジトリをシステムに追加
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm

RemiリポジトリからPHP 7.4をインストールするために、PHP 7.4を有効にする
yum-config-manager --enable remi-php

PHPと必要なモジュールをインストールする
yum install php php-mysql php-xml php-bcmath php-mbstring php-json php-gd php-ldap

PHPのバージョン確認
php -v

Apacheを再起動し、新しくインストールしたPHPが有効になる
systemctl restart httpd

zabbix-serverにApacheをインストール

Apacheをインストールする
yum install httpd

Apacheのバージョン確認
httpd -v

Apacheを起動する
systemctl start httpd

サーバが起動するたびにApacheが自動的に起動するようにする
systemctl enable httpd

zabbix-serverにMySQLをインストールする

MySQL8.0をリポジトリに追加する
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

MySQLをインストールする
yum install mysql-community-server

鍵を更新する(公開鍵をインポートする。セキュリティの観点から非常に重要)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

MySQLを起動する
systemctl start mysqld
systemctl status mysqld

MySQLのバージョン確認
mysql --version

MySQLインストール時に自動で設定されるroot@localhostのパスワードを確認
grep 'temporary password' /var/log/mysqld.log

サーバが起動した時にMySQLが自動的に起動するようにする
systemctl enable mysqld

MySQLの初期設定をする
mysql_secure_installation

zabbix-serverに必要なコンポーンネントをインストール

Zabbixに必要なコンポーネントをインストールし、サービスを起動する。
https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=mysql&ws=apache

Zabbix Webインターフェースに接続し、Zabbix Webインタフェースの初期設定を行う。

zabbix-linux-agentにZabbixエージェントをインストール

https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&components=agent&db=&ws=

/etc/zabbix/zabbix_agentd.confを編集する。
Server=10.10.0.1(zabbix-serverのIPアドレス)
Hostname=zabbix-linux-agent

zabbix-serverで監視項目を追加する

WEBインターフェースでzabbix-linux-agentに対する監視項目を追加する。

~ホストを追加~
左サイドバーから [設定] - [ホスト] を押下。
画面右上の「ホストの作成」を押下。
画面が遷移したら下記項目を入力し「追加」を押下。

ホスト名 : zabbix-linux-agent
グループ : practice
インターフェース : 10.10.0.2

~アイテムを追加~
左サイドバーから [設定] - [ホスト] を押下。
ホスト一覧に存在するzabbix-linux-agentにおける「アイテム」を押下。
画面右上の「アイテムの作成」を押下。
画面が遷移したら下記項目を入力し「追加」を押下。

名前:システムの再起動
タイプ:Zabbixエージェント
キー:system.uptime
データ型:数値(整数)
単位:uptime
監視間隔:1m
アプリケーションの作成:OS

~トリガーを追加~
左サイドバーから [設定] - [ホスト] を押下。
ホスト一覧に存在するzabbix-linux-agentにおける「トリガー」を押下。
画面右上の「トリガーの作成」を押下。
画面が遷移したら下記項目を入力し「追加」を押下。

名前 : ホストが再起動しました
深刻度 : 重度の障害
条件式 : {zabbix_linux_agent:system.uptime.change()}<0

WEBインターフェースで確認

zabbix_linux_agentを再起動する。
sudo reboot

再起動したことを示すイベントがWEBインターフェース上で表示されることを確認する。

さいごに

簡単な構成でありますが、ゴールを設定しZabbix構築を行なってみることで、
公式ドキュメントを読む力や、想定と異なる場面に遭遇した時の問題解決能力が上がったと思います。
やはり自分で手を動かすことは大事だなと改めて感じました。

Discussion