CentOS 8+ Zabbixで簡単監視しようぜ!

  • 2020年5月14日
  • 2021年10月8日
  • Linux/UNIX
  • 3527view

先日「Zabbix」の新版「同 5.0」をリリースしたと発表したとありましたね。サーバ管理ツールはなくてはならないツールですので早速簡単に導入の手順を記載してみます。今更ですが、Zabbixとは、Linux / Windows / 各種商用UNIX / SNMP対応ネットワーク機器と幅広く対応したオープンソース・ソフトウェア(OSS)の統合監視ツールです。今回はCentOS8を使用してZabbix4.4を構築し、主にSNMPを用いて機器を監視する方法を掲載します。

手順では、初めての方でも簡単に構築できるように出来るだけ手順を簡素化して基本パッケージのみで構成していますよ。

 

CentOS8の準備

まずはCentOS8のマシンを用意します。

CentOS8からはインストールのデフォルトセット(ソフトウェアの選択)はGUIとなっていますが、Zabbix-Serverのコンソールは別マシンからアクセスすることを前提としますので「最小限のインストール」とします。

インストールが完了したら、updateを実行して最新のパッケージに更新しておきます。

Zabbixパッケージのインストール

Zabbixをインストールするためには事前に httpd / php / mysql-server がインストールされている必要があります。

 

 

 

パッケージがインストールされたら、続いてZabbix本体と関連パッケージをインストールします。

これらのパッケージはZABBIX社よりレポジトリが用意されていますので、まずはレポジトリをインストールします。

 

 

 

レポジトリをインストールしたら、zabbix-server-mysql / zabbix-web-mysql / zabbix-web-japanese / zabbix-apache-conf の4つのパッケージをインストールします。

 

 

 

これで全パッケージのインストールは完了です。

 

Zabbix構築の事前設定

 

まずはZabbixで使用するデータベースを作成するためMySQLを起動してOS起動時に自動起動するよう設定します。

 

MySQLが起動したら、最初にmysql_secure_installationを実行してMySQLの初期設定を行います。

 

引き続きMySQLにrootでログインしてZabbix用のユーザーとデータベースを作成します。

 

 

続いてZabbix-Serverに関連する設定ファイルに修正を加えます。

一つ目は/etc/php-fpm.d/zabbix.confファイルです。

エディタで/etc/php-fpm.d/zabbiz.confを開き、”php_value[date.timezone] = “ を ”Asia/Tokyo” に変更します。

 

 

 

二つ目は/etc/zabbix/zabbix-server.confファイルです。

エディタで/etc/zabbix/zabbix-server.confを開き、”DBPassword=”の部分にzabbix@localhostのパスワードを記述します。

 

 

 

Zabbix用SQLスクリプトを使用してzabbixデータベースにテーブルを作成します。

 

 

 

テーブル作成スクリプトが正常終了すればZabbixの準備は完了です。

Zabbix-Serverへのアクセスはブラウザを通じて行いますので、Firewallに対してhttp通信ポートを開放しておきます。

 

 

 

httpd、php-fpm、zabbix-serverのそれぞれのサービスを起動して自動起動に設定しておきます。

Zabbixの構築

パソコンでブラウザを起動してhttp://<Zabbix-ServerのIPアドレス>/zabbix/ にアクセスします。Zabbixのインストール初期画面が表示されますので メッセージを確認しながら<NextStep>をクリックしていきます。

 

途中でデータベースアクセス用のユーザー名とパスワードを入力する場所があります。ユーザー名はzabbix、パスワードは設定した<パスワード>を入力してください。

インストールが正常に終了するとZabbix-Serverコンソールへのログイン画面が表示されます。コンソールログインの初期はAdmin/zabbixです。大文字小文字の区別がありますのでご注意ください。

ログインしたら最初に画面右上のユーザーマーク(人型の影)をクリックして、設定の中にロケール変更がありますからJapaneseを選択すればコンソールが日本語に切り替わります。

 

Zabbix-Serverの運用①-SNMPを用いた機器情報収集

 

Zabbixは専用のAgent(エージェント)を対象機器にインストールすることで、その機器の詳細な状態情報を収集し管理することができます。しかしAgentはLinux/Windowsなど所謂サーバー用途のOSにはインストールできますが、インテリジェントスイッチなどの通信機器にはインストールできません。そこで最初に掲載したとおりSNMPを実装した機器類であればある程度の状態情報を収集可能なので、まずは最初にSNMPを利用した運用について説明します。

今回例としてターゲットにするのはWindows Serverです。まずはターゲットとするWindows ServerにSNMPサービスを導入します。Windows Serverのサーバーマネージャーの「管理」から「役割と機能の追加」を選択してウィザードを起動します。「機能の追加」ページまで進めて、「機能」の中の「SNMPサービス」を選択し、追加します。

SNMPサービスが追加されると自動的に「セキュリティが強化されたWindows Defenderファイアウォール」内のSNMPサービスに関連する受信ポート(161番ポート)が許可されます。サーバーマネージャーの「ツール」から「サービス」を選択して「SNMPサービス」を開きます。

 

「受け付けるコミュニティ名」に対して「追加」をクリックしてコミュニティ名を登録します。ここでは一応「public」にしておきますが、一般的には「public」を用いることが多いように見受けますが別に名称はなんでもOKです。

また「すべてのホストからSNMPパケットを受け付ける」に変更してもいいのかもしれませんが、どこからでもパケットを受け付けるというのはセキュリティ上好ましくないので、Zabbix-ServerのIPアドレスからのみ受け付けることにしてIPを追加します。

