ぺーぺーSEのブログ

備忘録・メモ用サイト。

Zabbix入門

Zabbix2.4いじってみたのでメモ。

はじめに

基本知識。

■できること
  • HW監視
  • 死活監視
  • リソース監視
  • グラフ表示


■用語
  • ホスト
    • 監視対象デバイスのこと
    • IP/DNSをもつ
  • ホストグループ
    • 論理的なホストのまとまり
    • ホストとテンプレートから構成される
  • アイテム
    • ホストから取得する1つのデータ
  • トリガー
    • アイテム内で取得したデータを評価し、閾値を設定することにより「OK」「障害」状態を管理する
  • イベント
    • トリガーの状態が変化したり、ディスカバリやエージェントの自動登録がされた際に何かが発生することを示す
  • アクション
    • イベントに対して実行される処理
  • エスカレーション
    • アクション内で実行される処理のカスタムシナリオで、通知・送信・リモートコマンド等の一連の処理の順序
  • テンプレート
    • ホストに対して適用するエンティティ(アイテム、トリガー、グラフ、スクリーン、アプリケーション、下層のディスカバリールールなど)のセット
  • Webシナリオ
    • ウェブサイトの稼働状況をチェックするHTTPリクエスト


■Zabbixのモジュール群
  • zabbix
    • Zabbixのコア機能が詰まったモジュール
    • zabbix-server、zabbix-agent、zabbix-proxyはこれに依存する
  • zabbix-server
    • Zabbixサーバのモジュール
    • 監視を実行したり、Zabbixプロキシやエージェントと連携したり、トリガーの統計をしたり、通知を送信する等を行う、Zabbixの中核のプロセス
    • 分散監視する際に複数のZabbixサーバを構築した場合、その1つ1つを「ノード」と呼ぶ
      • 関連モジュール:zabbix-server-mysql、zabbix-server-pgsql
  • zabbix-agent
    • Zabbixエージェントのモジュール
    • ホストのリソースやアプリケーション情報をZabbixサーバへ送付プロセス
  • zabbix-get
    • zabbix-agentと通信して必要な情報を取得するプロセス
  • zabbix-sender
    • パフォーマンスデータをZabbixサーバへ送付するコマンドラインユーティリティ
  • zabbix-web
    • Zabbixフロントエンドのモジュール
    • Zabbixで提供されているWebインターフェース
      • 関連モジュール:zabbix-web-japanese、zabbix-web-mysql、zabbix-web-pgsql
  • zabbix-proxy
    • Zabbixプロキシのモジュール
    • Zabbixサーバのかわりにデータを収集するプロセスで、Zabbixサーバの負荷を軽減する
      • 関連モジュール:zabbix-proxy-mysql、zabbix-proxy-pgsql、zabbix-proxy-sqlite3
  • zabbix-java-gateway


■監視対象自動登録機能
  • Agent自動登録
    • Agent起動時にServerにアクセスし、ホスト名を登録する
    • メールでServerに定型文(ホスト名、IP、ポート等)を送付することで登録できる
    • zabbix_agentd.confでHostnameを指定できるが「HostnameItem=System.hostname」でOSのホスト名を使用できる
  • ディスカバリ自動登録
    • 指定したIPアドレスレンジを操作して、監視対象を登録する
    • zabbix_server.confで設定
    • SNMPやIPMI等のプロトコルを利用した監視ができる
      • SNMP(Simple Network Management Protocol):TCP/IPネットワークにおいて、ルータやコンピュータ、端末など様々な機器をネットワーク経由で監視・制御するためのプロトコル
      • IPMI(Intelligent Platform Management Interface):SNMPやDMI(Desktop Management Interface)などのサーバー管理ソフトウェアが、特定のハードウェアシステムやOSに依存することなく、サーバーハードウェアをモニタ可能にするための標準インターフェイス仕様


■アクティブチェックとパッシブチェック
  • アクティブチェック
    • AgentがServerへデータを送付するタイプ
    • ログ監視(log、logrt、eventlog)はアクティブチェックでしか監視できない
  • パッシブチェック
    • Serverが各ホストへアクセスするタイプ



構築

MySQLの構築

DBはPostgreSQLも使えるが、ここではMySQLを使用する。
以下rootで実行。

wget http://downloads.mysql.com/archives/get/file/MySQL-shared-compat-5.6.21-1.el6.x86_64.rpm
wget http://downloads.mysql.com/archives/get/file/MySQL-5.6.21-1.el6.x86_64.rpm-bundle.tar
tar xvf MySQL-5.6.21-1.el6.x86_64.rpm-bundle.tar

rpm -ivh MySQL-shared-compat-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-devel-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.21-1.el6.x86_64.rpm
rpm -ivh MySQL-server-5.6.21-1.el6.x86_64.rpm

service mysql start

起動完了したら「You will find that password in '/root/.mysql_secret'.」って出てるからパスワードひかえる。
MySQLの初期設定。

/usr/bin/mysql_secure_installation

案内にしたがってYes/No。
「/usr/my.cnf」を以下のように設定。
※MySQL5.6未満は「/etc/my.cnf」。

[mysqld]
・・・デフォルトの設定は残す・・・

character-set-server=utf8
skip-character-set-client-handshake

MySQL 5.5以前では「character-set-server=utf8」ではなく「default-character-set=utf8」
MySQLの再起動。

# service mysql restart


■Zabbixサーバの構築

Zabbixのリポジトリを登録。

rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

Zabbixのインストール。

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese zabbix-java-gateway zabbix-sender zabbix-get

※「zabbix-java-gateway」は無くてもいい。
Zabbix用にMySQLの設定する。
まずは、「zabbix」データベースの作成。

