システム奮闘記:その114

Zabbixのインストール



Tweet

(2023年2月23日に掲載)

はじめに  SNMP(Simple Network Management Protocol:簡易ネットワーク管理規約)を知ったのは2004年だった。  インターネットVPNの導入の際、ヤマハのルーターの状況を確認できないかと考えた。  その時、ルーターの設定がソフトバンクに外注していたので  ソフトバンクに頼んでSNMPの設定してもらった  のだった。
ソフトバンクに設定してもらったSNMPの設定
snmp host any
snmp community read-only public
snmp yrifppdisplayatmib2 on
もちろん当時、この設定の意味は理解していなかった。

 それから18年もの間、放置された状態が続いた。


 もちろん途中で

 SNMPを勉強せねば

 と思いつつも

 やっている暇があらへん

 で終わっていた。

 気が付けば18年もの歳月が経ってしまったのだ。


インターネットVPNについて
インターネットVPNの導入時、当初はルーターの設定をソフトバンクに外注だった。
だが、回線切替時に相次ぐ問題などが発生し、その過程で設定を覚えていったため
その後は自力で設定するようになった。
しかしSNMPについての勉強はしなかったためソフトバンクが設定してくれたものを
永久保存する形で寝かしていたのだ。

その話は「システム奮闘記:その35」(インターネットVPN導入で通信費大幅削減)をご覧ください。

 そして拠点間通信は18年間に、インターネットVPNから
NTTが提供するワイドVPN、そしてソフトバンクのSmartVPNと変わっていったが
SNMPの設定は、そのまま残していた。



拠点間通信が遅い

 転機は訪れた。  2021年頃から、たまに午前中だけ拠点間通信が極端に遅い現象が現れた。  原因がわからへん  だった。  2022年になると月に1,2回の割合で起こるようになった。

ソフトバンクとの打ち合わせ

 本社と営業所を結ぶ拠点間通信だが  ソフトバンクの SmartVPN  を利用している。
ソフトバンクのSmartVPNの概略
ソフトバンクのSmartVPNの概略
もともとインターネットVPN用に使っていたヤマハのルーターがある。
それを生かした形での通信機器の構成になっている。

SmartVPNを導入した際、ソフトバンクからレンタルのルーターも設置する事になった。
回線費用を下げるため、足回りはNTTのフレッツ光を使っている。

 ソフトバンクから指摘されたのは

 網終端装置が問題


ソフトバンクのSmartVPNと網終端装置との関係
ソフトバンクのSmartVPNと網終端装置との関係
NTTのフレッツ網とプロバイダーとの接続部分に網終端装置がある。
2004年にインターネットVPNを導入した際、網終端装置の存在があるのを知った。

プロバイダーとの接続で網終端装置を経由する。
網終端装置は何台かあるのだが、経由する網終端装置の割り振りは無作為に割り振られるため
運が悪い場合は、混雑した網終端装置を通る事になる。
そのため混雑が発生すると通信が遅くなるという。

プロバイダー側が網終端装置を増強したくてもNTTが許さないという事情がある。

 コロナの影響で在宅勤務が増えたりしたため

 網終端装置の混雑が起こるようになった

 ようだ。

 だが、通信網の状態は目に見えない。
 そのため、いつ、どこで問題が発生しているのかがわからない。


 そんな中、SNSで通信の混雑の事をつぶやくと、ある方から

 Zabbixがお勧め

 と助言してくれた。


Zabbixの導入

 Zabbixが何なのかを知る必要がある。  ラトビアのZabbix会社が公開したオープンソース  サーバー監視、ネットワーク監視など行う統合管理ソフト  なのだ。  サーバー監視やネットワーク監視状況を  ブラウザーで閲覧できる  という手軽さもあるのだ、
Zabbixを使ったネットワーク監視
Zabbixを使ったネットワーク監視
本社にZabbixを導入し、営業所にあるルーターを監視する形をとる
もし、営業所側の網終端装置で混雑がおこって

 社内にはサーバーはある。VMwareESXiを使って仮想化しているので
いつでも仮想化OSを作った上で、Zabbixを試験導入する事はできる。

営業所で通信が遅くなった場合、原因が調べやすくなる
営業所で通信が遅くなった場合、原因が調べやすくなる
本社のZabbixを使って、各営業所のルーターを監視する事で
営業所側の網終端装置に混雑が発生した場合、どこの営業所で発生しているか
すぐにわかるようになる。

 この時、本社側の網終端装置については何も考えていなかった。

 全営業所が同時に遅くなる

 という情報がなかっただけに、特定の営業所だけ発生していると考えたからだ。


Zabbixのインストール

 仮想OSはCentOS7を使った  Zabbixのインストールなのだが、もちろん自力ではなく  忍法、丸写しの術  なのだ。  ネットで調べてみるとZabbixのホームページに組み合わせなどが出てくるという。  これを見るとOSとZabbixのバージョンの組み合わせ、インストール方法が書かれているのだ。
Zabbixのホームページで組み合わせが確認できる (最新バージョン6.2の場合)
Zabbix6.2とCentOS7の組み合わせの場合
Zabbixのコンポーネントの所にサーバーが出てこない。
CentOS7ではZabbix6.2のサーバーを構築は困難なようだ。

 そこでZabbixのバージョンを5に下げてみる。

Zabbixのホームページで組み合わせが確認できる (バージョン5の場合)
Zabbix5とCentOS7の組み合わせの場合
組み合わせが出てきた。
そしてここには出ていないがインストール方法まで表示される。


 CentOS7ならZabbix5という組み合わせだ。


 インストールの際、Zabbixのホームページだけでなく、以下のサイトの丸写しをしたのだ。
 Zabbixの構築手順(CentOS 7,MySQL)インストールとログインまで
 Zabbix 5.0をインストールして監視サーバを構築する(CentOS7.9 + PostgreSQL + Apache)
  » 第 1 回 Zabbix を動かしてみよう - SRA OSS


 インストールの前に大事な事がある。

 SELinuxをファイヤーウォールを無効にするのらー!!


 SELinuxが有効だとインストールができないようだ。
 » 第 1 回 Zabbix を動かしてみよう - SRA OSSを見ると以下の事が書いていた。

SRA社のサイトに書いていたSELinuxを無効にしないとインストールが失敗するという文言
Zabbix サーバ上で SELinux が有効になっていると、設定ファイルの書き込みに失敗するため、インストールに失敗します。
事前に SELinux を無効もしくは permissive に変更する、設定ファイルのセキュリティコンテキストを変更する、のいずれかの設定を行う必要があります。

 自分の頭で考えるだけの知識がないので、素直にSRA社の文言を信じてSELinuxを無効にする。

 SELinuxの設定ファイルがあるディレクトリーに移動する。

SELinuxの設定ファイルがあるディレクトリーに移動
[root@zabbix]# cd /etc/selinux/
[root@zabbix selinux]# ls
config  final  semanage.conf  targeted  tmp
[root@zabbix]#

 設定ファイル config の記述の変更を行う。

SELinuxを無効にする方法
初期状態
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
変更後
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disable
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted


 次にファイヤーウォール機能を無効にする必要がある。
 どのポートを使うのかを理解するまでは、ファイヤーウォール機能を外すのが賢明だ。