これでWindows Server側のSNMP設定は完了です。Zabbix-Serverコンソールに戻り、監視対象を追加します。

 

コンソール上部のメニューから「設定」「ホスト」を選択し、画面右上にある「ホストの作成」をクリックします。

新規ホスト登録画面の中で*の付いた項目は必須です。「ホスト名」は適当に、「グループ」は「選択」から「Templates/Operating Sytems」を選択します。「エージェントのインターフェース」欄の設定は標準で設定されているものを「削除」します。今回エージェントは使用していません。逆に「SNMPインターフェース」を「追加」し、ターゲットとなるWindows ServerのIPアドレスを入力します。

 

続いて「テンプレート」を選択して「新規テンプレートをリンク」にて「追加」をクリックし、「Templates OS Windows SNMPv2」を選択します。

続いて「マクロ」を選択して「マクロ」に「{$SNMP_COMMUNITY}」を入力し、「値」にWindows ServerのSNMPサービスに登録したコミュニティ名を入力して、最後に「追加」をクリックしてホストを登録します。

追加されたホストが画面下部に表示されます。このホスト名をクリックして更に修正を加えます。

メニューの「ディスカバリルール」を選択すると追加したテンプレート(Templates OS Windows SNMPv2)によって登録された複数のルールが表示されます。この「監視間隔」をよくみると「1h」となっています。Zabbix-Serverのデフォルトテンプレートは情報収集するための間隔が1時間となっています。このままでは1時間おきの状態しか収集しませんので、この監視間隔を1m(1分)から5m(5分)程度に変更します。ここでは例として「Memory Discovery」の監視間隔を1mに変更します。

「名前」欄の「Memory Discovery」をクリックしてプロパティを開き、「監視間隔」を1hから1mに変更して「更新」をクリックします。

 

同様に他のディスカバリルールも1mに変更します。この例では3つのルール(メモリ、CPU、ストレージ)をすべて1mに変更しました。「ZABBIX」マークをクリックすると最初のダッシュボード画面に戻ります。

ちょっと時間を置いてから「グラフ」メニューを開き、「ホスト」から登録したホストを選択し、「グラフ」からPhisical Memory」を選択するとメモリ使用量のグラフが表示されます。

他にもDiskSpageUsage(ディスク使用容量)などのグラフが表示されることを確認します。

これでWindows ServerのSNMPを使用した監視が登録できました。Windowsの場合SNMPで収集できる情報はこの程度ですが、ServerにAgentをインストールして情報収集すればかなりの情報を収集することができます。が…個人的にはサーバーの種類にも依りますがCPU使用率、メモリ使用率、通信トラフィック量、ディスク使用容量あたりの情報が収集できれば大抵は十分ではないかと思います。もしサーバー内部の温度など他にも詳細が必要なら(マザーボードに温度センサーが付いていることが前提ですが)Agentをインストールして(その場合ファイアウォールで10051番ポートを許可する必要があります)ホストの作成時にエージェントのインターフェースを設定すればより詳細な情報を収集可能です。

サーバーやパソコンのようにAgentをインストールできる機器はAgentでもいいのですが、通信機器の場合はそもそもAgentがインストールできませんのでSNMPを使用するしかありません。
ZabbixではテンプレートとしてCISCOやBrocade、HPE、Juniperなど各社のMIB情報が用意されています。もし製品が一覧に無い場合は一般的な通信機器のSNMPv2のテンプレートもありますのでそれらを試して必要な情報を収集してみてください。

なお、通信機器のSNMPコミュニティ名の設定方法については各社のページにてご確認ください。

 

障害や警告の対処

監視対象を登録して監視を開始するとなんらかのトラブルが発生した際にはコンソール上にメッセージが表示されます。

実はこのZabbix-Serverでも最初から1件トラブルが表示されています。それはZabbix-Server自身のアラートです。これは「Zabbix-Server」を構築する際にデフォルトで自分自身をAgent管理するよう組み込まれているためです。そのため多くのZabbix関連の構築手順を記した公開ページではZabbix構築時にAgent2のパッケージも自分自身にインストールして稼働させています。

本資料ではそもそもAgentを使用しないでZabbixを運用することを前提に書いています。そのためZabbix-ServerにはAgentをインストールしていませんので当然ながら自身の情報を収集できないために最初からアラートが表示されているのです。そこでZabbix-Server自身の監視は対象から削除してしまいましょう。

コンソールメニューの「設定」「ホスト」を開き、自分自身であるZabbix-serverのチェックボックスをONにして、「削除」ボタンをクリックして削除してしまいましょう。これでダッシュボードの障害通知からZabbix-Serverのアラートが消去します。

それ以外の障害・警告メッセージは実際にターゲット機器に起きているトラブルの可能性もありますが、本当にトラブルなのか、テンプレートで読み込まれた各ディスカバリルールがうまくマッチしていない可能性もあります。

特に通信機器を監視する場合、Zabbixが用意している各製品別のテンプレート情報に若干の相違があって最初から情報収集できないことや障害として警告を出力するしきい値(例えばCPU使用率が85%を超えると警告を出す)の設定が問題でアラートが表示されてしまうということもあります。

警告のしきい値はデフォルトで用意されています。これを変更することでアラートを出さないようにすることもできますが、そもそもその警告が報告として必要か(監視対象にすべきかどうか)を検討してみるのも解決のひとつかと思います。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG