はじめに
- ZABBIX(ザビックス)
- 監視ソフト
- サーバなどの機器を監視して、状態を通知
どうして手っ取り早い?
- 無料で使えて学習ならPC一台で完結するので気軽に試せる。
- たくさんの企業や官公庁などで採用されているので需要が高い。
どうやんの?
- OSのパッケージ更新
- データベース(MariaDB)構築
- 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を最新の状態にする。
# dnf update -y
再起動を実行。
# reboot
これでサーバの準備はOK。
再起動したことにより、SSH接続が切れるので再接続すること。
2.データベースのインストール
Zabbixのセットアップの前にMariaDBをインストールする。
# dnf install -y mariadb-server
enableで次回以降自動で起動。 --nowで今すぐサービス起動。
# systemctl enable --now mariadb
これでデータベースの準備はOK。
サーバとデータベースの用意ができたので次の手順からZABBIXを入れていく。
3.Zabbixサーバのインストール
OSにZabbixのインストール元の情報を教えてあげる。
# 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に登録する」作業。
古い情報を消去
# dnf clean all
古いパッケージ、リポジトリ情報を削除して
新しく登録したZabbixリポジトリを確実に使えるようにする。
Zabbix本体とかwebサーバとか一括で入れる
# 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にログイン。
パスワードを求められるが、未設定なので空欄で可。
# mysql -uroot -p
ログインできたらデータベース用のコマンドを使用して作業を進める。
データベース作成のコマンドを実行。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
↓それぞれコマンドの意味
create database zabbix
名前が zabbix のデータベースを新規作成。
character set utf8mb4
文字コードを UTF-8 (絵文字も含む最新版) に設定。
collate utf8mb4_bin
大文字小文字を区別する比較方法を採用。(監視データで必要になるケースがある)
ユーザー作成
mysql> create user zabbix@localhost identified by 'password';
↓それぞれコマンドの意味
zabbix@localhost
ユーザー名 zabbix を作成し、接続元を localhost(=同じサーバ内)に限定。
identified by 'password'
このユーザーのパスワードを 'password' に設定。
※セキュリティに関わる部分なので任意で変更してください。
👉 ここで決めたパスワードは後で /etc/zabbix/zabbix_server.conf に書く必要があります。
権限付与
mysql> grant all privileges on zabbix.* to zabbix@localhost;
↓それぞれコマンドの意味
grant all privileges
すべての権限(テーブル作成・更新・削除など)を許可
on zabbix.*
データベース zabbix 内のすべてのテーブルが対象
to zabbix@localhost
先ほど作ったユーザーに対して権限を付与
👉 これで ZabbixサーバがDBを自由に使えるようになります。
一時的な設定変更
mysql> set global log_bin_trust_function_creators = 1;
MySQL/MariaDB では「関数を作る」操作に制限がある(レプリケーションとの整合性のため)
しかし Zabbix の初期スキーマには関数が含まれているので、一時的に制限を解除する必要あり
👉 後でスキーマを流し込んだあと、
set global log_bin_trust_function_creators = 0;
に戻すのが推奨です。(後で手順に登場します)
MariaDBから抜ける
mysql> quit;
Zabbixデータベースの初期化
# 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にログイン。
# mysql -uroot -p
一時的に設定変更してたものを元に戻す。
mysql> set global log_bin_trust_function_creators = 0;
設定を元に戻したらMariaDBから抜ける。
mysql> quit;
Zabbixサーバーにデータベース接続情報を教える
Zabbixサーバは監視データを保存するために MariaDB/MySQL を使う。
でも、その接続情報(ユーザー名・パスワード)が設定されていないとDBにアクセスできない。
そこで /etc/zabbix/zabbix_server.conf を編集して、DB接続用のパスワードを登録する。
設定ファイルを開く
# 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に接続できない」というエラーになる。
いろいろ完了したのでサービスの再起動と自動起動の設定
サービス再起動
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
サービスの自動起動
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
これで、今すぐ必要なサービスを起動する。
次回以降も自動で起動するように登録する。
これで Zabbix のバックエンドとフロントエンドが使える状態になる。
webブラウザからZabbixにアクセス
接続URL
http://host/zabbix
hostの部分にサーバのIPアドレスを入力して接続する。
例:
http://192.168.100.197/zabbix
問題なく接続できたら少しだけ初期設定の操作をして完了。
監視設定やアラート通知の設定を行えるようになる。