ファイヤーウォール機能を停止にする方法
現状のファイヤーウォールのデーモンの停止
[root@zabbix]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix]#
CentOS7の起動時にファイヤウォールを起動しないようにする措置
[root@zabbix]# systemctl stop firewalld
[root@zabbix]# 

 SELinuxとファイヤウォールの停止をし忘れるとハマって抜けらへんようになるのらー!!


 Zabbixのインストールだ。

 その前にZabbixを動かすための周辺ソフトや環境を整える必要がある。

 Zabbixが採取したデータなどを保管するデータベースとしてMySQLを使う事にした。

実はMySQLのインストールは失敗したのだ
MySQLをインストールしたが失敗した。
派生版のMariaDBを使ったのだ。後述しています。

もっと書くと当初、PostgreSQLをインストールして動かす予定だったが
それも失敗してMySQLに挑戦した。でも、失敗し、MariaDBになったのだ。

 MySQLのインストールが失敗する未来の事など、この時は知らない。
 そのためMySQLのインストールを行った。もちろんネットの丸写し。

 まずはMySQLのリポジトリの登録が必要なのだ。

MySQLのリポジトリの登録
[root@zabbix ~]# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
読み込んだプラグイン:fastestmirror, langpacks
mysql80-community-release-el7-3.noarch.rpm | 25 kB 00:00:00
/var/tmp/yum-root-alkxBA/mysql80-community-release-el7-3.noarch.rpm を調べています: mysql80-community-release-el7-3.noarch
/var/tmp/yum-root-alkxBA/mysql80-community-release-el7-3.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql80-community-release.noarch 0:el7-3 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================
Package アーキテクチャー
バージョン
リポジトリー 容量
=======================================================================================
インストール中:
mysql80-community-release noarch el7-3 /mysql80-community-release-el7-3.noarch 31 k

トランザクションの要約
=======================================================================================
インストール 1 パッケージ

合計容量: 31 k
インストール容量: 31 k
Is this ok [y/d/N]:
迷わずYesを選ぶ。

 続きが走る。

MySQLのリポジトリの登録(2)
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
インストール中 : mysql80-community-release-el7-3.noarch 1/1
検証中 : mysql80-community-release-el7-3.noarch 1/1

インストール:
mysql80-community-release.noarch 0:el7-3

完了しました!
[root@zabbix ~]#
無事、完了した。

 ところで

 リポジトリって何やねん??

 英語の綴りは「repository」だ。意味は貯蔵庫とか保管庫の意味だ。
 調べてみるとリポジトリ - Linux技術者認定 LinuC | LPI-Japan

 オープンソースではリポジトリというと以下の意味になるという。

リポジトリとは何か
プログラムのソースやバイナリーが保管されている場所

 つまり

 MySQLのパッケージのダウンロード先の登録

 なのだ。


 そしてMySQLのインストールを行うのだが・・・

MySQLをyumを使ってインストール
[root@zabbix ~]# yum install mysql-community-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-server.x86_64 1:5.5.68-1.el7 を 不要
--> 依存性の処理をしています: mariadb-server のパッケージ: akonadi-mysql-1.9.2-4.el7.x86_64

(途中省略)

---> パッケージ qt-x11.x86_64 1:4.8.7-8.el7 を 更新
---> パッケージ qt-x11.x86_64 1:4.8.7-9.el7_9 を アップデート
--> 依存性解決を終了しました。
エラー: パッケージ: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)
             要求: mariadb-server
            削除中: 1:mariadb-server-5.5.68-1.el7.x86_64 (@anaconda)
                mariadb-server = 1:5.5.68-1.el7
            次のものにより不要にされた: : mysql-community-server-8.0.30-1.el7.x86_64 (mysql80-community)
                見つかりません
問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest [root@zabbix ~]#
エラーが出た。青い部分は回避法だという。

 そこで回避法を使ってみるのだが・・・

yumに回避法のオプションをつけてMySQLのインストール
[root@zabbix ~]# yum install mysql-community-server --skip-broken
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp


(途中、省略)

1:qt-mysql-4.8.7-9.el7_9.x86_64 (updates から)
1:qt-x11-4.8.7-9.el7_9.x86_64 (updates から)
エラー: Multilib version problems found. This often means that the root
cause is something else and multilib version checking is just
pointing out that there is a problem. Eg.:

1. You have an upgrade for net-snmp-libs which is missing some
dependency that another package requires. Yum is trying to
solve this by installing an older version of net-snmp-libs of the
different architecture. If you exclude the bad architecture
yum will tell you what the root cause is (which package
requires what). You can try redoing the upgrade with
--exclude net-snmp-libs.otherarch ... this should give you an error
message showing the root cause of the problem.

2. You have multiple architectures of net-snmp-libs installed, but
yum can only see an upgrade for one of those architectures.
If you don't want/need both architectures anymore then you
can remove the one with the missing update and everything
will work.

3. You have duplicate versions of net-snmp-libs installed already.
You can use "yum check" to get yum show these errors.

...you can also use --setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).

Protected multilib versions: 1:net-snmp-libs-5.7.2-49.el7.i686 != 1:net-snmp-libs-5.7.2-49.el7_9.2.x86_64

[root@zabbix ~]#
エラーが出た。

 なんでやねん!!

 ここで万事休すかと思ったが、往生際の悪さは天下一品なのも健在。


 ネットで検索すると以下のサイトを発見した。
 Zabbix 5.0をCentOS 7にインストール(SCL編)

 次の2つの事が書いていた。

発見したサイトに書いていた事
(1) CentOS7から標準パッケージとしてMySQLが外された事
(2) (1)の理由からMariaDBを使う


 まさに救いの女神だった!!


 気を取り直してと思いながらも、まだMySQLのインストールの失敗しかしていない。  引き続き、Zabbixのインストールを行う事にした。  Zabbixのリポジトリ(パッケージが置いている場所)の登録を行う。  パッケージはZabbix社のサイトにあるというのだ。  もちろんネットの丸写しだ。
Zabbixのリポジトリ登録
[root@zabbix ~]# yum install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
読み込んだプラグイン:fastestmirror, langpacks
zabbix-release-5.0-1.el7.noarch.rpm | 14 kB 00:00:00
/var/tmp/yum-root-alkxBA/zabbix-release-5.0-1.el7.noarch.rpm を調べています: zabbix-release-5.0-1.el7.noarch
/var/tmp/yum-root-alkxBA/zabbix-release-5.0-1.el7.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ zabbix-release.noarch 0:5.0-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
=======================================================================================
インストール中:
zabbix-release noarch 5.0-1.el7 /zabbix-release-5.0-1.el7.noarch 22 k

トランザクションの要約
=======================================================================================
インストール 1 パッケージ

合計容量: 22 k
インストール容量: 22 k
Is this ok [y/d/N]:
迷わずyesを選ぶ

 続きが走る。

Zabbixのリポジトリの登録(2)
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : zabbix-release-5.0-1.el7.noarch 1/1
検証中 : zabbix-release-5.0-1.el7.noarch 1/1

インストール:
zabbix-release.noarch 0:5.0-1.el7

完了しました!
[root@zabbix ~]#
無事、完了

 レポジトリ(Zabbixの置き場)の登録が終わったので、
Zabbix本体とエージェントのインストールを行う。

 MariaDBを使うのだが、MariaDBとMySQLは互換性があるので
この場合でもZabbixのパッケージはMySQL版が使える。
 ネットに書いている事の受け売りがバレバレなのだ。

