2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

手っ取り早いアピールのために、ZABBIXという監視サーバを構築

Posted at

はじめに

ZABBIXってなに?

  • ZABBIX(ザビックス)
  • 監視ソフト
  • サーバなどの機器を監視して、状態を通知

どうして手っ取り早い?

  • 無料で使えて学習ならPC一台で完結するので気軽に試せる。
  • たくさんの企業や官公庁などで採用されているので需要が高い。

どうやんの?

  1. OSのパッケージ更新
  2. データベース(MariaDB)構築
  3. Zabbixサーバのインストール

前提としてサーバがまず用意してあること。
サーバ自体もVirtualBoxという無料の仮想マシン作成ソフトで、使用PCの中に作成できる。

本記事では、VirtualBox上にAlmaLinuxというOSでサーバを作成した状態からスタート。
AlmaLinuxも無料のOSでRed Hatという需要の高いOSと操作感が一緒なので併せてアピール可。

1. OSのパッケージ更新

使用環境の概要

  • OS:AlmaLinux 10
  • IPアドレス:例)192.168.100.197
  • 仮想化:VirtualBox

使用OSの状態を最新にする(パッケージ更新)
手元のPCを操作して、VirtualBox上の仮想マシンにSSH接続をして作業を行っていく。
SSH接続したら管理者として操作したいので、suコマンドを実行し管理者としてログインする。
ログイン後、管理者権限で全パッケージを最新版に自動更新。

まずはAlmaLinuxを最新の状態にする。

bash
# dnf update -y

再起動を実行。

bash
# reboot

これでサーバの準備はOK。
再起動したことにより、SSH接続が切れるので再接続すること。

2.データベースのインストール

Zabbixのセットアップの前にMariaDBをインストールする。

bash
# dnf install -y mariadb-server

enableで次回以降自動で起動。 --nowで今すぐサービス起動。

bash
# systemctl enable --now mariadb

これでデータベースの準備はOK。
サーバとデータベースの用意ができたので次の手順からZABBIXを入れていく。

3.Zabbixサーバのインストール

OSにZabbixのインストール元の情報を教えてあげる。

bash
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm

↓それぞれコマンドの意味
rpm
RHEL系ディストリの「パッケージ管理コマンド」
直接 .rpm ファイルをインストールするときに使う。

オプション -Uvh
-U → アップグレード(すでに同じパッケージがあれば更新、なければ新規インストール)
-v → verbose(進行状況を表示)
-h → ハッシュマークで進捗バーを表示。

URL先のファイル
zabbix-release-latest-7.0.el10.noarch.rpm
これは「Zabbix公式リポジトリの定義ファイル」
/etc/yum.repos.d/zabbix.repo が追加され、dnf install でZabbixが取れるようになる。

👉 つまり「Zabbixの倉庫をOSに登録する」作業。

古い情報を消去

bash
# dnf clean all

古いパッケージ、リポジトリ情報を削除して
新しく登録したZabbixリポジトリを確実に使えるようにする。

Zabbix本体とかwebサーバとか一括で入れる

bash
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

↓それぞれコマンドの意味
zabbix-server-mysql
Zabbixサーバ本体。
データの収集・保存・通知などの中枢を担います。
👉 データベースは MySQL/MariaDB を利用する構成。

zabbix-web-mysql
ZabbixのWebフロントエンド(管理画面)
👉 PHP + Apache 上で動く管理UI。

zabbix-apache-conf
Apache(Webサーバ)の設定ファイルをZabbix用に追加するパッケージ。
👉 /etc/httpd/conf.d/zabbix.conf などが入る。

zabbix-sql-scripts
初期データベースを作成するためのSQLスクリプト一式。
👉 server.sql.gz を展開してZabbixのDBに流し込む。

zabbix-selinux-policy
SELinuxが有効な環境で必要になるポリシー設定。
👉 Zabbixが正しく動けるように権限を調整。

zabbix-agent
監視対象のホストに入れる「エージェント」
👉 サーバ自身のCPUやメモリの状態を収集する。

MariaDB内にデータベース作成
まずMariaDBにログイン。
パスワードを求められるが、未設定なので空欄で可。

bash
# mysql -uroot -p

ログインできたらデータベース用のコマンドを使用して作業を進める。
データベース作成のコマンドを実行。

mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;

↓それぞれコマンドの意味
create database zabbix
名前が zabbix のデータベースを新規作成。

character set utf8mb4
文字コードを UTF-8 (絵文字も含む最新版) に設定。

collate utf8mb4_bin
大文字小文字を区別する比較方法を採用。(監視データで必要になるケースがある)

ユーザー作成