mysqladmin -u root -p create zabbix --default-character-set=utf8

「zabbix」ユーザの作成。

# mysql -u root -p
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;
mysql> \q

zabbix-server-mysqlの資材を使ってテーブル作成。

mysql -u root -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/schema.sql
mysql -u root -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/images.sql
mysql -u root -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/data.sql

Apache(Zabbixウェブフロント)を起動する。

service httpd start

「http://[zabbix-server-address]/zabbix」へアクセスして、次の項目を確認していく。
1. Welcome
2. Check of pre-requisites
3. Configure DB connection
4. Zabbix server details
5. Pre-Installation summary
6. Install

2で「PHP time zone」の設定がなかったので「/etc/php.ini」を下記のように編集。

;date.timezone =
date.timezone = Asia/Tokyo

「service httpd restart」でApache再起動。
3で先ほど作成したデータベース、ユーザ、パスワードを「zabbix」に設定。
4でzabbix-serverの設定(Host、Port、Name:localhost、10051、zabbix-server)で設定。
6で設定ファイルが「"/etc/zabbix/web/zabbix.conf.php"」であることがわかる。
id/passwordは「Admin/zabbix」でログインできる。

zabbix-serverがMySQLへ接続する際のパスワードが設定されていないので、下記のように設定。
「/etc/zabbix/zabbix_server.conf」を編集。

DBPassword=zabbix

下記のコマンドでZabbixサーバを起動する。

service zabbix-server start
ps -ef | grep -i zabbix
zabbix    4352     1  0 05:47 ?        00:00:00 zabbix_server -c /etc/zabbix/zabbix_server.conf
root      4354  3760  0 05:47 pts/0    00:00:00 grep -i zabbix

右上の「Profile」を選択して、「Language」を「Japanese (ja_JP)」にして「Update」すると日本語になる。



■Zabbixエージェントの設定

/etc/zabbix/zabbix_agentd.confの下記の項目を修正。

パラメータ 説明
Server ZabbixサーバのIP 127.0.0.1
Hostname Zabbixフロントエンドで設定するホスト名と同じにする Zabbix server
ListenIP 監視対象ホスト自身のIP 127.0.0.1

ZabbixエージェントはZabbixサーバと10050ポートで通信するので、Zabbixサーバーからアクセスできるようにファイアウォール等の設定を行う。
Agent起動。

service zabbix-agent start



監視の設定

Webフロントエンドでの設定について。
「Configuration」->「Hosts」を選択すると、デフォルトで「Zabbix server」がある。

■アイテムタイプ
  • Zabbixエージェント
    • Zabbixエージェントによる監視(パッシブチェック)
      • 例)各種リソース使用率、ファイル監視、Web監視
  • Zabbixエージェント(アクティブ)
    • Zabbixエージェントによる監視(アクティブチェック)
      • 例)ログ監視
  • シンプルチェック
  • SNMPv1エージェント/SNMPv2エージェント/SNMPv3エージェント
    • SNMP エージェントによる監視
  • SNMPトラップ
    • SNMPトラップによる監視
  • Zabbixインターナル
    • Zabbix自体の監視
  • Zabbixトラッパー
    • Zabbixエージェントから任意の文字列をZabbixサーバへ通知する
  • Zabbixアグリゲート
    • Zabbixサーバが収集データを蓄積しているDBに対してクエリを発行して平均値、最大・小値、合計などを算出する
  • 外部チェック
    • シェルやバイナリ実行をする
  • データベースモニタ
  • IPMIエージェント
    • IPMIによるハードウェア監視
  • SSHエージェント
    • SSH経由の監視
  • TELNETエージェント
  • JMXエージェント
    • JMXによるJavaプロセスの監視
  • 計算アイテム
    • トリガーの条件式へ使用され、トリガー関数を使用した計算が可能



その他

■難点

  • ダッシュボードのカスタマイズの自由度が低い?

■Zabbix APIを使う上であると便利ツール

Vagranterror出たネタ
CentOS7だと、ネットワークでエラーになる。
ネットワークインターフェース名がデフォルトで「eth0」でなく「enp0s8」なのが原因の模様。

  config.vm.network "private_network", ip: "192.168.33.11", virtualbox__intnet: "intnet"
  config.vm.provision :shell, :inline => "sudo ip addr add 192.168.33.11/24 dev enp0s8; sudo ip link set enp0s8 up"

■参考
Zabbix2系について
http://www.slideshare.net/qryuu/zabbix-var2

Zabbix2.2構築
http://www.slideshare.net/qryuu/22-zabbix

Zabbix、Serf連携
http://www.slideshare.net/zembutsu/serf-orchestration-with-zabbix-operation

公式(日本)
http://www.zabbix.jp/documents/

今度見る
http://www.sraoss.co.jp/technology/zabbix/introduction/01-firststep.php
http://www.sraoss.co.jp/technology/zabbix/introduction/02-2ndstep.php
http://www.sraoss.co.jp/technology/zabbix/introduction/03-3rdstep.php
http://knowledge.sakura.ad.jp/tech/585/
http://tech-sketch.jp/?s=zabbix
https://blog.apar.jp/zabbix/1046/
http://solaris10.sakura.ne.jp/index.cgi?page=Zabbix%A5%A8%A1%BC%A5%B8%A5%A7%A5%F3%A5%C8%A4%CE%C0%DF%C4%EA%28%A5%B9%A5%BF%A5%F3%A5%C9%A5%A2%A5%ED%A5%F3%A5%C7%A1%BC%A5%E2%A5%F3%29
http://www.atmarkit.co.jp/ait/spv/0911/19/news108.html