Zabbix本体とエージェントのインストール(1)
[root@zabbix ~]# yum install zabbix-server-mysql zabbix-agent
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ zabbix-agent.x86_64 0:5.0.26-1.el7 を インストール
---> パッケージ zabbix-server-mysql.x86_64 0:5.0.26-1.el7 を インストール
--> 依存性の処理をしています: fping のパッケージ: zabbix-server-mysql-5.0.26-1.el7.x86_64
--> 依存性の処理をしています: libOpenIPMIposix.so.0()(64bit) のパッケージ: zabbix-server-mysql-5.0.26-1.el7.x86_64
--> 依存性の処理をしています: libOpenIPMI.so.0()(64bit) のパッケージ: zabbix-server-mysql-5.0.26-1.el7.x86_64
--> 依存性の処理をしています: libodbc.so.2()(64bit) のパッケージ: zabbix-server-mysql-5.0.26-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ OpenIPMI-libs.x86_64 0:2.0.27-1.el7 を インストール
--> 依存性の処理をしています: OpenIPMI-modalias = 2.0.27-1.el7 のパッケージ: OpenIPMI-libs-2.0.27-1.el7.x86_64
---> パッケージ fping.x86_64 0:3.16-1.el7 を インストール
---> パッケージ unixODBC.x86_64 0:2.3.1-14.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ OpenIPMI-modalias.x86_64 0:2.0.27-1.el7 を インストール --> 依存性の処理をしています: OpenIPMI のパッケージ: OpenIPMI-modalias-2.0.27-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ OpenIPMI.x86_64 0:2.0.27-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
=======================================================================================
インストール中:
zabbix-agent x86_64 5.0.26-1.el7 zabbix 477 k
zabbix-server-mysql x86_64 5.0.26-1.el7 zabbix 3.1 M
依存性関連でのインストールをします:
OpenIPMI x86_64 2.0.27-1.el7 base 243 k
OpenIPMI-libs x86_64 2.0.27-1.el7 base 523 k
OpenIPMI-modalias x86_64 2.0.27-1.el7 base 16 k
fping x86_64 3.16-1.el7 zabbix-non-supported 44 k
unixODBC x86_64 2.3.1-14.el7 base 413 k

トランザクションの要約
=======================================================================================
インストール 2 パッケージ (+5 個の依存関係のパッケージ)

総ダウンロード容量: 4.8 M
インストール容量: 13 M
Is this ok [y/d/N]:
迷わずYesを押す

 続きが走る。

Zabbix本体とエージェントのインストール(2)
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/base/packages/OpenIPMI-modalias-2.0.27-1.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
OpenIPMI-modalias-2.0.27-1.el7.x86_64.rpm の公開鍵がインストールされていません
(1/7): OpenIPMI-modalias-2.0.27-1.el7.x86_64.rpm | 16 kB 00:00:00
(2/7): OpenIPMI-libs-2.0.27-1.el7.x86_64.rpm | 523 kB 00:00:00
(3/7): unixODBC-2.3.1-14.el7.x86_64.rpm | 413 kB 00:00:00
警告: /var/cache/yum/x86_64/7/zabbix-non-supported/packages/fping-3.16-1.el7.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 79ea5ed4: NOKEY
fping-3.16-1.el7.x86_64.rpm の公開鍵がインストールされていません
(4/7): fping-3.16-1.el7.x86_64.rpm | 44 kB 00:00:00
(5/7): OpenIPMI-2.0.27-1.el7.x86_64.rpm | 243 kB 00:00:00
警告: /var/cache/yum/x86_64/7/zabbix/packages/zabbix-agent-5.0.26-1.el7.x86_64.rpm: ヘ ッダー V4 RSA/SHA512 Signature、鍵 ID a14fe591: NOKEY
zabbix-agent-5.0.26-1.el7.x86_64.rpm の公開鍵がインストールされていません
(6/7): zabbix-agent-5.0.26-1.el7.x86_64.rpm | 477 kB 00:00:01
(7/7): zabbix-server-mysql-5.0.26-1.el7.x86_64.rpm | 3.1 MB 00:00:04
---------------------------------------------------------------------------------------
合計 1.0 MB/s | 4.8 MB 00:04
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 から鍵を取得中です。
Importing GPG key 0xA14FE591:
Userid : "Zabbix LLC <packager@zabbix.com>"
Fingerprint: a184 8f53 52d0 22b9 471d 83d0 082a b56b a14f e591
Package : zabbix-release-5.0-1.el7.noarch (@/zabbix-release-5.0-1.el7.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
上記の処理を行います。よろしいでしょうか? [y/N]
迷わずyesを押す

 さらに続きが走る。

Zabbix本体とエージェントのインストール(3)
上記の処理を行います。よろしいでしょうか? [y/N]y
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX から鍵を取得中です。
Importing GPG key 0x79EA5ED4:
Userid : "Zabbix SIA <packager@zabbix.com>"
Fingerprint: fbab d5fb 2025 5eca b22e e194 d13d 58e4 79ea 5ed4
Package : zabbix-release-5.0-1.el7.noarch (@/zabbix-release-5.0-1.el7.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : OpenIPMI-libs-2.0.27-1.el7.x86_64 1/7
インストール中 : OpenIPMI-2.0.27-1.el7.x86_64 2/7
インストール中 : OpenIPMI-modalias-2.0.27-1.el7.x86_64 3/7
インストール中 : fping-3.16-1.el7.x86_64 4/7
インストール中 : unixODBC-2.3.1-14.el7.x86_64 5/7
インストール中 : zabbix-server-mysql-5.0.26-1.el7.x86_64 6/7
インストール中 : zabbix-agent-5.0.26-1.el7.x86_64 7/7
WARNING: ipmi_devintf module isn't available.
WARNING: ipmi_msghandler module isn't available.
検証中 : zabbix-agent-5.0.26-1.el7.x86_64 1/7
検証中 : OpenIPMI-2.0.27-1.el7.x86_64 2/7
検証中 : unixODBC-2.3.1-14.el7.x86_64 3/7
検証中 : zabbix-server-mysql-5.0.26-1.el7.x86_64 4/7
検証中 : OpenIPMI-libs-2.0.27-1.el7.x86_64 5/7
検証中 : fping-3.16-1.el7.x86_64 6/7
検証中 : OpenIPMI-modalias-2.0.27-1.el7.x86_64 7/7

インストール:
zabbix-agent.x86_64 0:5.0.26-1.el7 zabbix-server-mysql.x86_64 0:5.0.26-1.el7

依存性関連をインストールしました:
OpenIPMI.x86_64 0:2.0.27-1.el7 OpenIPMI-libs.x86_64 0:2.0.27-1.el7
OpenIPMI-modalias.x86_64 0:2.0.27-1.el7 fping.x86_64 0:3.16-1.el7
unixODBC.x86_64 0:2.3.1-14.el7

完了しました!
[root@zabbix ~]#
完了した。

 次にデータベースのインストールだ。
 MariaDBのインストールを行う。


MariaDBのインストール(1)
[root@zabbix ~]# yum install mariadb-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
パッケージ mariadb-server は mysql-community-server によって不要になりました。代わりに mysql-community-server-8.0.30-1.el7.x86_64 のインストールを試みています。
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-server.x86_64 1:5.5.68-1.el7 を 不要

(途中、省略)

---> パッケージ qt-x11.x86_64 1:4.8.7-9.el7_9 を アップデート
--> 依存性解決を終了しました。
エラー: パッケージ: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)
要求: mariadb-server
削除中: 1:mariadb-server-5.5.68-1.el7.x86_64 (@anaconda)
mariadb-server = 1:5.5.68-1.el7
次のものにより不要にされた: : mysql-community-server-8.0.30-1.el7.x86_64 (mysql80-community)
見つかりません
問題を回避するために --skip-broken を用いることができます。
これらを試行できます: rpm -Va --nofiles --nodigest

[root@zabbix ~]#
エラーが出たのだ。

 なんでやねん!!

 ここで万事休すかと思ったが、往生際の悪さは天下一品なのも健在。

 調べていくと・・・

 MySQLのリポジトリ削除

 をすれば良い事がわかった。

MySQLのリポジトリの削除
[root@zabbix ~]# rm /etc/yum.repos.d/mysql-community
mysql-community-source.repo mysql-community.repo
[root@zabbix ~]# rm /etc/yum.repos.d/mysql-community
mysql-community-source.repo mysql-community.repo
[root@zabbix ~]# rm /etc/yum.repos.d/mysql-community
mysql-community-source.repo mysql-community.repo
[root@zabbix ~]# rm /etc/yum.repos.d/mysql-community*
rm: 通常ファイル `/etc/yum.repos.d/mysql-community-source.repo' を削除しますか? y
rm: 通常ファイル `/etc/yum.repos.d/mysql-community.repo' を削除しますか? y
[root@zabbix ~]#
どのサイトを見たのかは忘れてしまったが、上記の方法を真似したのだ。

 そして気を取り直して、再度、MariaDBをインストールする。

再度、MariaDBのインストール
[root@zabbix ~]# yum install mariadb-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
パッケージ 1:mariadb-server-5.5.68-1.el7.x86_64 はインストール済みか最新バージョンです
何もしません
[root@zabbix ~]#
あっさりと終わってしまった。
どうやらMariaDBをインストールする際、MySQLのリポジトリなどが邪魔をしていたようだ。



 そしてMariaDBを起動させる。
 この手順もネットの丸写しだ。

MariaDBを起動させる
[root@zabbix ~]# systemctl start mariadb


 まずはMariaDBのセキュリティー関連の設定を行う。

MariaDBのセキュリティー関連の設定(パスワード)
[root@zabbix ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n]
管理者パスワードの設定の有無を聞いてくる。
もちろんYesだ。

 管理者パスワードを設定する

MariaDBのセキュリティー関連の設定(anonymousの削除の有無)
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
初期設定では匿名ユーザー(anonymous)での接続ができる。
質問では匿名ユーザー(anonymous)を削除しますかだ
もちろんyesだ。

 anonymousのユーザーを削除すると

MariaDBのセキュリティー関連の設定(管理者IDでのリモート接続を不許可にするかどうかについて)
Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
普通は管理者IDでの接続はローカル(サーバー本体)のみだ。
ここでの質問は管理者IDでネットワーク接続を不許可にするかどうかだ。
もちろん不許可なのでYesだ。

 管理者IDでのリモート接続を不許可にすると


MariaDBのセキュリティー関連の設定(誰でも接続できるデータベースの削除について)
Disallow root login remotely? [Y/n] y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
MariaDBには初期設定で誰でも接続できるテストのデータベースがある。
それを削除するかの質問だが、迷わずYesにする。

 テストのデータベースを削除すると

MariaDBのセキュリティー関連の設定(privilege tablesの再読み込みについて)
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
ここまで設定した内容を反映させるために「privilege tables」を再読み込みするようだ。
ここはネットの丸写しで「Yes」にした。

 再読み込みを行った。

MariaDBのセキュリティー関連の設定(完了)
Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@zabbix ~]#
セキュリティー関連の設定完了だ。

 セキュリティー関連の設定が終わった所で、設定ファイルの書き換えを行う。
 データベースで使う文字コードの設定だ。

