1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RHEL 8.5 にZabbix 6.0 で監視サーバを立てる

Last updated at Posted at 2024-08-08

「Zabbix 立てたことある人いないの?」なんて会話がミーティングで出てきました。監視サーバーとしては大定番のものですね。私は立てたことない人なので立ててみます。
ついでに、Bicep での仮想マシンの立て方と、Linux の基本をお勉強。いつものことながら時系列で書いてます。失敗してます。

目標

RHEL 8.5 にZabbix 6.0をインストールする。できるだけZabbix 公式サイトの通りに進める。
Azure 上に立てたばかりのまっさらなRHEL を使う。

調べもの

リポジトリとは(自分流理解)

私のLinux 力はリポジトリってなんや?です。
調べたことを自分の言葉でまとめる

  • アプリケーション(と呼んでいいのか不明、今は「Zabbixとかそういうの」くらいの意味で書いてます)が動くには他のアプリケーションが必要=「依存関係がある」と呼ぶ
  • なんかその依存関係のあるアプリケーション同士を誰かがまとめてどっかに置いてくれていて、それをリポジトリと呼ぶ
  • 当然、アプリケーションはダウンロード⇒インストールされる
  • ダウンロードするにはリポジトリの位置をコマンドでOS に教える
  • リポジトリにはたくさんの種類があり、一個のリポジトリにはたくさんのアプリケーションがある
  • インストールしたいアプリケーションに必要なアプリケーションを全部持ってるリポジトリがわかれば、インストール作業が簡単になる

Zabbix の要件

公式のRequirementsに書かれたSoftware要件。

  • データベース用。MySQL を使うことにした
    • Optional はわからんので困ったら振り返る
  • フロントエンド用。Apache とphp。
    • さらにphp の拡張機能がたくさん必要。image.png

Zabbix 本体は公式リポジトリから落とすようです。今回の検証ではエージェントとサーバーの両方を一個のRHEL に入れます。

作業

RHEL 8.5 の仮想マシンをBicep で立てる

今回もBicep を使って立てます。自分の立て方を持っている人は飛ばしてください。
問題になったのは仮想マシンのイメージの指定方法です。
つまり、Bicep の構文におけるImageReference の部分です。Publisher, Offer, Sku ですね。
それらの記述方法は公式DOCに書いてあります。
今回使った値を先に抜き出しますと

  • Publisher: RedHat
  • Offer: RHEL
  • Sku: 8.5

でした。
Publisher とOffer はすぐわかりますがSku に苦労しました(公式DOC ちゃんと読んでなかった)。
下記コマンドでSku の書き方を調べます。RHEL に限らず、いろんなOS に対しても使えるはずなので思い出せるようになっておきたい。

$skuName="<SKU>"
Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Sku $skuName | Select Version

適当に引数を渡すと今回は"8.5" でよいことがわかりました。

8.5       RHEL  RedHat        japaneast /Subscriptions/dxxxxxxxxxxxxx… 

ネットワークの方は省略します。

RHEL の作業

公式が親切です!こんな感じで選択してスタート!
image.png

Zabbix インストール(手順2-a, b)

公式リポジトリをインストールし、server とfrontend とagent をインストールします。

MySQL インストールと設定(手順2-c の前に)

手順2-c はMySQL をインストールしてからです。
RedHat のページの通りやってみます。

# yum module install mysql:8.0/server

このままサービスを起動します。そしてOS 起動時に自動的にMySQL も起動されるように設定。

# systemctl start mysqld.service
# systemctl enable mysqld.service
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

先ほどのページに、mysql_secure_installation なる操作があります。軽く調べたところMySQL を使う上でのお作法のようです。とりあえずやっておきますがここでは省略。このページの通りにしました

やっと手順2-c

Zabbix 公式の手順に戻ります。
MySQL に入っていじります。ログインにはさっきのmysql_secure_installation で決めたroot のパスワードです。
公式のこの部分です。

# mysql -uroot -p
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.02 sec)

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

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

mysql> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> quit;

'password' のところは適当に埋めてくださいね。あとで使います。

続いて「初期スキーマとデータのインポート」なる操作。

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