mysql
mysql> create user zabbix@localhost identified by 'password';

↓それぞれコマンドの意味
zabbix@localhost
ユーザー名 zabbix を作成し、接続元を localhost(=同じサーバ内)に限定。

identified by 'password'
このユーザーのパスワードを 'password' に設定。
※セキュリティに関わる部分なので任意で変更してください。

👉 ここで決めたパスワードは後で /etc/zabbix/zabbix_server.conf に書く必要があります。

権限付与

mysql
mysql> grant all privileges on zabbix.* to zabbix@localhost;

↓それぞれコマンドの意味
grant all privileges
すべての権限(テーブル作成・更新・削除など)を許可

on zabbix.*
データベース zabbix 内のすべてのテーブルが対象

to zabbix@localhost
先ほど作ったユーザーに対して権限を付与

👉 これで ZabbixサーバがDBを自由に使えるようになります。

一時的な設定変更

mysql
mysql> set global log_bin_trust_function_creators = 1;

MySQL/MariaDB では「関数を作る」操作に制限がある(レプリケーションとの整合性のため)
しかし Zabbix の初期スキーマには関数が含まれているので、一時的に制限を解除する必要あり
👉 後でスキーマを流し込んだあと、
set global log_bin_trust_function_creators = 0;
に戻すのが推奨です。(後で手順に登場します)

MariaDBから抜ける

mysql
mysql> quit;

Zabbixデータベースの初期化

bash
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

↓それぞれコマンドの意味
zcat
圧縮されたファイル(.gz)を展開して標準出力に流す コマンド

/usr/share/zabbix-sql-scripts/mysql/server.sql.gz
Zabbixパッケージに含まれる 初期スキーマ(テーブル定義・関数・初期データ)
つまり、これを展開すると中身は「Zabbix用の大量のSQL文」

|
パイプ記号。
左のコマンド(zcatの出力)を右のコマンド(mysqlクライアントの入力)に渡す。

mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
mysql → MySQL/MariaDB クライアント
--default-character-set=utf8mb4 → 文字化け防止のためにUTF-8で実行
-u zabbix → ユーザー zabbix として接続
-p → パスワードを入力する(さっき create user で設定したもの)
zabbix → 接続先のデータベース名

👉 要するに「Zabbixユーザーで zabbix データベースに接続して、展開したSQLを全部流し込む」動作。
zabbix データベースの中に、Zabbix用のテーブル・関数・初期データが作成される。
結果として、Zabbixサーバが起動しても「テーブルがない!」とエラーにならずに済む。

この作業が終わったら、MySQLに戻って以下で制限を戻す
まずMariaDBにログイン。

bash
# mysql -uroot -p

一時的に設定変更してたものを元に戻す。

mysql
mysql> set global log_bin_trust_function_creators = 0;

設定を元に戻したらMariaDBから抜ける。

mysql
mysql> quit;

Zabbixサーバーにデータベース接続情報を教える
Zabbixサーバは監視データを保存するために MariaDB/MySQL を使う。
でも、その接続情報(ユーザー名・パスワード)が設定されていないとDBにアクセスできない。
そこで /etc/zabbix/zabbix_server.conf を編集して、DB接続用のパスワードを登録する。

設定ファイルを開く

bash
# vi /etc/zabbix/zabbix_server.conf

ファイルの中にこういう行がある👇

ファイル内の記述
### Option: DBPassword
# DBPassword=

ここを編集してパスワードを追記

ファイル内の記述
例:
DBPassword=password

👉 password の部分は、先ほど create user zabbix@localhost identified by 'password'; で指定したもの と同じにする必要がある。
#は消すこと。#があるとコメント(注釈)扱いになってしまう。

保存して終了

操作と入力コマンド
ESCキー → :wq

この設定で Zabbix サーバーは DB にアクセスできるようになる。
設定するのは DBユーザー「zabbix」のパスワードであり、LinuxのrootやMySQLのrootではない。
このステップを忘れると「ZabbixサーバがDBに接続できない」というエラーになる。

いろいろ完了したのでサービスの再起動と自動起動の設定
サービス再起動

bash
# systemctl restart zabbix-server zabbix-agent httpd php-fpm

サービスの自動起動

bash
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

これで、今すぐ必要なサービスを起動する。
次回以降も自動で起動するように登録する。
これで Zabbix のバックエンドとフロントエンドが使える状態になる。

webブラウザからZabbixにアクセス
接続URL
http://host/zabbix

hostの部分にサーバのIPアドレスを入力して接続する。
例:
http://192.168.100.197/zabbix

問題なく接続できたら少しだけ初期設定の操作をして完了。
監視設定やアラート通知の設定を行えるようになる。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?