触るファイル名
[root@zabbix ~]# emacs /etc/my.cnf.d/server.cnf
ファイルの記述内容
# this is only for the mysqld standalone daemon
[mysqld]
character-set-server = utf8
collation-server = utf8_bin
skip-character-set-client-handshake
innodb_file_per_table

 文字コードをUTF8にしたのだ。

 そしてMariaDBの再起動と、サーバー起動時に自動的にMariaDBも起動するように設定する。

MariaDBの再起動と、サーバー起動時に自動的にMariaDBも起動するように設定
[root@zabbix ~]# systemctl restart mariadb
[root@zabbix ~]# systemctl enable mariadb
上が再起動。下がサーバー起動時に、MariaDBも自動起動する設定だ。


 次にZabbixの初期データベースの設定を行う。

データベースに接続
[root@zabbix ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
管理者IDでデータベースに接続する。

 そしてデータベース上で、Zabbizに必要なテーブルの作成、ユーザー名、パスワードの設定を行う。

Zabbizに必要なデータベースの作成、ユーザー名、パスワードの設定
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'パスワード' ;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye
[root@zabbix ~]#
赤い部分はデータベースの作成。
その下はユーザー名を「zabbix」としてパスワード設定を行う。
grantとなっているので、管理者権限を付与している。

 作成したデータベースにテーブルの作成を行う。

作成したデータベースにテーブルの作成を行うがエラーが出る。
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz | mysql -uzabbix -p
Enter password:
ERROR 1046 (3D000) at line 1: No database selected
[root@zabbix ~]#

 エラーが出てもうた (TT)

 なぜエラーが出るのか、わからへん。
 どないしてエエのか、わからへん。

 だが、次のページを見た事で原因がわかった。
 MySQL 初心者の時によくあるエラーと修正方法・コメントの書き方

 そこで create.sql.gz ファイルの中身を見てみる事にした

create.sql.gz ファイルの中身を見てみる
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz | more
CREATE TABLE `users` (
`userid` bigint unsigned NOT NULL,
`alias` varchar(100) DEFAULT '' NOT NULL,
`name` varchar(100) DEFAULT '' NOT NULL,
データベースを指定せず、いきなりテーブルの作成明細のSQL文になっている。

 tar.gzのままでは書き換えができないため解凍する。

create.sql.gzを解凍
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz > create.sql
書き込みが可能なように create.sql にする。

 そこでデータベース名の指定を行う事にした。

create.sqlにデータベースを指定した
use zabbix;
CREATE TABLE `users` (
`userid` bigint unsigned NOT NULL,
`alias` varchar(100) DEFAULT '' NOT NULL,
`name` varchar(100) DEFAULT '' NOT NULL,
赤い部分はデータベース名の指定になる。

 そしてテーブル作成を再度行うと

テーブル作成を再度行う
[root@zabbix ~]# cat create.sql | mysql -uzabbix -p
Enter password:
[root@zabbix ~]#
問題なくテーブルなどの作成ができた。

 うまくいったのらー!!


 次に設定ファイルにZabbixにログインする時のパスワードを設定する。

 設定ファイルは /etc/zabbix/zabbix_server.conf になるのだ。

設定ファイル(/etc/zabbix/zabbix_server.conf)を書き換え
書き替え前
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=
書き換え後
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=password
桃色がパスワードになる。

 レポジトリに関するファイルの書き換えを行う。
 ファイルは /etc/yum.repos.d/zabbix.repo だ。

設定ファイル( /etc/yum.repos.d/zabbix.repo )を書き換え
書き替え前
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
書き換え後
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
桃色の部分を「0」から「1」に書き換える。

 ソフトウェアコレクション(SCL)のインストールを行う。

ソフトウェアコレクション(SCL)のインストール
[root@zabbix ~]# yum install centos-release-scl
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp

途中、省略

依存性関連をインストールしました:
centos-release-scl-rh.noarch 0:2-3.el7.centos

完了しました! [root@zabbix ~]#
途中で質問があるが、全てYesで答えるのだ。

 ところでSCLって何やねん??


SCL(Software Collections)
Red HatやCentSOにある機能だ。
使っているCentOSが古くなっても
新しいパッケージをインストールできる仕組みがある。

RedHatやCentOSはサポート期間が長いので
PHPやApacheなどのパッケージソフトもバージョンが古いままになり
そのバージョンでは古くて動かない場合が出てくる。
それを回避するために、新しいバージョンのパッケージを
インストールできるできる仕組みができた

通常だと、CentOS7ではPHP5が使われている所を
今回、ZabbixをインストールするためにPHP7系のパッケージを
インストールために、SCLが使う事になったのだ。

 わかったような、わからんな説明になっった。
 要するに、はっきりと理解していない事が丸わかりなのだ。


 次にZabbixの本体や周辺のソフトのインストールを行う。
 もちろん、複数あるのだが、ネットの丸写し。

Zabbixの本体や周辺のソフトのインストール
[root@zabbix ~]# yum install zabbix-web zabbix-deps-scl zabbix-web-mysql-scl zabbix-apache-conf-scl zabbix-web-japanese
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile

途中、省略

vlgothic-p-fonts.noarch 0:20130607-2.el7
zabbix-web-deps-scl.noarch 0:5.0.26-1.el7

完了しました!
[root@zabbix ~]#
途中で質問があるが、全てYesで答えるのだ。


 次に標準時の設定だ。
 初期値ではラトビアの首都・リガになっている。

設定ファイル(/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf )を書き換え
書き替え前
; php_value[date.timezone] = Europe/Riga
書き換え後
; php_value[date.timezone] = Europe/Riga
php_value[date.timezone] = Asia/Tokyo
桃色が標準時の設定になる。アジア・東京にする。
日本標準時は明石市だが、設定は明石ではないのだ。

 触ったファイルが格納されているディレクトリに注目
 /etc/opt/rh/rh-php72/となっている。

 php72とはPHP7.2の事

 なのだ。
 CentOS7ではPHP5系なのに、ZabbixのインストールではPHP7.2がインストールされている。
 SCLをインストールしておかないと、CentOS7にPHP7.2をパッケージでインストールはできないのだ。
 


 まずはZabbixを起動させる。

Zabbixを起動させる
[root@zabbix ~]# systemctl start zabbix-agent zabbix-server rh-php72-php-fpm httpd

 そしてサーバーの起動時にZabbixを自動的に起動させる設定を行う。

サーバーの起動時にZabbixを自動的に起動させる設定
[root@zabbix ~]# systemctl enable zabbix-agent zabbix-server rh-php72-php-fpm httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-php72-php-fpm.service to /usr/lib/systemd/system/rh-php72-php-fpm.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zabbix ~]#
青い部分がサーバー起動時にZabbixを自動的に起動させる設定だ

 これで準備良し。


ブラウザでのインストールの最終設定

 次にZabbixをインストールする最終設定をブラウザ上で行う。  まずはブラウザを開く。URLは  http://(サーバーのアドレス)/zabbix/setup.php  になる。  社内のサーバーなのでSSL対応はしていないので「http」なのだ
ブラウザでのインストールの最終設定
ブラウザでのインストールの最終設定
「Next step」を押す。

 既に設定されている内容の確認画面だ。

既に設定されている内容の確認画面
既に設定されている内容の確認画面
「Next step」を押す。

 Zabbixがデータベースへの接続するための設定だ。

Zabbixがデータベースへの接続するための設定
Zabbixがデータベースへの接続するための設定

 設定する内容は以下の2つだ。

Zabbixがデータベースへの接続するための設定内容
abbixがデータベースへの接続するための設定を記入
桃色のデータベースのポートは「0」のままにしておく。
「0」にする事で、MarieDBの接続ポートの初期値が自動的に入る。

青色の部分はデータベースへの接続のパスワードだ。

設定が終わったら「Next step」を押す。

 Zabbixサーバーの設定を行う。

Zabbixサーバーの設定
Zabbixサーバーのホスト名とポートの指定だが、今回、初期状態のままを使うので何もしない。

「Next step」を押す。

 設定内容の確認画面になる。

設定内容の確認画面
設定内容の確認画面
設定に問題なければ、そのまま「Next step」を押す。

 ここでインストール作業が終わった。

 見事、インストールの成功!

 なのだ。


Zabbixにログインして設定

 インストールは終わったものの、使い勝手を良くするために Zabbixにログインしてからの設定が必要になる。 
Zabbixのログイン画面
Zabbixのログイン画面
一目見て、言語設定が英語になっているのに気づく。

 拡大する。

Zabbixのログイン画面を拡大
Zabbixのログイン画面を拡大
「Remember me for 30 days」と英語になっている。
日本語に直すためにログインして英語の画面から日本語の画面に変更するので
なんだか不思議な感じがする

IDとパスワードを入力する。

 Zabbixにログインした時の画面

Zabbixにログインした時の画面
Zabbixにログインした時の画面
エラー表示が出ているが気にしない。

 まずは言語を日本語に変更する。

Zabbixの言語を日本語にする設定・その1
Zabbixの言語を日本語にする設定・その1
赤く囲んだ所の「 User settings 」を選ぶ。

 上記の部分の拡大図。

拡大画面
Zabbixの言語を日本語にする設定の拡大画面
赤く囲んだ所の「 User settings 」を選ぶ。

 次の画面に変わる。

Zabbixの言語を日本語にする設定・その2
Zabbixの言語設定の画面
表示言語が英語になっている。

 そこで日本語に変更する。

Zabbixの言語を日本語にする設定・その3
Zabbixの言語選択
言語選択で「日本語」に設定する。
日本語に設定するのに「日本語」の表示ではなく「Japanses」なのか。
ちょっと疑問に思ってしまった。

 日本語を選んだ所で更新ボタンを押す。

Zabbixの言語を日本語にする設定・その4
Zabbixの言語選択後の更新ボタン
更新ボタンの「Update」を押す。

 すると画面表示の言語が日本語に変わる。

Zabbixの画面表示の言語が日本語に変わった様子
Zabbixの画面表示の言語が日本語に変わった様子
日本語になっている。

 これで

 言葉に壁を乗り越えられるのだ!!

 とはいうものの、日本語でも知らない単語や、カタカナに苦しめられるのは変わりはないのだが。


 何はともあれ

 全てインストール作業は終了!!

 なのだ。


SNMPの仕組み

 Zabbixのインストールが成功しても、SNMPを使った ネットワーク監視の基本的な仕組みを知らないと  設定できへん!!  というわけで、基本的な仕組みを調べてみる事にした。  監視方法は2種類ある。ポーリングとトラップだ。
ポーリング
SNMPのポーリング
ポーリング(polling)とはpollの現在進行形だ。
pollは元々、世論調査とか住民投票の意味がある。
調査から派生してネットワーク監視の用語にも使われたと思われる。
ポーリングの意味は「定期的な問い合わせ」になる。

上図のようにマネージャ(Zabbixのサーバー)は監視対象の機器に定期的に問い合わせを行う。
監視対象の機器は、それに対する返答を行う。

マネージャの「通信状態を教えてくれ」との問いに対して
エージェントは「現在、流量が10Mbpsある」という感じだ。

 ここでややこしいのは

 名称の違いだ

 サーバーとクライアントと異なる名称を使っている。
 そのためSNMPの資料を読む時、以下の変換が必要になる。

名称の違い
マネージャ サーバーに相当する物だ
エージェント クライアントに相当する物だ。

 この読み替えができないと、SNMPの資料を読む時、混乱するのだ。


 さて、もう1つの監視方法はトラップだ。

トラップ
SNMPのトラップ
特にマネージャ(Zabbixサーバー)からは何も行わない。

監視対象のネットワーク機器が異常値を感知した場合
マネージャであるZabbixサーバーに異常値の通知を行う。

トラップ(trap:わな、策略)を使っている理由がわからない。

 2種類の監視方法があるのがわかった。



 ところでマネージャがエージェントに定期的に問い合わせを行うのだが

 認証せんとアカン

 という事で

 マネージャからの合言葉で認証

 を行う。


 合言葉の事を

 コミュニティー
 
 という。ややこしい。パスワードと言わず、コミュニティーというのだ。

コミュニティー
SNMPのコミュニティー
コミュニティーとは認証を行うための合言葉だ。
初期値として「public」が使われる事が多い。

後述しているが、コミュニティーを使わない認証もあるのだ。

 マネージャ、エージェント、コミュニティー。
 この3つの単語を知らないと、設定すらできないのだ。



 そして、もう1つややこしいのがある
 通信に使うポート番号の違いだ。

ポーリングの場合、ポート161を使う
ポーリングの場合、ポート161を使う
ポート161を使って通信を行うのだが、ポート161はエージェント側になる。

 その一方でトラップは次のようになる。

トラップの場合、ポート162を使うのだが・・・
トラップの場合、ポート162を使う
ポート162を使うのだが、マネージャ側になる。

 ポーリングはポート161、トラップはポート162なのだが
エージェント側なのか、マネージャ側なのかの違いがあるので注意が必要だ。


ヤマハのルーターの設定

 Zabbixを使ったネットワーク機器の監視。  ヤマハのルーターをエージェントとするのだ。  そのためのルーターの設定を行う必要がある。  だが、冒頭に書いた18年前にソフトバンクに設定してもらった内容では使えない。  そこで以下の記述になるのだ。
ヤマハのルーターの設定
snmp host 192.168.X.Y public
snmp trap host 192.168.X.Y
snmpv2c host 192.168.X.Y public
snmpv2c trap host 192.168.X.Y
192.168.X.YはZabbixのサーバーのIPだ。
上2行はSNMPv1を有効にする設定。
下2行はSNMPv2cを有効にする設定だ。

 v2cって何やねん!!

 なのだ。

v2cとは
歴史的な経緯が影響しているようで
バージョン2(v2)が出たが、その後、改造が加わってv2cになったようだ。
v2cが定着してしまったというのだ。

 2022年12月現在では3つのバージョンが存在する。

SNMPのバージョンの違い
v1 バージョン1の事
SNMPマネージャとエージェントはコミュニティーを使って認証を行う。
v2c バージョン2cの事
SNMPマネージャとエージェントはコミュニティーを使って認証を行う。
バージョン1に追加機能が加わったのだ。
v3 v1、v2cの機能の加えて、認証方法がv1、v2cと異なり
暗号化を行うなど安全性を強化させた物だ。

 v3だとコミュニティーとは別の認証方法になるのだが

 今回、v3は使わへんので割愛

 なのだ。
 要するに調べるのが面倒なので、調べないのだ。


 ルーターの設定が終わった所で、次はZabbixの設定を行う。


ヤマハのルーターの監視

 ヤマハのルーターの監視のため、Zabbix側の設定を行う。  省略せずに説明する。その理由は・・・  説明を書かないと私が忘れるのらー!!  試行錯誤の上、設定方法がわかったのだ。  だが、連載当初の20代の若かりし頃と違って・・・  50歳近くになると物忘れしやすのだ!!  という事情があるのだ。  連載開始から21年経つと、そうなってしまうのだ。  Zabbixに行う設定だが・・・  監視対象のネットワーク機器の登録   なのだ。  ここではヤマハのルーターが監視対象だ。  そこで監視したいヤマハのルーターを登録するのだ。
設定のホストを選ぶ
Zabbix 設定のホストを選ぶ
赤枠で囲んだ部分を選ぶのだ。
そして「ホストの作成」を選ぶ。
監視対象(ホスト)の設定を行うのだ。

 ホストの作成画面になる。

ホストの作成画面
Zabbix ホストの作成画面

 そしてホスト(監視対象)に関する情報の登録を行う。

ホストの作成画面で設定
Zabbix ホストの作成画面で設定
赤枠のホスト名を記入。ここでは「test」にした。
ホスト名の下の表示名も記入。名古屋営業所のルーターなら「名古屋ルーター」という感じで登録する

グループ名の部分で青枠の「選択」を選ぶ。

 ホストグループの選択画面が出てくる。

ホストグループの選択画面
Zabbix ホストグループの選択画面
ホスト(監視対象)の機器が、どのグループに属するのかを決める。
Linuxサーバー、データベースなど色々なグループがある。

ヤマハのルーターが監視対象なので赤枠で囲んだ「 Templates/Network devices 」に印をつけて選択ボタンを押す。

このグループにはネットワーク監視に必要な基本的な情報が入っているようだ。

 次に監視対象のインターフェイスの設定だ。
 インターフェースという言葉よりも、監視手法の方がわかりやすいかもしれない。

インターフェイスの設定の初期画面
Zabbix インターフェイスの設定の初期画面
初期画面にはエージェントとローカルIPが表示されている。
これだとZabbix自身を監視にする設定になる。気にせず赤枠の削除を行う。

 そして実際に使うインターフェイス(監視手法)の設定を行う。

インターフェイスの設定
Zabbix インターフェイスの設定
赤枠で囲んだインターフェイスの「追加」を選ぶ。

 インターフェイス(監視手法)の選択を行う。

インターフェイスの選択
Zabbix インターフェイスの選択
ルーターを監視する際、SNMPプロトコルを使った監視を行うので
赤枠のSNMPを選択する。

 SNMPを使った監視対象のホストの設定を行う。

SNMPを使った監視方法の初期画面
SNMPを使った監視方法の初期画面

 以下のように設定変更を行う。

SNMPを使った監視方法の設定
SNMPを使った監視方法の設定
赤枠で囲んだ部分に、監視対象の機器の情報を入れる。
今回はヤマハのルーターを監視するので、ヤマハのルーターのIPアドレスを入力
SNMPのバージョンは v2 にする。
SNMPのコミュニティー(認証の合言葉)を入れる。今回、コミュニティーは「public」にしている。

入力が終わったら「追加」ボタンを押す。

 追加ボタンを押したら以下の画面が出てくる。

ホストの次はテンプレートの設定
ホストの次はテンプレートの設定
ホストの次はテンプレートの設定になる。
赤枠のテンプレートを選ぶ。

 ところで

 テンプレートとは何やねん

 となる。

テンプレートとは
英語の綴りは「template」で鋳型、ひな形などの意味がある。
Zabbixでは監視項目のひな形という所だ。


 テンプレートを押すと以下の画面になる。

テンプレート画面にする
テンプレート画面にする
テンプレートを選択するため青枠の「選択」を押す。

 テンプレートの選択画面になる。

テンプレートの選択画面
テンプレートの選択画面
ホストグループが「Network devices」に属するテンプレートを選択する。
テンプレートに監視項目が記述されている。
ネットワーク機器といってもルーターや無線ルーターなど様々なメーカーや機種がある。

ここでは標準的な監視項目が載っている赤枠の「Template Net Network Generic Devices SNMP」を選択する。

 するとテンプレートを選択した画面になる。
 ここで忘れてはいけないのが、この段階では監視対象の機器(ホスト)の登録が終わっていないのだ。

ホストの追加を行う
ホストの追加の画面
ここで「追加」ボタンを押して監視対象の機器(ホスト)の登録が完了する。

 ホストの一覧を見ると、登録したホストが表示される。

登録したホストが表示される
登録したホストが表示される
赤枠の部分が登録した監視対象の機器(ホスト)になる。



ヤマハのルーターでCPUの利用率の推移を見る

 ヤマハのルーターのCPU利用率やメモリの利用率も Zabbixで監視する事ができる。  だがZabbixに登録されているテンプレートでは監視できない。  そのため・・・  テンプレートの作成  が必要になる。  設定内容を把握するまでは・・・  めちゃ面倒!!  だった。  それもそのはず。  SNMPの話を理解せんと本やネットの丸写しで逃げ切ろうとした  だった。横着者の極みになっている。  21年間、横着と横着からの脱却の攻めぎあいが続いている。進歩がないのだ。  まずはテンプレートの作成から説明を行う。
テンプレートの作成  実際にテンプレートを作成していく。
テンプレートの作成の仕方
テンプレートの作成の仕方
桃色枠の設定の「テンプレート」を選び、赤枠の「テンプレート作成」を選ぶ。

 作成したいテンプレートの設定を行う。

作成したいテンプレートの設定
作成したいテンプレートの設定
赤枠で囲んだ部分に作りたいテンプレートの名前を入れる。ここでは「YAMAHA-router」とした。
そしてグループを決めるため、青枠の「選択」を押す。

 テンプレートを、どのホストグループに入れるのかを決める。

どのホストグループに入れるのかを決める
どのホストグループに入れるのかを決める
ネットワーク関連のグループなので赤枠の「Template/Network devices」を選ぶ。
他にもOSやデータベースなど幅広い装置を監視対象にできる。

ホストグループを決めれば選択ボタンを押す。

 次に「追加ボタン」を押す。

テンプレートの登録のための「追加」ボタンを押す
「追加」ボタンを押す
テンプレートの登録を行うための「追加」ボタンを押す。

 実際にテンプレートが追加されている様子を見る。

テンプレートが追加されている様子
画面スクロールをする。
赤枠の部分が追加されたテンプレートになる。

 追加したテンプレートの中身の設定を行う。

追加したテンプレートの中身の設定
追加したテンプレートの中身の設定
赤枠の「アイテム」ボタンを選ぶ。

 アイテムを作成しなければならない。

アイテムを作成
アイテムを作成
赤枠の「アイテムの作成」を選ぶ。

 アイテムとは何やねん

 となる。

 ゲームで主人公のキャラクターが入手する持つ武器や物品を連想するが
ここでは意味が違う。

アイテムとは
英語の綴りは「item」で項目や事項の意味だ。
ここでは監視項目になる。

 テンプレートに登録する「監視項目」の登録というのだ。

アイテム(監視項目)の設定
赤枠の部分の設定を行う。
今回はヤマハのルーターのCPU使用率を登録するのだ。

 以下の設定を行う。

ヤマハのルーターのCPU使用率を登録
ヤマハのルーターのCPU使用率を登録
名前は「CPU」にした。なんでも良いので、わかりやすいのにする。
タイプは「SNMPエージェント」だ。ヤマハルーターはSNMPのクライアント(エージェント)だからだ。
キーは「yrtCpuTypr」にした。何でも良いが、MIB名に近い方が望ましい。

OIDになるのだが・・・。

 ここでMIBとOIDが出てきた。

 MIBとOIDとは何やねん

 となる。

MIBとOIDについて
MIB MIB(Management Information Base:管理情報ベース)の略だ。
SNMPエージェントが監視している管理対象のデータベースになる。
OID OID(Object IDentifier)の略で訳すと「監視対象物を同定する識別子」になる。
IPアドレスのように木構造(ツリー構造)になっているのだ。

 ヤマハのルーターのCPU使用率(5秒平均)の場合、識別子は

 .1.3.6.1.4.1.1182.2.1.5.0

 となる。

追加ボタンを押す
ヤマハのルーターのCPU使用率を追加
追加ボタンを押す

 きちんとヤマハのルーターのCPU使用率がアイテムに登録されているかどうか確認してみる。

ヤマハのルーターのCPU使用率がアイテムに登録されている様子
ヤマハのルーターのCPU使用率がアイテムに登録されている様子

 数時間、放置して、ヤマハのルーターのCPUの使用率のデータを採取する。
 そして変化の動向を見てみる。


ヤマハのルーターのCPUの使用率(5秒平均)の変化の動向
ヤマハのルーターのCPUの使用率の変化の動向



ヤマハのルーターのOID取得

 テンプレートの作成時にOIDが必要だった。  どうやってヤマハのルーターのCPU使用率やメモリ使用率などのOIDを取得するのかだ。  まずはヤマハのサイトから独自MIBをダウンロードする。  YAMAHA private MIB
CentOS7でMIBのデータを所定のディレクトリに格納する
[root@zabbix]# cd /usr/share/snmp/mibs
[root@zabbix]# tar -xvf yamaha-private-mib.tar.gz
[root@zabbix]# ls
yamaha-product.mib.txt
yamaha-rt-firmware.mib.txt
yamaha-rt-hardware.mib.txt
yamaha-rt-interfaces.mib.txt
yamaha-rt-ip.mib.txt
yamaha-rt-switch.mib.txt
yamaha-rt.mib.txt
yamaha-smi.mib.txt
yamaha-sw-bridge.mib.txt
yamaha-sw-errdisable.mib.txt
yamaha-sw-firmware.mib.txt
yamaha-sw-hardware.mib.txt
yamaha-sw-l2ms.mib.txt
yamaha-sw-loop-detect.mib.txt
yamaha-sw-power-ethernet.mib.txt
yamaha-sw-rmon.mib.txt
yamaha-sw-termmon.mib.txt
yamaha-sw-vrrp.mib.txt
yamaha-sw.mib.txt
[root@zabbix]#

 次にSNMPクライアントのソフト(net-snmp-utils)をインストールする。

SNMPクライアントのソフト(net-snmp-utils)をインストール
[root@zabbix]# yum install net-snmp-utils
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* centos-sclo-rh: ftp.riken.jp

(途中、省略)

依存性を更新しました:
net-snmp.x86_64 1:5.7.2-49.el7_9.2
net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.2
net-snmp-libs.x86_64 1:5.7.2-49.el7_9.2

完了しました!
[root@zabbix]#

 これで準備は整った。

 snmpwalkコマンドを使ってOIDを見てみる事にする。

 ヤマハのCPU使用率(5秒平均)のMIBは

 yrhCpuUtil5sec

 なのだ。

snmpwalkコマンドを使ってOIDを見てみる
[root@zabbix]# snmpwalk -v1 -c public -On 192.168.X.Y yrhCpuUtil5sec
.1.3.6.1.4.1.1182.2.1.5.0 = Gauge32: 1
[root@zabbix]#
[root@zabbix]# snmpwalk -v2c -c public -On 192.168.Z.Y yrhCpuUtil5sec
.1.3.6.1.4.1.1182.2.1.5.0 = Gauge32: 4
[root@zabbix]#
赤色はSNMPv1、青色はSNMPv2cの場合のOIDだ。どちらもPIDは同じ値になっている。
そしてCPUの5秒平均の使用率は1%と4%という回答だった。

 まどろっこしい方法だが、MIBからOIDを調べるためには、この方法になるのだ。



Windows10のSNMPエージェントの設定

 Windows10のパソコンも監視対象にできる。  ここでWindows10をSNMPエージェントにする設定を書く。  Windows11も似たような設定だ。  「アプリと機能」の画面を呼び出す。
アプリと機能の画面
Windows10 アプリと機能の画面
赤枠の「オプション機能」を選ぶ。

 オプション機能の画面を呼び出す。

オプション機能の画面
Windows10 オプション機能の画面
今度は赤枠の「機能の追加」を選ぶ。

 オプション機能の追加の画面が出てくる。

オプション機能の追加の画面
Windows10 オプション機能の追加の画面
赤枠の入力部分に「 snmp 」を入力すると、SNMPの文字列を含むオプションが表示される。

 簡易ネットワーク管理プロトコルを選ぶ。

オプション機能の追加の画面で簡易ネットワーク管理プロトコルを選ぶ
Windows10 オプション機能の追加の画面で簡易ネットワーク管理プロトコルを選ぶ
赤枠の「簡易ネットワーク管理プロトコル(SNMP)」に印をつけて、インストールを行う。

 するとインストールが始まる。

簡易ネットワーク管理プロトコル(SNMP)のインストールの様子
Windows10 簡易ネットワーク管理プロトコル(SNMP)のインストールの様子

 インストールが完了する。

簡易ネットワーク管理プロトコル(SNMP)のインストール完了の画面
Windows10 簡易ネットワーク管理プロトコル(SNMP)のインストール完了の画面

 次にSNMPエージェントの設定を行う。
 ファイル名を指定して実行する画面を呼び出す。

ファイル名を指定して実行する画面
Windows10 ファイル名を指定して実行する画面

 呼び出す画面はサービスの設定画面だ。

サービスの設定画面を呼び出す命令
Windows10 サービスの設定画面を呼び出す命令
赤枠の「 services.msc 」を入力すればサービス設定画面が呼び出せる。

 サービスの設定画面が出てくる。

サービスの設定画面
Windows10 サービスの設定画面

 設定するのは「SNMPサービス」だ。

SNMPサービスを選ぶ
Windows10 SNMPサービスを選ぶ
赤枠の「SNMPサービス」で右クリックをする。

 SNMPサービスに関する選択肢が出てくる。

SNMPサービスに関する選択肢の画面
Windows10 SNMPサービスに関する選択肢の画面
ここではSNMPサービスの設定を行うので「プロパティ(R)」を選択する。

 SNMPサービスのプロパティ画面が出てくる。

SNMPサービスのプロパティ画面
Windows10 SNMPサービスのプロパティ画面
まずはSNMPマネージャ(Zabbixサーバー)のIPアドレス、もしくはホスト名を登録する。
Zabbixからの問い合わせを受け付けた上で、返答をする設定を行うのだ。

 IPアドレスもしくはホスト名の登録を行う。

 IPアドレスもしくはホスト名の登録画面
Windows10  IPアドレスもしくはホスト名の登録
初期値は「 localhost 」になっている。自分自身だ。

 そこで今回はZabbixサーバーのIPアドレスを入れる。

ZabbixサーバーのIPアドレスを入れる
ZabbixサーバーのIPアドレスを入れる
IPアドレスを入力

 次にSNMPマネージャとSNMPエージェントとの間の認証に使うコミュニティ(合言葉)の設定を行う。

コミュニティ(合言葉)の設定
コミュニティ(合言葉)の設定
赤枠の「追加(D)」ボタンを押す。

 するとコミュニティー(合言葉)の入力画面が出てくる。

コミュニティー(合言葉)の入力画面
コミュニティー(合言葉)の入力画面
コニュニティーの権利は「読み取り、書き込み」にする。

コミュニティー名はZabbixサーバーに登録している物を使う。
今回は「 public 」なので「 public 」を入力する。

 設定は完了だ。

SNMPサービスの設定が終わった
SNMPサービスの設定が終わった

 これでパソコンのCPU、メモリ、通信状況の監視が可能になる。


拠点間通信の監視開始

 Zabbixを導入したので、拠点間通信の状況が確認できるようになった。  だが、営業所のルーターの監視だけだと問題があった。  本社側の回線状況がわからへん  だった。
本社側の網終端装置の状況が見えない問題
本社側の網終端装置の状況が見えない問題
Zabbixを使って営業所のルーターの監視をはじめた。
だが、営業所のルーターの監視だけだと、本社側の網終端装置に混雑が発生しても
営業所のルーターとの通信が遅くなったりする。

そのため営業所から「回線が遅い」と連絡がきても
営業所側の回線の混雑に起因するのか、本社側の回線の混雑に起因するのか判定ができない。

だが本社側の網終端装置の混雑を特定する方法がわからなかった。

 そんな状況だったが、ソフトバンクにZabbixの話をすると
 ソフトバンクから

 本社側のPEは監視できませんか

 と言われた。

SmartVPNのPE(プライベート・エッジルーター)について
SmartVPNのPE(プライベート・エッジルーター)について
ソフトバンクのSmartVPNの場合、網終端装置を超えた所に
それぞれの部署のPE(プライベート・エッジルーター)がある。

pingが通るというので導通確認、パケットの遅延の測定は可能だ。

本社PEまでの間にパケット損失や遅延が起こっていたら、本社側の網終端装置の混雑だとわかる。

 そこで本社PEの監視も始めた。


回線が遅い原因をとらえた

 ある日の事、複数の営業所から回線が遅いとの連絡が来た。  早速、本社PEの状況をZabbixで確認した。  すると一目瞭然だった。
本社PEとの通信でのパケット損失状況
本社PEとの通信でのパケット損失状況
本社のZabbixからSmartVPN上にある本社PEまでの通信で、パケット損失が起こっている。

 そしてパケットの遅延を見る。

本社PEとの通信でのパケット遅延状況
本社PEとの通信でのパケット遅延状況
普段から15ms以下なのだが、この時は最大で46.15msになっていた。

 Zabbixを使って本社側の網終端装置の混雑をとらえた瞬間

 だった。


 ソフトバンクの勧めで本社側の回線の契約変更を行った。

 PPPoEからIPoEへの切り替え

 なのだ。

PPPoEとIPoEの違い
PPPoE NTTとプロバイダーとの接続に網終端装置を通る方式
古い技術なのだ。
IPoE 網終端装置を通らない方式だ。

 本社の回線をPPPoEからIPoEに切り替えた事で、本社側の網終端装置の混雑を考えなくて良くなった。

本社の回線をPPPoEからIPoEに切り替えた後
本社の回線をPPPoEからIPoEに切り替えた後
本社側の網終端装置の事を考えなくて良くなったため、営業所側の網終端装置の混雑が検出できる。

 意外な事がわかった。

 ほぼ全営業所で網終端装置の混雑が同時に発生している

 なのだ。

 そのため営業所の回線の切替も行う方向になった。
 現在、本社と1ヶ所の営業所の回線がPPPoEからIPoEへ切り替わった。
 今後は全ての営業所の回線の切替を行っていく予定だ。


最後に  2004年に「ネットワーク監視ができたら良いなぁ」と思った事が 18年間の経過(放置?)した後、ようやく実現した。  今だと営業所から「通信遅い」と言われたら、すぐにZabbixの監視画面を見て 状況がわかるため、その後の対応がしやすくなった。

前章:「クラウドストレージ・Nextcloudのインストール」を読む
目次:システム奮闘記に戻る