なにこれ、と思ったのでcopilot に聞いてみました。

このコマンド全体としては、Zabbixの初期設定に必要なSQLスクリプトを解凍し、その内容をzabbixデータベースにインポートする処理を行っています。

なるほどわからん

次の手順では再度MySQL に入ります。

# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

データベース設定編集(手順2-d)

image.png
と書かれているので、vi コマンドでいじります

vi /etc/zabbix/zabbix_server.conf

で、下のようにいじりました。コメントアウトをはずしてパスワード入力。

image.png

zabbix 起動(手順2-e)

公式の手順のままです。

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service  → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

zabbix にアクセス(手順2-f)

php の拡張機能を入れ忘れてます。先にインストールすべきだと思います。どのタイミングならば大丈夫かは未検証。

ブラウザで、http://<サーバのIPアドレス>/zabbix と打てばアクセスできるようです。
image.png

....アクセスできません。通信を拒否られてるっぽい。

ファイアーウォール空ける

この記事どおりに設定しました。
ただし試しにhttp だけを空けてみましょう。

# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

これではアクセスできなかったので他のポートも空けました。
※そのあとNSG の設定漏れと気づいて解消しました。http だけでいけるっぽいです。

ついにZabbix 画面

image.png
Next step を押下します。
image.png
ここまでの手順ではすべてOK でした。Next step
image.png
zabbixpass を入れたらエラーが出ました。

そういやphp の拡張機能のことを忘れていましたがそれが原因でしょうか。

php インストール

手順は次のようになるらしいです。

  1. epel リポジトリインストール
  2. remi リポジトリインストール
  3. php インストール ここで拡張機能入れる

それぞれ次のような感じです。

# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module reset php
# dnf module enable php:remi-8.0
# dnf install -y php php-bcmath php-mbstring php-ldap php-gd php-xml php-mysqlnd php-json php-zip php-ctype php-session php-sockets php-gettext

最後のコマンドはcopilot にzabbix の要件ページのurl を渡して「拡張機能全部入れるコマンドを教えて」って言えば用意してくれました。きもちい

しかしこれでも同じエラーが出ます。パスワードを確認しても合ってるしなぁ
OS 再起動でもあかん
ここらでスナップショットとりました。

データベース作り直してみる

データベースを削除して作り直そうとしたところ、mysql> create user を打つとエラーが発生。

mysql> create user zabbix@localhost identified by 'zabbixpass';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql>

パスワードポリシーに引っかかってますね。同じパスワードで設定しようとしているのに
はて、最初はできたはず、、、予行で検証した時も通ったのになぁ

強いパスワードを用意して(12字で大文字小文字、記号アリ)、再度データベースを作り、/etc/zabbix/zabbix_server.conf で同じパスワードにしたのち、zcat までやり直したところ先に進めました。

image.png
あとは適当に設定して、初期ID: Admin、pass: zabbix でログインするとダッシュボードが見えました!
image.png

今回はここまでにします。お疲れさまでした。

備忘録 パスワード変更で対処 (未解決)

以降の文章は、MySQL の理解が不十分で、ものすごく混乱しています。馬鹿なことやってんなぁという気持ちで読んでください。

スナップショットを復元して、データベースとユーザーを作り直さずにパスワード変更で通るかを見てみましょう。

スナップショットを復元しました。
以下コマンドでパスワード変更。これはデータベースのパスワード。

# vi /etc/zabbix/zabbix_server.conf

これだけだとデータベースにアクセスできない同じエラーが発生。
ユーザーのパスワードも変更しないと。mysql で、これまでの手順で作成したzabbix データベースのパスワードを変更します。

mysql> set password for zabbix@localhost = 'new_password';
ERROR 1133 (42000): Can't find any matching row in the user table

は?zabbix おらんかったの?なんで?
image.png

では以下のコマンドで作ります。

mysql> create user zabbix@localhost identified by 'new_password';
Query OK, 0 rows affected (0.21 sec)

これだとまだアクセスエラーが出ます(同じやつ)。スキーマのインポートとやらもやり直しましょうか。

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

なぜか新しく付けたパスワードが通らない。。。
ユーザーとDB には同じパスワードを使っているんですが。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?