何番煎じか分かりませんが、Monitoring Windows Server in Private Subnet by Zabbixな作業メモです。
あくまでも設定の一例です。
検証はAWS上で行いました。
サーバの構築(ubuntuの場合)
サーバは、「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type」のAMIを利用しました。
Zabbixサーバは、パッケージを利用してインストールしていきます。
バージョンは、「Zabbix 3.0 LTS」を利用します。
サーバは、パブリックセグメントに配置します。
リポジトリのインストール
まずは、リポジトリをインストールします。
今回は「zabbix-release_3.0-1+xenial_all.deb」を利用しました。
Index of /zabbix/3.0/ubuntu/pool/main/z/zabbix-release
wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-2+xenial_all.deb
sudo dpkg -i zabbix-release_3.0-2+xenial_all.deb
sudo apt-get update
サーバのインストール(MySQLを使う場合)
今回はデータベースにMySQLを利用します。また、スタンドアロン構成(ZabbixサーバとMySQLサーバは同居)とします。
2 Server installation with MySQL database
まず、必要なパッケージをインストールします。
この際、MySQLのrootパスワードの設定を要求されます。
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
これだけだとZabbixの初期セットアップウィザード(?)でエラーが出るので、以下のパッケージを追加でインストールします。
sudo apt-get install php-bcmath php-mbstring php-xmlwriter php-xmlreader
MySQLの初期設定を行います。
sudo mysql -uroot
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by '<new password for zabbix user on zabbix database>';
quit;
スキーマの登録を行います。
を入力する必要があります。
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
Zabbixに対して、DBへの接続設定を行います。
sudo vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<new password for zabbix user on zabbix database>
プロントエンドサーバのタイムゾーンを修正します。
(コメントアウトされているので、ちゃんと外しましょう)
sudo vi /etc/apache2/conf-enabled/zabbix.conf
php_value date.timezone Asia/Tokyo
Webインタフェースで日本語が利用できるように、OSにロケールを追加します。
sudo locale-gen ja_JP.UTF-8
Zabbixのプロセスを起動します。
sudo service zabbix-server start
必要に応じて、フロントエンドサーバの再起動を行います。
sudo service apache2 restart
こちらも必要に応じて、サービスの自動起動設定を行います。
sudo systemctl enable zabbix-server.service
systemctl is-enabled zabbix-server.service
参考情報
【新旧対応】Linuxでの自動起動の設定方法を解説
監視対象の設定(Windows Serverの場合)
Windows ServerにZabbixエージェントを導入します。
ここでは、Private Subnet上のWindows ServerでActive Checkを行うための設定を行います。
インストール
コンパイル済みZabbixエージェントをダウンロードします。
サーバのバージョンと同じものを利用します。
ダウンロードしたファイルを解凍します。
今回は C:\zabbix_agent\
に\bin\win64\
に含まれる以下の3つのファイルを展開します。
- zabbix_agentd.exe
- zabbix_get.exe
- zabbix_sender.exe
併せて、C:\zabbix_agent\
に\conf\
に含まれる以下のファイルを展開します。
- zabbix_agentd.win.conf
展開した後 zabbix_agentd.conf
にリネームします。
zabbix_agentd.conf
に対して、以下の設定を修正します。
Hostname=(分かりやすいホスト名を指定)
HostnameItem=system.hostname
ServerActive=ZabbixサーバのIPアドレス or ホスト名:ポート番号(デフォルトでは10051)
HostMetadata=自動登録の判定として定義している名称(10051ポートへのアクセスを制限していない場合、予期しないホストの登録を防ぐために複雑な文字列を設定した方がいいかも)
HostMetadataは、アクションで自動登録を行うために利用します。
以下の要素はコメントアウトします。
# Hostname
Zabbixエージェントをインストールします。
cd C:\zabbix_agent\
zabbix_agentd.exe --config C:\zabbix_agent\zabbix_agentd.conf --install
「管理ツール」>「サービス」に、Zabbix Agentが登録されていることを確認し、サービスを起動します。
設定
Zabbixサーバにログインします。
http://<Server IP Address>/zabbix/
初期設定ウィザード
初期設定ウィザードを実行します。
初期設定ウィザードが完了したら、Webインターフェースにログインします。初期ユーザの認証情報は、Admin/zabbix
です。
ホストグループ
ホストグループを作成します。ここでは、ホストの追加は行いません。
「設定」>「ホストグループ」
- グループ名
テンプレート
テンプレートを作成します。
テンプレートは、デフォルトのテンプレートから複製することも可能です。
Windowsを監視したい場合、「Template OS Windows」などを活用できます。
ただし、アイテムのタイプが「Zabbixエージェント」(Passiveチェック)になっているため、テンプレートを複製してからテンプレートを作成する場合にはタイプの変更を行います。
この際、テンプレートとリンクが設定されていると変更できないため、リンクは削除します。
アイテム
テンプレートにアイテムを追加することも可能です。
例えば、IISのサービスを監視したい場合には以下のようなアイテムを作成します。
- タイプ
- Zabbixエージェント(アクティブ)
- キー
- service.info[World Wide Web Publishing Service]
- データ型
- 数値(整数)
- データの形式
- 10進数
- 値のマッピングの使用
- Windows Service State
トリガー
検知したい障害をトリガーとして定義します。
- 条件式
- {(テンプレート名):service.info[World Wide Web Publishing Service].last()}<>0
- 深刻度
- 致命的な障害
アクション(自動登録)
イベントソースが自動登録のアクションを追加します。
「設定」>「アクション」
- 実行条件
- ホストメタデータ
- 含まれる
- (Agentの設定ファイルで「HostMetadata」に設定した文字列)
- 事項内容
- ホストを追加
- ホストグループに追加
- テンプレートとリンク
この設定を行えば、サーバにホストが自動登録されるはずです。
メディア
障害を通知する方法を設定します。
Email等を利用できます。
「管理」>「メディアタイプ」
メールの送信サーバとしてAmazon SESを利用する場合は、以下の手順を参考に新たなメディアタイプを定義します。
フリーで使える統合監視の鬼、Zabbixでナウい監視をする〜Amazon SESでアラートを送る〜
アクション(トリガー)
イベントソースがトリガーのアクションを追加し、障害の発生を通知します。
「設定」>「アクション」
実行条件(障害の深刻度やメンテナンス期間かどうか)および実行内容(メッセージの送信など)を設定します。
ユーザ
通知先(メールアドレス)や有効な時間帯などを指定します。
「管理」 > 「ユーザー」
監視対象の設定(AWSリソースの監視)
AWS上のサーバを監視したい場合、スクリプトを利用した監視が可能です。
以下のようなサンプルテンプレートが提供されています。
tech-sketch/zabbix_aws_template
[OpsJAWS: やってみようシリーズ] CloudWatch × Zabbix連携による統合監視実現
AWSのAPIへアクセスするためのアクセスキーとシークレットは、監視対象のリソースと同じAWSアカウント上にZabbixサーバが存在しなおかつインスタンスプロファイルが適切に設定されていれば、省略することが可能です。
動作環境によっては、スクリプトの修正も必要です。