Contents
- 1 Zabbixについて
- 2 環境
- 3 サーバの構築
- 4 Zabbixの構築
- 5 Zabbixエージェント
- 6 Zabbixの運用
- 6.1 Web管理画面からの監視設定
- 6.1.1 監視対象ホストの登録
- 6.1.2 グラフの作成
- 6.1.3 アプリケーションの作成
- 6.1.4 アイテム(監視項目)の作成
- 6.1.4.1 よく使うZabbixエージェントのアイテム
- 6.1.4.1.1 Linux – CPU Uilization
- 6.1.4.1.2 Linux – Memory Available (byte)
- 6.1.4.1.3 Linux – Load Average
- 6.1.4.1.4 Linux – Disk Free Volume:/ (byte)
- 6.1.4.1.5 Linux – Disk Free Volume:/ (%)
- 6.1.4.1.6 Linux – Running Processes
- 6.1.4.1.7 Linux – Network In (Bps)
- 6.1.4.1.8 Linux – Network In (bps)
- 6.1.4.1.9 Linux – Network Out (Bps)
- 6.1.4.1.10 Linux – Network Out (bps)
- 6.1.4.1.11 Linux – Disk Read : <ディスク> (ops)
- 6.1.4.1.12 Linux – Disk Write : <ディスク> (ops)
- 6.1.4.1.13 ログ監視
- 6.1.4.1 よく使うZabbixエージェントのアイテム
- 6.1.5 正規表現の設定
- 6.1.6 トリガーの設定
- 6.1.7 ユーザ権限の変更
- 6.1.8 テンプレート
- 6.2 Web管理画面からの監視情報閲覧
- 6.3 snmpwalkによる確認
- 6.4 監視項目の自動更新
- 6.1 Web管理画面からの監視設定
- 7 自作アイテム
- 8 API
- 9 データベースの直接利用
- 10 ツール
Zabbixについて
構成要素
Zabbixの構成要素はいくつかのノードに分けられる。
代表的なものは、サーバ、エージェント、データベース、フロントエンドで、それぞれ以下の役割を持つ。
- サーバ
監視を実行し、各監視対象から値を取得する。 - エージェント
LinuxなどOSにインストールされ、サーバの要求に応じて値を返す。
エージェントを使用することで、OS上で取得可能なあらゆる値を監視できるが、エージェントを使用せずにSNMPを使用することも出来る。 - データベース
監視対象の各項目の値を保存しておく。 - フロントエンド
データベースから値を取得しグラフ化したり、各種設定を行う
フロントエンドで設定した内容はデータベースを通じてサーバに取得される。
つまり、フロントエンドとサーバは直接連携せず、サーバがダウンしていてもグラフの閲覧などは可能。
最も簡単な構成では、サーバ、フロントエンド、データベースは同じホスト上で稼動させる。
他構成次第でプロキシや、Javaゲートウェイなどのノードが使用される。
用語
アイテム
Zabbixが各ホストに対して行うデータ監視項目。
整数値、浮動小数値、文字列値等のデータ型、単位、保存期間など各種設定を行うことが出来る。
アイテムのデータの取得はSNMP、Zabbixエージェントなど、いくつかの方法がある。
アイテムはキーによって識別される。
アイテムキー
アイテムを識別する文字列。
CPU使用率やディスク使用量などによって一意に定まる。
一部を変数化可能で、特定のパスのディスク使用量などというように設定可能。
アプリケーション
アイテムをグループ化したもの
タイプ
アイテムの監視方法のこと。
Zabbix Agentによる監視やエージェント不要の監視方法などがある。
ウェブシナリオ
連続したHTTPアクセスにより、特定のWEBページ内を巡回可能かどうかの監視が行える。
これによってログインが必要なサイトでログインし、その後特定のページが閲覧できるかといった監視を行うことが出来る。
1回のHTTPアクセスをウェブステップと呼び、シナリオは複数回のステップにより構成される。
マクロ
{$<文字列>}の形式で定義でき、値の対応を記述することができる。
マクロはホスト単位、テンプレート単位、グローバルで設定可能で、アイテムやトリガーなどで使用することで、
共通の設定を使いつつもホスト毎に使用する値を変えるといったことが可能となる。
テンプレート
アイテムやトリガー、グラフなどを登録しておき、ホスト作成時に適用することで、
テンプレート内で設定したアイテムなどが自動でそのホストでも有効になる。
テンプレート内で定義したアイテムなどは一部を除きテンプレートで設定した統一した共通設定値が利用されるため、
テンプレートを設定変更するとテンプレートを使用する全てのホストに一括反映できる。
共通項目内で個別の値を使用したい場合はマクロを使用すればよい。
ヒストリ
監視データのこと。
トレンド
一定期間のヒストリから算出した最大値や平均などの統計データのこと。
アクション
アイテムが指定した状態になった時にZabbix Serverが行う内容の事。
アラートメールを送ったり、指定したコマンドを実行することができる。
異常状態から復帰した際に再度メールなどメッセージを送ることができるが、
これをリカバリメッセージという。
正規表現
ログ監視で使用する正規表現データ。
正規表現データとして独立させることで、複数のログ監視に割り当てることができる。
正規表現に一致する特定文字列を障害とする、または障害としないことができる。
これはトリガーと目的は同じであるが、トリガーはサーバ側で判断するのに対し、正規表現はクライアント側で判断する。
つまり、正規表現を用いると、サーバ側に転送するログ量を制御できる。
反面、サーバで閲覧可能なログに欠損が発生するので、どちらを使用するかは状況により異なる。
環境
- OS
CentOS release 6.4 (64bit)
- Product Version
2.2.1
- RDBMS
MySQL 5.6.15
サーバの構築
MySQLの構築
mkfs -T ext4 /dev/xvdb mount /dev/xvdb /mysql-data vi /etc/fstab mysql-data /mysql-data ext4 defaults 1 2
MySQLのインストール
- mysqlユーザを作成する
useradd --user-group --no-create-home --shell /sbin/nologin mysql
- 関連パッケージをインストールする
yum install gcc gcc-c++ cmake perl bison ncurses-devel -y
- OSにデフォルトでインストールされているMySQLの設定ファイルを削除する
rm -f /etc/my.cnf
- scpやwgetを使用してソースコードをダウンロードする
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz
- 展開する
tar xzfv mysql-*.tar.gz
- MySQLディレクトリへ移動する
cd mysql-*
- コンパイル最適化設定を行う
export CFLAGS="-O3 -m64 -march=native" export CXXFLAGS=$CFLAGS # make時にinclude/mysqld_error.hでIllegal instruction include/mysqld_error.hエラーが出る場合は-march=nativeオプションは外す
- MySQLのインストール場所とデータ用ディレクトリを分ける場合は、データ用ディレクトリを作成する
# MySQLのデータ格納場所を/mysql-dataとする mkdir -p -m 774 /mysql-data chown mysql:mysql /mysql-data
- インストール設定を行う
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.15 -DMYSQL_DATADIR=/mysql-data 2>&1 | tee cmake.log
- インストールする
make 2>&1 | tee make.log make install 2>&1 | tee make_install.log
- 起動スクリプトを設定
cp support-files/mysql.server /etc/init.d/mysqld chmod 554 /etc/init.d/mysqld chkconfig --add mysqld # 登録を確認する chkconfig --list mysqld
- インストールに使用したパッケージを削除する
cd ../ rm -rf mysql-*
- MySQLのシンボリックリンクを作成する
ln -s /usr/local/mysql-5.6.15 /usr/local/mysql
これによって、複数のバージョンのApacheを同居させ、リンクを切り替えることで、バージョン変更が可能 - 共通した環境とするために環境変数を設定する
export MYSQL_HOME=/usr/local/mysql export MYSQL_DATA=/mysql-data
- ツール類にパスを通す
export PATH=$MYSQL_HOME/bin:$PATH
- 環境変数を再起動後も有効にする
vi /etc/bashrc # 以下を追記する export MYSQL_HOME=/usr/local/mysql export MYSQL_DATA=/mysql-data export PATH=$MYSQL_HOME/bin:$PATH
- 空の設定ファイルを作成する
echo "[mysqld]" > $MYSQL_HOME/my.cnf
- 初期データベースの作成
cd $MYSQL_HOME scripts/mysql_install_db --datadir=$MYSQL_DATA --user=mysql rm -f my.cnf chown mysql:mysql $MYSQL_DATA chown mysql:mysql $MYSQL_DATA/* chown mysql:mysql $MYSQL_DATA/*/*
- mysql起動
mysqld_safe &
- セキュリティ設定
以下スクリプトを実行する。対話的に実行されるが、パスワードの入力以外は Y を入力しておけばよい。
mysql_secure_installation
Zabbixの構築
サーバ・フロントエンドインストール
事前準備としてMySQLなどのデータベースの用意が必要。
依存する関連パッケージが多く、パッケージもソースコードと同じ最新版が用意されているので、
敢えてソースコードからインストールするメリットはない。
パッケージからインストール
- 関連パッケージをインストールするためにリポジトリを追加する(バージョンによって異なる)
rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm # 古いバージョンのリポジトリが登録されている場合、ここで削除される
- インストールする
zabbix-webをインストールすると、標準DBのPostgreSQLと競合し、zabbix-web-mysqlがインストールできないので、
zabbix-webは指定してインストールせずに、zabbix-web-mysqlの依存パッケージとしてインストールする。
yum install -y zabbix-server-mysql zabbix-web-mysql
- 必要に応じて以下もインストールする
yum install zabbix-sender yum install zabbix-get
ソースコードからインストール
- 関連パッケージのインストール
- fping
wget http://fping.org/dist/fping-3.6.tar.gz tar zfxv fping-3.6.tar.gz cd fping-3.6 export CFLAGS="-O3 -m64" ./configure make make install cd ../ rm -rf fping*
- iksemel
wget http://iksemel.googlecode.com/files/iksemel-1.4.tar.gz tar zfxv iksemel-1.4.tar.gz cd iksemel-1.4 export CFLAGS="-O3 -m64" ./configure make make install cd ../ rm -rf iksemel*
- fping
- 本体のインストール
- ダウンロードサイトからURLを取得し、ダウンロードする
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.9/zabbix-2.0.9.tar.gz
- ダウンロードサイトからURLを取得し、ダウンロードする
サーバ初期設定
MySQLの設定
- zabbixデータベース、zabbixユーザの作成
# mysqlにログインして実行 create database zabbix character set utf8; # リモートホストのMySQLを使用する場合 grant all privileges on zabbix.* to zabbix identified by 'zabbix'; # ローカルホストのMySQLを使用する場合 # grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; exit
- データベースのインポート
※MySQLはローカルにある想定
mysql -uzabbix -pzabbix zabbix < /usr/share/doc/zabbix-server-mysql-*/create/schema.sql mysql -uzabbix -pzabbix zabbix < /usr/share/doc/zabbix-server-mysql-*/create/images.sql mysql -uzabbix -pzabbix zabbix < /usr/share/doc/zabbix-server-mysql-*/create/data.sql
Apacheの設定
vi /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone XXXXXXX
となっている行があるので、これを以下に修正する。
php_value date.timezone Asia/Tokyo
更に<Directory “/usr/share/zabbix”>ディレクティブ内で以下を修正する。
# 追加 Require all granted # 削除 Order allow,deny Allow from all
再起動して設定を反映する。
httpd -k restart
ZABBIXの設定
vi /etc/zabbix/zabbix_server.conf
以下を追加する。
DBHost=127.0.0.1 DBName=zabbix DBUser=zabbix DBPassword=zabbix
ソケット接続する場合は、DBSocketの値を適切に変更する
例:DBSocket=/tmp/mysql.sock
zabbixサーバー起動
zabbix_serverコマンドにより、サーバープロセスを起動することができる。
zabbix_server
また、サービス登録もされているので、serviceコマンドから起動することも出来る。
service zabbix-server start
OS起動時に自動で立ち上げる場合、runlevel3で起動するように設定する。
- 現在の設定を確認する
chkconfig --list zabbix-server # zabbix-server 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- 起動するように設定する
chkconfig --level 3 zabbix-server on
- 現在の設定を確認する
chkconfig --list zabbix-server # zabbix-server 0:off 1:off 2:off 3:on 4:off 5:off 6:off
Web設定
以上までの設定変更を行うとZabbixが使用可能となるので、以下にアクセスする。
http://<ホスト名>/zabbix/
以降はWEBブラウザから設定を行うことが出来る。
管理者ログインはAdmin、zabbixで行う。
ただし、初回アクセス時は初期設定が必要。
DB設定で、ホスト名にlocalhostを使用すると接続がUNIX SOCKETに強制されるが、
UNIX SOCKETはzabbix_server.confファイルの設定に拘わらず、/var/lib/mysql/mysql.sockが使用されるので、
このパスにソケットファイルがない場合は、ここにソケットを作成するか、リンクを作成するか、
TCP/IP接続(127.0.0.1を使用)する必要がある。
言語設定
使用する言語を変更できる。
- Administration
- Users
- ユーザーの設定画面に変更(ドロップダウンボックスの値をUser GroupsからUsersに変更)
- Adminユーザを選択
- Languageを日本語に変更
- 保存
メール設定
障害時にアラートメールを送信する設定を行う。
Zabbix Serverと同じホストにSMTPサーバが稼動しているとする。
- メールサーバを設定する
- 管理
- メディアタイプ
- Emailを選択する
- SMTPサーバー、SMTP heloに「localhost」と入力する
- 送信元メールアドレスにメールサーバのドメイン名を使用したメールアドレスを記入する
- 保存
- 不要であれば、Email以外のメディアタイプを無効にしておく
- 宛先を登録する
- 管理
- ユーザー
- ユーザーに画面右部のドロップダウンリストを切り替える
- Adminを選択する
- 「メディア」タブを開く
- 「追加」
- 「送信先」に宛先メールアドレスを入力する
- 「指定した深刻度のときに使用」欄を必要に応じて選択する
- 「追加」ボタンをクリックする
- 保存
- アクションを設定する
- 設定
- アクション
- 「Report problems to Zabbix administrators」を選択する
- 有効にする
- デフォルトの件名、デフォルトのメッセージ、復旧通知の件名、リカバリメッセージを適宜修正する
- 「アクションの実行内容」タブを開く
- 1を変更する
- 「次のメディアのみ使用」ドロップダウンボックスをEmailに変更する
- 更新
- 保存
メールのみのアカウント作成
障害時などに通知するメールアドレスはユーザアカウントとひも付けられるため、
WEBログインはしないが障害通知用のメールアドレスを登録する場合、専用のアカウントを作成する必要がある。
- 管理
- ユーザー
- ユーザーに画面右部のドロップダウンリストを切り替える
- ユーザーの作成
- エイリアスからパスワードまでを入力する
- グループに「No access to the frontend」を選択して追加する
- メディアタブを開く
- 「追加」をクリックし、メールアドレスを追加する
- 保存
- この作成したアカウントを使用してアクションを作成する
Zabbixエージェント
Zabbixエージェントを監視対象のホストにインストールすることで、様々な情報を取得することができる。
エージェントの構築
エージェントのインストール
- リポジトリを追加する(バージョンによって異なる)
※CentOS7系の場合はel6をel7にする。
rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
- パッケージをインストールする
yum install zabbix-agent
- 必要に応じて以下もインストールする
yum install zabbix-sender yum install zabbix-get
エージェントの起動
- コマンドでの起動
/usr/sbin/zabbix_agent &
- サービスによる起動
service zabbix-agent start
OS起動時に自動で起動させる
chkconfig --level 3 zabbix-agent on
設定変更
設定ファイルが以下のパスに存在するので、修正することで設定変更を行うことができる。
/etc/zabbix/zabbix_agentd.conf
設定変更後は再起動が必要。
service zabbix-agent restart
設定項目
基本設定
- PIDファイルのパス
- インストール時の設定
PidFile=/var/run/zabbix/zabbix_agentd.pid
- デフォルト
PidFile=/tmp/zabbix_agentd.pid
- インストール時の設定
- 出力インタフェース
- インストール時の設定
なし
- デフォルト
SourceIP=
- インストール時の設定
- 待ち受けポート
1024-32767の間で指定する必要がある。
- インストール時の設定
なし
- デフォルト
ListenPort=10050
- インストール時の設定
- プロセス数
Agentプロセスをいくつ起動するかを指定する。
0を指定するとプロセスが起動できず、サーバとの通信ができなくなる。
- インストール時の設定
なし
- デフォルト
StartAgents=3
- インストール時の設定
ログ設定
- ログファイルパス
指定がない場合、syslogに出力される。
- インストール時の設定
LogFile=/var/log/zabbix/zabbix_agentd.log
- デフォルト
なし(syslogに出力)
- インストール時の設定
- ログファイルサイズ
ローテーションを行うログファイルのサイズをMB単位で指定する。
0を指定した場合、ローテーションを行わない。
- インストール時の設定
LogFileSize=0
- デフォルト
LogFileSize=1
- インストール時の設定
- ログレベル
0~4が指定可能で、それぞれ以下の意味を持つ
0 no debug 1 critical information 2 error information 3 warnings 4 for debugging (produces lots of information) - インストール時の設定
なし
- デフォルト
DebugLevel=3
- インストール時の設定
サーバ設定
サーバとして予め設定したホストからの要求しかエージェントは値を返さない。
そのため、サーバのホスト名 / IPアドレスの設定を行う必要がある。
- 通信許可サーバ
- インストール時の設定
Server=127.0.0.1
- デフォルト
Server=
- インストール時の設定
- インストール時の設定
ServerActive=127.0.0.1
- デフォルト
ServerActive=
アクティブチェック
- インストール時の設定
Hostname=Zabbix server
- デフォルト
Hostname=
設定ファイル読み込み
外部に定義した別の設定ファイルをロードすることができる。
ディレクトリを指定した場合は、その直下のファイルがロードされる。
- インストール時の設定
Include=/etc/zabbix/zabbix_agentd.d/
- デフォルト
なし
リモートコマンド
サーバからの任意のリモートコマンドによる監視を行う設定をする
監視項目は下記
system.run[command,<mode>]
- 実行の可否
0か1をとり、0は不許可、1は許可である。
- インストール時の設定
なし
- デフォルト
EnableRemoteCommands=0
- インストール時の設定
- 実行内容のログ
実行されたコマンドをログに記録するかどうかを指定する。
ログレベルはwarning(3)となる。
0か1をとり、0は記録しない、1は記録する、である。
- インストール時の設定
なし
- デフォルト
LogRemoteCommands=0
- インストール時の設定
独自監視項目の作成
特定のスクリプトやコマンドを実行して値を取得することで、その値を監視することができる。
- 書式
UserParameter=<監視項目名(キー)>,<実行コマンド>
- 引数
キーに [*] を含めることで、引数として文字列を受け取ることができる。
引数は $1、$2等で参照可能
例えば、UserParameter=ping[*],echo $1と設定し、アイテムにping[0]と登録した場合、echo 0が実行される。
引数を複数渡す場合は、 , で区切る。例えば、ping[0,1,2,3]のようにすることで、それぞれ $1~$4で参照可能。
- 引数
ここで設定したキー名を用いてZabbixサーバのアイテムのキー値に設定する
設定した監視項目が正しく動作するかはzabbix_getコマンドにより確認できる
zabbix_get -s <監視対象> -k <監視項目名>
※存在しない監視項目名を指定したり、Serverで指定しているホスト以外から実行した場合は何も表示されない。Serverで127.0.0.1と指定している場合は、zabbix_get でlocalhostと指定しても何も表示されない。
- サンプル
- 現在の秒
UserParameter=now.second,date | sed "s/.*://g"|sed "s/ .*//g"
- 現在の秒
設定例
監視サーバ
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=10 DebugLevel=3 Server=127.0.0.1 StartAgents=3 Include=/etc/zabbix/my_zabbix_agentd.linux.conf
WEBサーバ
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=10 DebugLevel=3 Server=X.X.X.X StartAgents=3 Include=/etc/zabbix/my_zabbix_agentd.linux.conf Include=/etc/zabbix/my_zabbix_agentd.apache.conf
Zabbixの運用
Web管理画面からの監視設定
監視対象ホストの登録
- 設定
- ホスト
- 「ホストの作成」ボタンをクリック
- 必要情報を入力する
- SNMPなど監視方法によって使用するインタフェースを選択し、不要なものは削除する
- ホスト名とインタフェース項目のIPアドレスは両方入力する必要がある
グラフの作成
数値データを監視している場合、自動的に時間軸と値の2軸の折れ線グラフが作られるが、
円グラフや積算グラフを表示させる場合や、複数の項目を1つのグラフ内で表示させる場合はグラフの作成を行う必要がある。
- 設定
- ホスト
- グラフを作成するホストの「グラフ」をクリック
アプリケーションの作成
アプリケーションはホストやテンプレート単位で作成し、グローバルには設定できない。
従って、テンプレートやホストが異なると、同名のアプリケーションでも再度作成する必要がある。
- 設定
- アイテム追加先の選択(ホスト or テンプレート)
- 「アプリケーション」リンクをクリック
- アプリケーションの作成
- 名前を入力する
- 保存
アイテム(監視項目)の作成
- 設定
- アイテム追加先の選択(ホスト or テンプレート)
- 「アイテム」リンクをクリック
- アイテムの作成
- 名前、キーなどを入力する
- 保存
- 設定項目について
- 名前
アイテムの名前 - タイプ
ZabbixエージェントやSNMPなどアイテムの値の取得方法 - キー
アイテムの識別名
- 名前
- タイプについて
- Zabbixエージェント
サーバからの要求に対し、予め監視対象にインストールしたZabbixエージェントが応答することで値を収集する。 - Zabbixエージェント(アクティブ)
イベントが発生すると、予め監視対象にインストールしたZabbixエージェントがZabbixサーバに対し値を送る。 - シンプルチェック
pingやポート監視など、Zabbixサーバの機能のみで値を収集する。 - SNMPエージェント
サーバからの要求に対し、監視対象のSNMPデーモンが応答することで値を収集する。 - SNMPトラップ
イベントが発生すると、監視対象のSNMPクライアントがZabbixサーバに対し値を送る。 - Zabbixトラッパー
zabbixの付属ソフトのzabbix_senderによって、任意のタイミングで監視対象からZabbixサーバに対し値を送る。
- Zabbixエージェント
- Tips
- 取得した値がByte値でBit値に変換したい場合等は「乗数」に8を指定する。乗数は小数も指定可能なので、除算を行う場合は小数を指定する。
- SNMPは数値のみのOIDだけではなく、サブツリー名を指定したOIDの指定が可能。
- snmpwalkで取得した値がCounter系のものであれば、「保存時の計算」を「差分」や「差分/時間」にする
よく使うZabbixエージェントのアイテム
Linux – CPU Uilization
- キー
system.cpu.util
- データ型
数値(浮動小数)
- 単位
%
Linux – Memory Available (byte)
- キー
vm.memory.size[available]
- データ型
数値(浮動小数)
- 単位
%
Linux – Load Average
- キー
system.cpu.load
- データ型
数値(浮動小数)
Linux – Disk Free Volume:/ (byte)
マウントポイントで対象ディスクを指定するが、マウントポイントよりディスクで指定したい場合は使用しない
- キー
vfs.fs.size[/,free]
- 単位
byte
Linux – Disk Free Volume:/ (%)
マウントポイントで対象ディスクを指定するが、マウントポイントよりディスクで指定したい場合は使用しない
- キー
vfs.fs.size[/,pfree]
- データ型
数値(浮動小数)
- 単位
%
Linux – Running Processes
- キー
proc.num[,,run]
Linux – Network In (Bps)
- キー
net.if.in[eth0,bytes]
- 単位
byte
- 保存時の計算
差分/時間
Linux – Network In (bps)
- キー
net.if.in[eth0]
- 単位
bps
- 乗数
8
- 保存時の計算
差分/時間
Linux – Network Out (Bps)
- キー
net.if.out[eth0,bytes]
- 単位
Bps
- 保存時の計算
差分/時間
Linux – Network Out (bps)
- キー
net.if.out[eth0]
- 単位
bps
- 乗数
8
- 保存時の計算
差分/時間
Linux – Disk Read : <ディスク> (ops)
- キー
vfs.dev.read[<ディスク>,ops]
- データ型
数値(浮動小数)
- 単位
ops
Linux – Disk Write : <ディスク> (ops)
- キー
vfs.dev.write[<ディスク>,ops]
- データ型
数値(浮動小数)
- 単位
ops
ログ監視
- キー
log[<ファイルパス>]
- データ型
ログ
正規表現の設定
正規表現の作成
- 管理
- 一般設定
- 正規表現を選択
- 正規表現の作成
- 正規表現を設定する
- 名前を入力する
- 条件式を設定する
- 条件式の新規をクリックする
- 条件式に正規表現を入力する
- 条件式の形式を選択する
- 文字列が含まれる
- いずれかの文字列が含まれる
- 文字列が含まれない
- 結果が真
- 結果が偽
- 必要であれば大文字小文字を区別するかにチェックを入れる
- 追加
- テスト文字列に文字列を入力しテストをクリックすることでテストができる
- 保存
正規表現の割り当て
ログ監視に作成した正規表現を割り当てるには、アイテムキーの第二引数に@と正規表現名を入力する
- ログ監視用のアイテムの設定画面を開く
- タイプに「Zabbixエージェント」を選択する
- キーに次の書式で入力する
log[<監視対象ファイルパス>,@<正規表現名>]
- データ型に「ログ」を選択する
- その他は任意に設定し、保存する
トリガーの設定
トリガーは監視データに条件を設定し、その条件を満たした場合に発生させるアラートを定義する。
監視データはアイテムとして定義され、取得中のものでなければならない。
トリガーの条件式にアイテムキーを記載することで、自動でアイテムとトリガーの関連付けが行われる。
トリガーの記法
トリガーの書式は次のとおりである。
{<サーバー/テンプレート名>:<アイテムキー>.<関数>}<比較演算子><比較値>
比較演算子
- 同じ
=
- 異なる
#
- 大なり
>
- 小なり
<
その他の演算子
- AND
&
- OR
|
- 四則演算
+ - * /
イベント生成
- ノーマル
トリガーのステータスが変更されると、エラーが発生したとされる。
エラー状態が解除されない限り、次にトリガーが発動しても、エラー時アクションが実行されない。
- ノーマル + 障害イベントを継続して生成
トリガーのステータスが変更され度に、常にエラー時アクションを実行する。
関数
count
過去指定回数分のデータを一定ルールで比較し、合致数を返す。
CPUの一時的な急騰時にアラート発生を避けるなどのために使用可能。
- パラメータ
- 集計対象
- 個数
#<個数>
- 時間
<現在から過去への秒数>
- 個数
- 比較値
省略可能 - 比較演算子
省略可能。
ダブルクォーテーションで囲う。
- eq
等しい - ne
等しくない - gt
より大きい - ge
以上 - lt
未満 - le
以下 - like
値にパターンが含まれれば一致
- eq
- 過去時間へのシフト
省略可能。
第一引数を現在からの秒数ではなく、指定秒前から始める。
- 集計対象
- 例
- 直近10分間の「12」に等しい値の出現回数。
count(600,12,"eq")
- 直近10個の値の中、「12」より大きい値の出現回数。
count(#10,12,"gt")
- 直近10分間の「12」に等しい値の出現回数。
last
直近の値を取得する
- パラメータ
- 0
最新の値 - #<数値>
N個前の値。
1から始まる。
last(#1)はlast(0)と同じである。
- 0
regexp
大文字小文字を無視した正規表現に一致するかどうか。
一致した場合、1を返す。
iregexp
大文字小文字を無視しない正規表現に一致するかどうか
一致した場合、1を返す。
トリガーの例
サーバ名はいずれもtest_serverとする
Ping監視
Ping監視は成功が1、失敗が0と記録される。
- 最新のPingデータが失敗の場合
{test_server:icmpping[].last(0)}=0
ユーザ権限の変更
ユーザごとに監視対象の設定の書き込み、監視の値の読み込み権限を設定できる。
権限設定はユーザが所属するグループごとに行う。
- 管理
- ユーザー
- 権限を変更するグループを選択する
- 権限タブを開く
- 「権限の編集」欄の「追加」ボタンをクリックする
- 追加したい項目を選択する
- 「選択」ボタンをクリックする
- 「保存」ボタンをクリックする
テンプレート
テンプレートのエクスポート
- 設定
- テンプレート
- 対象テンプレートにチェックを入れる
- 選択をエクスポート
- 実行
- XMLファイルがダウンロードされる
テンプレートのインポート
- 設定
- テンプレート
- テンプレートのインポート
- ローカルのファイルを選択する
- インポート
Web管理画面からの監視情報閲覧
監視データを閲覧する
- 監視データ
- 最新データ
- 閲覧したいホスト、監視項目を選択して開く
データのみを削除
設定は残しつつ、保存されている取得データを削除する。
- 設定
- ホスト
- アイテム
- 削除したいアイテムをチェック
- 「選択したヒストリを削除」を実行
snmpwalkによる確認
snmpwalkコマンドを使用することで、監視対象にSNMPアクセスが可能かどうか確認できる。
snmpwalkがインストールされていない場合は別途インストールが必要。
- snmpwalkのインストール
- snmpwalkがインストールされているか確認する
snmpwalk -V
- net-snmp-utilsをインストールする
yum install net-snmp-utils -y
- snmpwalkがインストールされたか確認する
snmpwalk -V
- snmpwalkがインストールされているか確認する
- 対象のMIBを確認
snmpwalkコマンドを使用して監視できるMIB一覧を取得する。
snmpwalk -v 2c -c <コミュニティ値> <対象ホスト>
バージョンオプション-vは 1 や 3 も選択可能。
- 特定のMIBの値を取得
snmpgetコマンドを使用すると、特定のMIBのみの値を取得できる。
snmpget -v 2c -c <コミュニティ値> <対象ホスト> <OID>
監視項目の自動更新
- WEBサーバを用意し、設定ファイルを設置する
- アイテム更新のスクリプトを作成する
vi /usr/local/bin/zabbix_item_updater.sh
- 以下を修正して貼り付ける
- ITEM_FILES:ダウンロードするファイル
- ITEM_URL:ダウンロードするURL
ITEM_FILES=("my_zabbix_agentd.linux.conf" "my_zabbix_agentd.apache.conf") ITEM_URL="http://XXXXX" UPDATE_COUNT=0 for next in $ITEM_FILES; do UPDATE_COUNT=`expr $UPDATE_COUNT + \`wget "$ITEM_URL""$next" -N -O /etc/zabbix/"$next" 2>&1 | grep saved | wc -l \`` done if [ "$UPDATE_COUNT" -gt 0 ]; then /etc/init.d/zabbix-agent restart fi
- 実行権限を付与する
chmod 774 /usr/local/bin/zabbix_item_updater.sh
- cronに登録する(30分間隔)
echo "*/30 * * * * root /usr/local/bin/zabbix_item_updater.sh" > /etc/cron.d/zabbix
自作アイテム
変更後は再起動が必要
service zabbix-agent restart
Linux
ディスク使用量
- UserParameter
UserParameter=my.disk.utilization.byte[*],df | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 3
- アイテム情報
Linux - Disk Utilization : <ディスク> (byte)
- キー
my.disk.utilization.byte[*]
- 単位
byte
- 乗数
1024
- キー
ディスク使用率
- UserParameter
UserParameter=my.disk.utilization.percent[*],df | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 5 | sed "s/%//"
- アイテム情報
Linux - Disk Utilization : <ディスク> (%)
- キー
my.disk.utilization.percent[*]
- 単位
%
- キー
ディスク残量
- UserParameter
UserParameter=my.disk.available.byte[*],df | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 4
- アイテム情報
Linux - Disk Available : <ディスク> (byte)
- キー
my.disk.available.byte[*]
- 単位
byte
- 乗数
1024
- キー
ディスク残量率
- UserParameter
UserParameter=my.disk.available.percent[*],expr 100 - `df | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 5 | sed "s/%//"`
- アイテム情報
Linux - Disk Available : <ディスク> (%)
- キー
my.disk.available.percent[*]
- 単位
%
- キー
ディスク読み込み (bps)
sysstatパッケージが必要
- UserParameter
UserParameter=my.disk.read.bps[*],iostat -k | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 3
- アイテム情報
Linux - Disk Read : <ディスク> (bps)
- キー
my.disk.read.bps[*]
- データ型
数値(浮動小数)
- 単位
bps
- 乗数
1024
- キー
ディスク書き込み (bps)
sysstatパッケージが必要
- UserParameter
UserParameter=my.disk.write.bps[*],iostat -k | grep $1 | sed 's/\s\{1,\}/ /g' | cut -d " " -f 4
- アイテム情報
Linux - Disk Write : <ディスク> (bps)
- キー
my.disk.write.bps[*]
- データ型
数値(浮動小数)
- 単位
bps
- 乗数
1024
- キー
TCP/UDPコネクション数 (IPv4)
- UserParameter
UserParameter=my.network.connections,netstat -notu | grep -v :: | grep [0-9] | wc -l
- アイテム情報
Linux - TCP/UDP Connections
- キー
my.network.connections
- キー
メモリ使用率
- UserParameter
UserParameter=my.memory.utilization.percent,expr 100 \* `free | grep Mem | sed 's/\s\{1,\}/ /g' | cut -f 3 -d " "` / `free | grep Mem | sed 's/\s\{1,\}/ /g' | cut -f 2 -d " "`
- アイテム情報
Linux - Memory Utilization (%)
- キー
my.memory.utilization.percent
- 単位
%
- キー
メモリ残量率
- UserParameter
UserParameter=my.memory.available.percent,expr 100 - 100 \* `free | grep Mem | sed 's/\s\{1,\}/ /g' | cut -f 3 -d " "` / `free | grep Mem | sed 's/\s\{1,\}/ /g' | cut -f 2 -d " "`
- アイテム情報
Linux - Memory Available (%)
- キー
my.memory.available.percent
- 単位
%
- キー
メモリ使用量
- UserParameter
UserParameter=my.memory.utilization.byte,free | grep Mem | sed 's/\s\{1,\}/ /g' | cut -f 3 -d " "
- アイテム情報
Linux - Memory Utilization (byte)
- キー
my.memory.utilization.byte
- 単位
byte
- キー
Apache
apachectl fullstatusコマンドが使用できる必要できるようディレクティブを設定しておく必要がある。
また、apachectlスクリプトを一部修正する。
vi `which apachectl`
旧:LYNX=”/usr/bin/links -dump”
新:LYNX=”/usr/bin/links -dump -no-home”
Requests / Second
- UserParameter
UserParameter=my.apache.rps,/usr/local/apache-httpd/bin/apachectl fullstatus | grep requests/sec | sed 's/\s\{1,\}/ /g' | cut -d " " -f 2
- アイテム情報
Apache - Requests / Second
- キー
my.apache.rps
- データ型
数値(浮動小数)
- キー
Processing Workers
- UserParameter
UserParameter=my.apache.pworker,/usr/local/apache-httpd/bin/apachectl fullstatus | grep workers|sed 's/\s\{1,\}/ /g' | cut -d " " -f 2
- アイテム情報
Apache - Processing Workers
- キー
my.apache.pworker
- キー
Idle Workers
- UserParameter
UserParameter=my.apache.iworker,/usr/local/apache-httpd/bin/apachectl fullstatus | grep workers | sed 's/\s\{1,\}/ /g' | cut -d " " -f 7
- アイテム情報
Apache - Idle Workers
- キー
my.apache.iworker
- キー
CPU使用率
- UserParameter
UserParameter=my.apache.cpu,printf 0;/usr/local/apache-httpd/bin/apachectl fullstatus|grep "CPU load" | sed 's/\s\{1,\}/ /g' | cut -d " " -f 9 | sed "s/%//g"
- アイテム情報
Apache - CPU Utilization
- キー
my.apache.cpu
- データ型
数値(浮動小数)
- 単位
%
- キー
最大応答時間
アクセスログに応答時間を出力している必要がある。
またaccess_log読み取れるよう、ディレクトリに実行権限をつける。
※実行ユーザはzabbixではないため、apacheグループにzabbixユーザを入れる対応は出来ない。
chmod o+rx /etc/httpd/logs
- スクリプト
以下のスクリプトを設置する。
- パス
/usr/local/bin/apache_accesslog_maxresponse_getter.sh
- 内容
if [ "$1" = "" ]; then TAIL_TARGET=100 else TAIL_TARGET=$1 fi if [ "$2" = "" ]; then TIME_ROLL=100 else TIME_ROLL=$2 fi if [ "$3" = "" ]; then ACCESS_LOG=/etc/httpd/logs/access_log else ACCESS_LOG=$3 fi compared_time=`date +"%Y%m%d%H%M%S"` compared_time=`expr $compared_time - $TIME_ROLL` max=0 IFS=$'\n' for next in `tail -n $TAIL_TARGET $ACCESS_LOG`; do time=`echo $next | cut -c 1-4,6-7,9-10,17-18,20-21,23-24` if [ "$time" -ge "$compared_time" ]; then response=`echo $next | sed "s/.*(//g" | sed "s/ .*//g"` if [ "$max" -lt "$response" ]; then max=$response fi fi done echo $max
- パス
- UserParameter
UserParameter=my.apache.response.maxtime[*],/usr/local/bin/apache_accesslog_maxresponse_getter.sh
- アイテム情報
Apache - Max Response Time
- キー
my.apache.response.maxtime[100,100]
- データ型
数値(浮動小数)
- キー
プロセス数
- UserParameter
UserParameter=my.apache.processes,ps aux | grep "^apache" | wc -l
- アイテム情報
Apache - Processes Count
- キー
my.apache.processes
- キー
Memcahced
CPU使用率
- UserParameter
UserParameter=my.memcahced.cpu,pidstat|grep memcached|sed 's/\s\{1,\}/ /g'|cut -d " " -f 7
- アイテム情報
Memcahced - CPU Utilization
- キー
my.memcahced.cpu
- データ型
数値(浮動小数)
- 単位
%
- キー
メモリ使用率
- UserParameter
UserParameter=my.memcahced.memory,ps aux | grep memc | grep -v grep | sed 's/\s\{1,\}/ /g'|cut -d " " -f 4
- アイテム情報
Memcahced - Memory Utilization
- キー
my.memcahced.memory
- データ型
数値(浮動小数)
- 単位
%
- キー
データ使用率
- UserParameter
UserParameter=my.memcahced.data.percent,expr `/usr/local/memcached/bin/memcached-tool localhost stats | grep " bytes " | sed "s/[^0-9]*//g"` \* 100 / `/usr/local/memcached/bin/memcached-tool localhost stats | grep limit_maxbytes | sed "s/[^0-9]*//g"`
- アイテム情報
Memcahced - Data Usage (%)
- キー
my.memcahced.data.percent
- 単位
%
- キー
コネクション数
- UserParameter
UserParameter=my.memcahced.connections.all,netstat -nao|grep 11211|egrep -v "LISTEN|udp"|wc -l
- アイテム情報
Memcahced - Connections Count : All
- キー
my.memcahced.connections.all
- キー
memcached-toolによる各種値
- UserParameter
UserParameter=my.memcahced.memcachedtool[*],/usr/local/memcached/bin/memcached-tool localhost stats|grep "$1"|head -n 1|sed "s/[^0-9]*//g"
- データ量
- アイテム情報
Memcahced - Data Usage (byte)
- キー
my.memcahced.memcachedtool[byte]
- 単位
byte
- キー
- アイテム情報
- アイテム数
- アイテム情報
Memcahced - Items Count
- キー
my.memcahced.items
- キー
- アイテム情報
- アクティブコネクション数
- アイテム情報
Memcahced - Connections Count : Active
- キー
my.memcahced.memcachedtool[curr_connections]
- キー
- アイテム情報
- 削除コマンド数(Hit)
- アイテム情報
Memcahced - Command Count : Delete (Hit)
- キー
my.memcahced.memcachedtool[delete_hits]
- キー
- アイテム情報
- 削除コマンド数(Miss)
- アイテム情報
Memcahced - Command Count : Delete (Miss)
- キー
my.memcahced.memcachedtool[delete_misses]
- キー
- アイテム情報
- 取得コマンド数
- アイテム情報
Memcahced - Command Count : Get
- キー
my.memcahced.memcachedtool[cmd_get]
- キー
- アイテム情報
- 保存コマンド数
- アイテム情報
Memcahced - Command Count : Set
- キー
my.memcahced.memcachedtool[cmd_set]
- キー
- アイテム情報
- 読み込みデータ量
- アイテム情報
Memcahced - Data Read
- キー
my.memcahced.memcachedtool[bytes_read]
- 保存時の計算
差分
- キー
- アイテム情報
- 書き込みデータ量
- アイテム情報
Memcahced - Data Written
- キー
my.memcahced.memcachedtool[bytes_written]
- 保存時の計算
差分
- キー
- アイテム情報
- データ領域使用率
- アイテム情報
Memcahced - Data Space Usage (%)
- キー
my.memcahced.data.percent
- キー
- アイテム情報
- データ領域使用量
- アイテム情報
Memcahced - Data Space Usage (byte)
- キー
my.memcahced.memcachedtool[byte]
- キー
- アイテム情報
- 破棄アイテム数
- アイテム情報
Memcahced - Dropped Items Count
- キー
my.memcahced.memcachedtool[evictions]
- 保存時の計算
差分
- キー
- アイテム情報
- SLAB枯渇数
- アイテム情報
Memcahced - SLAB Exhausted Count
- キー
my.memcahced.fullcount
- キー
- アイテム情報
- 取得失敗回数
- アイテム情報
Memcahced - Get Misses
- キー
my.memcahced.memcachedtool[get_misses]
- 保存時の計算
差分
- キー
- アイテム情報
- アイテム数
- アイテム情報
Memcahced - Items Count
- キー
my.memcahced.memcachedtool[curr_items]
- キー
- アイテム情報
- コネクション拒否回数
- アイテム情報
Memcahced - Rejected Connections
- キー
my.memcahced.memcachedtool[listen_disabled_num]
- 保存時の計算
差分
- キー
- アイテム情報
API
APIの概要
- APIはJSON RPCを使用して、JSON形式でメッセージの送受信を行う
- APIにアクセスするURLは以下である
http://<ホスト名>/zabbix/api_jsonrpc.php
使用方法
以下の形式のJSONを送信し、結果をJSON形式で受信する
{ "jsonrpc": "2.0", "method": "<メソッド名>", "params": { "<パラメータ名>": "<パラメータ値>", "<パラメータ名>": "<パラメータ値>", 、、、 }, "id": <リクエスト識別番号>, "auth": "<認証トークン>" }
- method
呼び出すAPI名を指定する。
利用可能なAPIと結果は以下を参照。
https://www.zabbix.com/documentation/2.2/manual/api/reference
- params
使用するmethodに対応するパラメータを指定する。
使用できるパラメータは上記URLを参照。
- id
リクエストに指定した識別番号(自然数)をレスポンスに埋め込まれて返される。
複数同時にリクエストを送信する場合、各レスポンスの識別に利用できる。
1つしか送信しなくてもidの指定は必須である。
- auth
APIを利用する場合、最初にログインして認証トークンを取得する必要がある。
取得したトークンをリクエストに埋め込むことで、APIのリクエストに対して認証が行われる。
データベースの直接利用
テーブル
hosts
- テーブル定義
CREATE TABLE `hosts` ( `hostid` bigint(20) unsigned NOT NULL, `proxy_hostid` bigint(20) unsigned DEFAULT NULL, `host` varchar(64) NOT NULL DEFAULT '', `status` int(11) NOT NULL DEFAULT '0', `disable_until` int(11) NOT NULL DEFAULT '0', `error` varchar(128) NOT NULL DEFAULT '', `available` int(11) NOT NULL DEFAULT '0', `errors_from` int(11) NOT NULL DEFAULT '0', `lastaccess` int(11) NOT NULL DEFAULT '0', `ipmi_authtype` int(11) NOT NULL DEFAULT '0', `ipmi_privilege` int(11) NOT NULL DEFAULT '2', `ipmi_username` varchar(16) NOT NULL DEFAULT '', `ipmi_password` varchar(20) NOT NULL DEFAULT '', `ipmi_disable_until` int(11) NOT NULL DEFAULT '0', `ipmi_available` int(11) NOT NULL DEFAULT '0', `snmp_disable_until` int(11) NOT NULL DEFAULT '0', `snmp_available` int(11) NOT NULL DEFAULT '0', `maintenanceid` bigint(20) unsigned DEFAULT NULL, `maintenance_status` int(11) NOT NULL DEFAULT '0', `maintenance_type` int(11) NOT NULL DEFAULT '0', `maintenance_from` int(11) NOT NULL DEFAULT '0', `ipmi_errors_from` int(11) NOT NULL DEFAULT '0', `snmp_errors_from` int(11) NOT NULL DEFAULT '0', `ipmi_error` varchar(128) NOT NULL DEFAULT '', `snmp_error` varchar(128) NOT NULL DEFAULT '', `jmx_disable_until` int(11) NOT NULL DEFAULT '0', `jmx_available` int(11) NOT NULL DEFAULT '0', `jmx_errors_from` int(11) NOT NULL DEFAULT '0', `jmx_error` varchar(128) NOT NULL DEFAULT '', `name` varchar(64) NOT NULL DEFAULT '', `flags` int(11) NOT NULL DEFAULT '0', `templateid` bigint(20) unsigned DEFAULT NULL, PRIMARY KEY (`hostid`), KEY `hosts_1` (`host`), KEY `hosts_2` (`status`), KEY `hosts_3` (`proxy_hostid`), KEY `hosts_4` (`name`), KEY `hosts_5` (`maintenanceid`), KEY `c_hosts_3` (`templateid`), CONSTRAINT `c_hosts_3` FOREIGN KEY (`templateid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE, CONSTRAINT `c_hosts_1` FOREIGN KEY (`proxy_hostid`) REFERENCES `hosts` (`hostid`), CONSTRAINT `c_hosts_2` FOREIGN KEY (`maintenanceid`) REFERENCES `maintenances` (`maintenanceid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
interface
- テーブル定義
CREATE TABLE `interface` ( `interfaceid` bigint(20) unsigned NOT NULL, `hostid` bigint(20) unsigned NOT NULL, `main` int(11) NOT NULL DEFAULT '0', `type` int(11) NOT NULL DEFAULT '0', `useip` int(11) NOT NULL DEFAULT '1', `ip` varchar(64) NOT NULL DEFAULT '127.0.0.1', `dns` varchar(64) NOT NULL DEFAULT '', `port` varchar(64) NOT NULL DEFAULT '10050', PRIMARY KEY (`interfaceid`), KEY `interface_1` (`hostid`,`type`), KEY `interface_2` (`ip`,`dns`), CONSTRAINT `c_interface_1` FOREIGN KEY (`hostid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
hosts_groups
CREATE TABLE `hosts_groups` ( `hostgroupid` bigint(20) unsigned NOT NULL, `hostid` bigint(20) unsigned NOT NULL, `groupid` bigint(20) unsigned NOT NULL, PRIMARY KEY (`hostgroupid`), UNIQUE KEY `hosts_groups_1` (`hostid`,`groupid`), KEY `hosts_groups_2` (`groupid`), CONSTRAINT `c_hosts_groups_2` FOREIGN KEY (`groupid`) REFERENCES `groups` (`groupid`) ON DELETE CASCADE, CONSTRAINT `c_hosts_groups_1` FOREIGN KEY (`hostid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
hosts_templates
CREATE TABLE `hosts_templates` ( `hosttemplateid` bigint(20) unsigned NOT NULL, `hostid` bigint(20) unsigned NOT NULL, `templateid` bigint(20) unsigned NOT NULL, PRIMARY KEY (`hosttemplateid`), UNIQUE KEY `hosts_templates_1` (`hostid`,`templateid`), KEY `hosts_templates_2` (`templateid`), CONSTRAINT `c_hosts_templates_2` FOREIGN KEY (`templateid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE, CONSTRAINT `c_hosts_templates_1` FOREIGN KEY (`hostid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
items
CREATE TABLE `items` ( `itemid` bigint(20) unsigned NOT NULL, `type` int(11) NOT NULL DEFAULT '0', `snmp_community` varchar(64) NOT NULL DEFAULT '', `snmp_oid` varchar(255) NOT NULL DEFAULT '', `hostid` bigint(20) unsigned NOT NULL, `name` varchar(255) NOT NULL DEFAULT '', `key_` varchar(255) NOT NULL DEFAULT '', `delay` int(11) NOT NULL DEFAULT '0', `history` int(11) NOT NULL DEFAULT '90', `trends` int(11) NOT NULL DEFAULT '365', `status` int(11) NOT NULL DEFAULT '0', `value_type` int(11) NOT NULL DEFAULT '0', `trapper_hosts` varchar(255) NOT NULL DEFAULT '', `units` varchar(255) NOT NULL DEFAULT '', `multiplier` int(11) NOT NULL DEFAULT '0', `delta` int(11) NOT NULL DEFAULT '0', `snmpv3_securityname` varchar(64) NOT NULL DEFAULT '', `snmpv3_securitylevel` int(11) NOT NULL DEFAULT '0', `snmpv3_authpassphrase` varchar(64) NOT NULL DEFAULT '', `snmpv3_privpassphrase` varchar(64) NOT NULL DEFAULT '', `formula` varchar(255) NOT NULL DEFAULT '1', `error` varchar(128) NOT NULL DEFAULT '', `lastlogsize` bigint(20) unsigned NOT NULL DEFAULT '0', `logtimefmt` varchar(64) NOT NULL DEFAULT '', `templateid` bigint(20) unsigned DEFAULT NULL, `valuemapid` bigint(20) unsigned DEFAULT NULL, `delay_flex` varchar(255) NOT NULL DEFAULT '', `params` text NOT NULL, `ipmi_sensor` varchar(128) NOT NULL DEFAULT '', `data_type` int(11) NOT NULL DEFAULT '0', `authtype` int(11) NOT NULL DEFAULT '0', `username` varchar(64) NOT NULL DEFAULT '', `password` varchar(64) NOT NULL DEFAULT '', `publickey` varchar(64) NOT NULL DEFAULT '', `privatekey` varchar(64) NOT NULL DEFAULT '', `mtime` int(11) NOT NULL DEFAULT '0', `flags` int(11) NOT NULL DEFAULT '0', `filter` varchar(255) NOT NULL DEFAULT '', `interfaceid` bigint(20) unsigned DEFAULT NULL, `port` varchar(64) NOT NULL DEFAULT '', `description` text NOT NULL, `inventory_link` int(11) NOT NULL DEFAULT '0', `lifetime` varchar(64) NOT NULL DEFAULT '30', `snmpv3_authprotocol` int(11) NOT NULL DEFAULT '0', `snmpv3_privprotocol` int(11) NOT NULL DEFAULT '0', `state` int(11) NOT NULL DEFAULT '0', `snmpv3_contextname` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`itemid`), UNIQUE KEY `items_1` (`hostid`,`key_`), KEY `items_3` (`status`), KEY `items_4` (`templateid`), KEY `items_5` (`valuemapid`), KEY `items_6` (`interfaceid`), CONSTRAINT `c_items_4` FOREIGN KEY (`interfaceid`) REFERENCES `interface` (`interfaceid`), CONSTRAINT `c_items_1` FOREIGN KEY (`hostid`) REFERENCES `hosts` (`hostid`) ON DELETE CASCADE, CONSTRAINT `c_items_2` FOREIGN KEY (`templateid`) REFERENCES `items` (`itemid`) ON DELETE CASCADE, CONSTRAINT `c_items_3` FOREIGN KEY (`valuemapid`) REFERENCES `valuemaps` (`valuemapid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
準備
ホストの追加
ツール
zabbix_get
Zabbix Agentに対し、特定監視項目の現在の値の取得を行う。
ただし、Zabbix Agent設定で指定しているサーバからしか取得できない。
これにはローカルホストも含まれる。
- 書式
zabbix_get -s <監視対象> -k <監視項目名>
存在しない監視項目名を指定したり、Serverで指定しているホスト以外から実行した場合は何も表示されない。
Serverで127.0.0.1と指定している場合は、zabbix_get でlocalhostと指定しても何も表示されない。