Memo/Linux/Zabbix

https://dexlab.net:443/pukiwiki/index.php?Memo/Linux/Zabbix
 

統合監視ソフト Zabbix

  • 書籍

PostgreSQLの監視


SSL証明書の有効期限の監視

  • 理解しやすくしたスクリプト
    #!/bin/bash
    
    check_ssl_expire(){
    	local endpoint=$1
    	local port=${2:-"443"}
    	local timeout_sec=${3:-"3"}
    	local enddate=$(timeout $timeout_sec openssl s_client -showcerts -connect $endpoint:$port < /dev/null 2>&1 | openssl x509 -enddate 2>/dev/null | perl -ne 'if(/^notAfter=(.+)/){print "$1";}')
    	echo $(( $(( $(date -d "$enddate" +%s) - $(date +%s) )) / 86400 ))
    }
    
    check_ssl_expire "$@"

web監視で「error: error doing curl_easy_perform: Problem with the SSL CA cert」

  • /var/log/zabbix/zabbix_server.log に以下のログが出る場合。
    error: error doing curl_easy_perform: Problem with the SSL CA cert (path? access rights?)
  • /etc/pki/tls/certs/ca-bundle.crt が古いと発生するようだ。
    sudo yum update ca-certificates
    sudo service zabbix-agent restart

ansibleでzabbixの設定を行う


チャットに通知

  • filezabbix-slack-notify.zip 通知スクリプト。CentOS 5/6対応。
    • スクリプトを /etc/zabbix/alertscripts/ に配置
      sudo chmod 755 /etc/zabbix/alertscripts/*.sh
    • 管理 > メディアタイプ > 作成
      • 説明:slack
      • スクリプト名:slack-notify.sh
      • スクリプトパラメータ: Zabbix3.0以上
        {ALERT.SENDTO}
        {ALERT.SUBJECT}
        {ALERT.MESSAGE}
    • 設定 > ユーザ > ユーザ名 > メディアでslackを追加
    • 設定 > アクション > アクション名 > アクションの実行内容タブ > 次のメディアのみ使用: slackに設定
    • CentOS5.x: curl 7.15.5 --data-urlencode 非対応
      payload="{
      ...
      "
      curl -d "$payload" ...
    • CentOS6.x: curl 7.19.7
      payload="payload={
      ...
      "
      curl --data-urlencode "$payload" ...

ネットワーク疎通確認

  • Zabbix Server => Agent
    zabbix_get -s <Agent IP> -k agent.ping
    1
    
    tail -f /var/log/zabbix/zabbix_server.log
    # エラーが無いか確認
    
    tail -f /var/log/zabbix/zabbix_proxy.log
    # proxyを使用している場合も同様
  • Zabbix Agent => Server(Proxy)
    nc -zv <Server IP> 10051
    
    tail -f /var/log/zabbix/zabbix_agentd.log
    # エラーが無いか確認

CLI tools


zabbix-agentのuserparameterスクリプトでsudoを使えるようにする

  • CentOS 6.x, Ubuntu 12.x
    sudo sh -c 'echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix'
    sudo chmod 0440 /etc/sudoers.d/zabbix

CentOS 5.x にEPEL版zabbix2.0.13をインストール

※新規インストールする場合は、EPELではなく、Zabbix Official Repository を使った方が3.0へのバージョンアップもできて良い。

いつの頃からかCentOS5.x用のzabbix20のパッケージがEPELから消えてしまった。

しかし、時間の都合でパッチだけ当てたい。検索したところ、fedoraのbuildシステム上にはrpmがあったのでこれをインストールしてみる。
不具合は当然あるものとして自己責任

  • zabbix20-2.0.13-1.el5 | Build Info | koji
  • CentOS 5.10 64bit
    wget https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-agent-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-debuginfo-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-proxy-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-proxy-mysql-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-proxy-pgsql-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-proxy-sqlite3-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-server-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-server-mysql-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-server-pgsql-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-web-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-web-mysql-2.0.13-1.el5.x86_64.rpm \
    https://kojipkgs.fedoraproject.org//packages/zabbix20/2.0.13/1.el5/x86_64/zabbix20-web-pgsql-2.0.13-1.el5.x86_64.rpm
  • zabbix serverを更新
    sudo yum localinstall --nogpgcheck \
    zabbix20-2.0.13-1.el5.x86_64.rpm \
    zabbix20-agent-2.0.13-1.el5.x86_64.rpm \
    zabbix20-server-2.0.13-1.el5.x86_64.rpm \
    zabbix20-server-mysql-2.0.13-1.el5.x86_64.rpm \
    zabbix20-web-2.0.13-1.el5.x86_64.rpm \
    zabbix20-web-mysql-2.0.13-1.el5.x86_64.rpm \
    zabbix20-web-pgsql-2.0.13-1.el5.x86_64.rpm
    
    sudo service httpd restart

Zabbix2.0.xでLBでSSLアクセラレーションをしている場合にページャーが動作しない

  • CentOS6.x Zabbix 2.0.13 (EPEL) にパッチを当てる場合
    cd ~/
    sudo cp /usr/share/zabbix/include/func.inc.php /usr/share/zabbix/include/func.inc.php.2.0.13
    cp /usr/share/zabbix/include/func.inc.php ./
    wget https://support.zabbix.com/secure/attachment/20605/basename.patch
    sudo patch < basename.patch
    patching file: /usr/share/zabbix/include/func.inc.php
    sudo cp func.inc.php /usr/share/zabbix/include/
    sudo service httpd restart

DBのクリーンアップ

長期間使用しているとDBサイズが肥大化してくる。
特にmysqlのインデックスファイルが大きくなりがち。

  • /etc/my.cnfに最低限以下の設定が必要
    innodb_file_per_table=1
    innodb_file_format=Barracuda
    • テーブル毎にファイルができていればOK
      ls -lh /var/lib/mysql/zabbix/
  • alter tableで肥大化は収まるがテーブルサイズが巨大だと時間がかかる
    alter table history ENGINE=INNODB;
    alter table history_uint ENGINE=INNODB;
    alter table trends ENGINE=INNODB;
    alter table trends_uint ENGINE=INNODB;
  • filezabbix_cleanup
    • ALTER TABLEするシェルスクリプト
    • ログは /var/log/messages に出る
    • ALTER TABLE前
      ll -lh /var/lib/mysql/zabbix/ | grep -P 'M|G'
      合計 433M
      -rw-rw---- 1 mysql mysql  64M  115 16:59 history.ibd
      -rw-rw---- 1 mysql mysql 168M  115 16:59 history_uint.ibd
      -rw-rw---- 1 mysql mysql  44M  115 16:44 trends.ibd
      -rw-rw---- 1 mysql mysql  92M  115 16:45 trends_uint.ibd
    • ALTER TABLE後
      less /var/log/messages
      zabbix_cleanup: [INFO] ALTER TABLE completed. Table: trends, 33 seconds.
      zabbix_cleanup: [INFO] ALTER TABLE completed. Table: trends_uint, 72 seconds.
      zabbix_cleanup: [INFO] ALTER TABLE completed. Table: history, 18 seconds.
      zabbix_cleanup: [INFO] ALTER TABLE completed. Table: history_uint, 47 seconds.
      
      ll -lh /var/lib/mysql/zabbix/ | grep -P 'M|G'
      合計 361M
      -rw-rw---- 1 mysql mysql  56M  115 17:07 history.ibd
      -rw-rw---- 1 mysql mysql 124M  115 17:07 history_uint.ibd
      -rw-rw---- 1 mysql mysql  40M  115 17:02 trends.ibd
      -rw-rw---- 1 mysql mysql  76M  115 17:03 trends_uint.ibd
    • ALTER TABLE ROW_FORMAT=Compressed KEY_BLOCK_SIZE=8 後
      less /var/log/messages
      Jan 15 17:11:43 mistel zabbix_cleanup: [INFO] ALTER TABLE completed. Table: trends, 17 seconds.
      Jan 15 17:12:14 mistel zabbix_cleanup: [INFO] ALTER TABLE completed. Table: trends_uint, 31 seconds.
      Jan 15 17:13:17 mistel zabbix_cleanup: [INFO] ALTER TABLE completed. Table: history, 63 seconds.
      Jan 15 17:16:38 mistel zabbix_cleanup: [INFO] ALTER TABLE completed. Table: history_uint, 201 seconds.
      
      ll -lh /var/lib/mysql/zabbix/ | grep -P 'M|G'
      合計 220M
      -rw-rw---- 1 mysql mysql  31M  115 17:19 history.ibd
      -rw-rw---- 1 mysql mysql  64M  115 17:19 history_uint.ibd
      -rw-rw---- 1 mysql mysql  20M  115 17:11 trends.ibd
      -rw-rw---- 1 mysql mysql  40M  115 17:12 trends_uint.ibd

fluentd(td-agent)からメトリクスを登録


API

  • Zabbix Serverのバージョンを取得するサンプル fileapiinfoVersion.zip
    wget -O "PhpZabbixApi_Library.tar.bz2" http://zabbixapi.confirm.ch/download.php?file=library
    tar xvfj PhpZabbixApi_Library.tar.bz2
    sudo yum install php php-cli php-pear php-mbstring
    php apiinfoVersion.php

グラフの時刻を変更する

  • [おすすめ] httpdの設定を変更する
    vim /etc/httpd/conf.d/zabbix.conf
    ----
    php_value date.timezone Asia/Tokyo
    ----
    service httpd restart
  • phpの設定を変更する
    vim /etc/php.ini
    ----
    date.timezone = Asia/Tokyo
    ----
    service httpd restart

管理画面のパスワードをリセットする

  • 管理方法がユーザ、パスワード認証の場合
  • Adminユーザのパスワードをリセット
    # 空のパスワードを作成
    echo -n "" | md5sum
    d41d8cd98f00b204e9800998ecf8427e
    
    # DBName, DBUser, DBPassword, DBHost を確認
    sudo less /etc/zabbix/zabbix_server.conf
    
    # mysqlに接続
    mysql -u zabbix -p -h 127.0.0.1 zabbix
    
    # ユーザの確認
    mysql> select alias from users;
    
    # Adminユーザのパスワードを変更
    mysql> update users set passwd = 'd41d8cd98f00b204e9800998ecf8427e' where alias = 'Admin';

memcachedの監視

  • ncを使って uptimeを取得する場合
    echo -e "stats\nquit" | nc 127.0.0.1 11211 | grep 'STAT uptime' | cut -d' ' -f 3
    1393

windows上でpowershellを実行する場合

windowsのコマンドプロンプトで以下のようにpowershellを許可しても、zabbix_getからだとエラーが出る

powershell Set-ExecutionPolicy RemoteSigned
  • 解決方法
    • zabbix_agentd.userparams.confに書く時に"-ExecutionPolicy? ByPass?"を付ける
      UserParameter=example.test,powershell -ExecutionPolicy ByPass C:\zabbix\example.ps1 test

タイムアウト秒数変更

デフォルト3秒なので、実行に時間のかかるアイテムだとタイムアウトする。
server, agentそれぞれに設定がある。ログに出るのでチェック

  • zabbix server:/var/log/zabbix/zabbix_server.log
      5011:20140816:164601.847 Zabbix agent item [hdd.smart.discovery] on host [win.example.com] failed: first network error, wait for 15 seconds
      5014:20140816:164619.180 Zabbix agent item [hdd.smart.discovery] on host [win.example.com] failed: another network error, wait for 15 seconds
  • zabbix agent:/var/log/zabbix/zabbix_agentd.log
  • zabbix server側設定変更
    vim /etc/zabbix/zabbix_server.conf
    ----
    Timeout=10
    ----
    service zabbix-server restart
  • zabbix agent側設定変更
    vim /etc/zabbix/zabbix_agentd.conf
    ----
    Timeout=10
    ----
    service zabbix-agent restart

ユーザグループと権限

  • 権限はユーザグループに割り当てる
  • 1ユーザに複数のユーザグループを割り当て出来るが、read/writeのユーザグループとreadのユーザグループが重複した場合、readが優先される。そのため、read/writeのグループだけをユーザに割り当てる必要がある。

ローレベルディスカバリ LLD(low level discovery)

HDDやNIC等、1台のPCに同じ種類だが複数台搭載してある機器を自動で取得し、監視に追加できる。

  • 手順
  1. テンプレートに新規ディスカバリを作成。例:SMART discovery
    • 機器の変更ペースに会わせて、期間は長め3600秒程度が良いだろう
  2. UserParameter?.confに台数を取得し、JSONフォーマットで出力するスクリプトを追加
    • linuxならawkやperl等のワンライナーで書ける。
    • windowsはPowerShell?が楽。awk, perlはインストールの手間がちょっと面倒かも。
  3. UserParameter?.confに詳細情報を取得するスクリプトを追加
  4. エージェント側で値が取得できるかテスト。
    zabbix_agentd -t 'hdd.smart.discovery'
    zabbix_agentd -t 'hdd.smart[/dev/sda,Power_On_Hours]'
  5. テンプレートにディスカバリ用アイテム、トリガー、グラフ等を作成
    • 名前の最後に「on {#DEVICENAME}」等識別できる情報を追加すると良い
  6. しばらく待って情報が取得できれば成功

異常時にアラート音を出す


javaプロセスの監視

  • EPEL版にはzabbix-java-gatewayは無いので、Zabbix Official Repository を使ってインストールした方が良い。
  • 既にEPEL版を使っている場合は、zabbix公式リポジトリのSPECファイルを書き換えてビルド
  • 1ホスト内で複数javaプロセスをjmxで監視する場合の問題
    • 同じホストに同一キーは使えない(jmx[])
    • テンプレートにポートやインタフェースを定義できない
    • ホストに直接アイテムを追加すればインタフェースを変更できるが、同一キーの制限にひっかかる
    • 複数プロセスのJMX監視について | ZABBIX-JP

log型アイテムのグラフ化

log[]やlogrt[]は直接グラフ化できない。
そのため、ログ型アイテムの値を元に、計算型のアイテムを追加する

  • 元となるログ型のアイテム
    タイプ: Zabbixエージェント(アクティブ)
    キー: log[/var/log/messages,error|warning]
    データ型: ログ
    更新間隔(秒): 60
  • 新しく追加する計算型アイテム(設定間違えているのか値がおかしい。1しか帰ってこない)
    • キーはホスト内でユニークな名前をつける。
    • 条件式ではサポートされているトリガー関数の関数が使える。ログの中身が数値だけであればlast()で計算できる。log[],logrt[]の場合はcount()
    • count("キー名",60) のように"..."で括る。キーに「"」が含まれる場合は、エスケープする「\"」
      タイプ: 計算
      キー: count_log[/var/log/messages,error|warning]
      式: count("log[/var/log/messages,error|warning]",60)
      データ型: 数値(整数)
      更新間隔(秒): 60

zabbix-proxy

  • 4 Zabbix プロキシ [Zabbix]
    • zabbix-serverの負荷軽減。分散監視。zabbix-serverとホストの距離が離れている場合、同じ場所にzabbix-proxyを構築する事で安定する。
    • zabbix-proxyがzabbix-agentのデータを保持しているため、zabbix-severのアップグレード時のデータ欠損を最小にできる。
  • 必要プロトコル/ポート
    • zabbix-server: TCP/10051 zabbix-proxyから送信
    • zabbix-proxy: TCP/10051 zabbix-agentから送信
    • zabbix-agent: TCP/10050 zabbix-proxyのアクティブチェックで使用
  • Zabbix Proxyの設定
  1. /etc/zabbix/zabbix_proxy.conf
    Server=<zabbix server ip>
    Hostname=zabbix30-proxy # zabbix-serverから名前で引けるようにDNSやhostsに設定する必要あり
    ConfigFrequency=300 # zabbix-serverと同期する間隔。デフォルトの1時間は長すぎる
    Timeout=3 # デフォルト3秒
    DBPassword=********
  • Zabbix Proxyホスト上のZabbix Agentの設定
  1. /etc/zabbix/zabbix_proxy.conf
    Server=192.168.1.10 # zabbix-proxyのprivate IP
    ListenIP=192.168.1.10 # zabbix-proxyのprivate IP。0.0.0.0としないのは、ホストの自動登録時にIPアドレスが必要なため。
    ServerActive=192.168.1.10 # zabbix-proxyのprivate IP
  • Zabbix Server側の設定
  1. 管理 > 分散管理 > プロキシの作成
    • プロキシ名: (/etc/zabbix/zabbix_proxy.confのHostnameの値) IPではうまくいかなかった。Zabbix Proxyとこの名前で疎通できる必要がある。
    • プロキシモード: アクティブ
  • ログ
    • /var/log/zabbix/zabbix_proxy.log

リモートコマンドでSupport for SSH scripts was not compiled on

コンパイル時に以下のオプションが必要

--with-libssh2

アラートメールの破棄

  • ZabbixはDBにアラートメールの送信ステータスを持っているため、postfixを止めても送信される。DBを直接更新する必要があるようだ
  1. zabbix serverが使用してるメールサーバを停止する
    service postfix stop
  2. zabbix DBのアラート送信ステータスを"送信済み"に変更する。また、alertsテーブルに登録する処理は時間がかかるケースもあるため、しばらく放置して処理が終わるのを待った方が良い。
    echo "update alerts set status=1 where status=0;" | mysql -u zabbix -p zabbix
  3. メールサーバ再開
    service postfix start

Zabbix SererのMySQLパスワードの変更

以下手順で復帰後もアラートメールは送信されることは無かった

  1. zabbixサーバを対象にメンテナンス期間を作成
  2. 各サービス停止
    service httpd stop
    service zabbix-server stop
    service postfix stop
  3. MySQLパスワード変更
    mkpasswd -l 16 > .mysql-root
    mkpasswd -l 16 > .mysql-zabbix
    mysqladmin -u root -p password $(cat ~/.mysql-root)
    echo "SET PASSWORD FOR 'zabbix'@'localhost' = PASSWORD('$(cat ~/.mysql-zabbix)');" | mysql -u root -p$(cat ~/.mysql-root) mysql
  4. zabbix設定変更
    vim /etc/zabbix/zabbix_server.conf
    ----
    DBPassword=****
    ----
    
    vim /etc/zabbix/web/zabbix.conf.php
    ----
    $DB['PASSWORD'] = '****'; 
    ----
  5. 各サービス再開
    service zabbix-server start
    service httpd start
    service postfix start

グラフ


Zabbix2.0のデフォルトテンプレートには無いMemoryグラフを追加

  1. 設定 > テンプレート > Template OS Linux > グラフ
  2. 右上からグラフの作成
    • 名前: Memory
    • 幅: 600
    • 高さ: 340
    • グラフのタイプ: ノーマル
    • 凡例を表示: チェック
    • トリガーを表示: チェック
    • Y軸の最大: Total memory
    • アイテム
      • Template OS Linux: Total memory, 平均, グラフ形式:面, 左, C80000
      • Template OS Linux: Available memory, 平均, グラフ形式:面, 左, 00C800

nginxのモニタリング


パフォーマンスチューニング

  • 管理 > キュー 右上の選択で:概要 で遅いキューが無いか確認
  • キューに貯まっている場合
    vim /etc/zabbix/zabbix_server.conf
    ----
    # default:5 むやみに増やすと逆に遅くなるため注意。マニュアルには30以上にすべきではないとある
    StartPollers=10
    ----

SNMPで監視

  • Zabbix 2.0.x のテンプレートは複数あるが、以下だけ使えば良い。他はリンクされている
    • Template SNMP OS Linux : Linuxだと分かる場合
    • Template SNMP OS Windows : Windowsだとわかる場合
    • Template SNMP Device : その他SNMP搭載ハードウェア
  • SNMPデフォルトコミュニティ名: public
    • 管理 > 一般設定 > 右上の選択ボックスからマクロ > {$SNMP_COMMUNITY} : public
  • コミュニティ名を指定する
  1. 設定 > ホスト > 対象ホストを選択
  2. マクロタブを選択
    • {$SNMP_COMMUNITY} : public
  3. 保存
  • ルーターのIPアドレスを 192.168.1.1 とする場合
    sudo yum -y install net-snmp net-snmp-utils
    snmpwalk -v 1 -c public 192.168.1.1 > v1.txt
    snmpwalk -v 2c -c public 192.168.1.1 > v2.txt
    snmpwalk -v 3 -c public 192.168.1.1 > v3.txt

TCP/UDP

  • TCPコネクション TCP-MIB
    snmptranslate -Tp RFC1213-MIB::tcp
    
    snmpwalk -v 1 -c public 192.168.1.1 RFC1213-MIB::tcp
    • TCPコネクション数
      RFC1213-MIB::tcpActiveOpens.0
      RFC1213-MIB::tcpPassiveOpens.0
      RFC1213-MIB::tcpAttemptFails.0
      RFC1213-MIB::tcpEstabResets.0
      RFC1213-MIB::tcpCurrEstab.0
  • UDPコネクション UDP-MIB
    snmptranslate -Tp RFC1213-MIB::udp
    
    snmpwalk -v 1 -c public 192.168.1.1 RFC1213-MIB::udp

Windows

  • Windows Server 2008, Windows7
    • SNMP
    • Win7 Pro 64bitでSNMP監視を入れると各アプリケーションが数十秒応答なしになる場合があった(うちの場合だけかもしれないが)
  • Windows Server 2003 R2
    • [HOWTO] Windows Server 2003 で簡易ネットワーク管理プロトコル (SNMP) サービスを構成する方法
    • コントロール パネル > 管理ツール > コンピュータの管理
    • サービスとアプリケーション > サービス
    • 右ウィンドウのSNMP Service
      • 全般タブ: スタートアップの種類:自動、サービスの状態が開始になっていない場合は開始
      • トラップタブ: コミュニティ名: public > 一覧に追加
      • セキュリティタブ: checked: 認証トラップを送信する、受け付けるコミュニティ名: public, 読み取りのみ
      • セキュリティタブ: これらのホストからSNMPパケットを受け付ける: 192.168.1.100

Cisco


NETGEAR

  • NETGEAR RN10200 ReadyNAS OS 6.4.2: private MIBを表示。NAS本体のIPを192.168.1.10とする
    wget --no-check-certificate https://192.168.1.10/READYNASOS-MIB.txt
    sudo mv READYNASOS-MIB.txt /usr/share/snmp/mibs/
    
    snmpwalk -v 2c -c public 192.168.1.10 READYNASOS-MIB::netgear
  • NETGEAR ReadyNAS 1xxx: private MIBを表示
    wget http://www.readynas.com/download/SNMP/READYNAS-MIB.txt
    sudo mv READYNAS-MIB.txt /usr/share/snmp/mibs/
    
    snmpwalk -v 2c -c public 192.168.1.10 READYNAS-MIB::netgear
  • NETGEAR ReadyNAS 1xxx 例: 本体: 192.168.1.10, SNMPホスト: 192.168.1.100
    • https://192.168.1.10/admin/ > システム > 警告 > SNMPタブ
    • cheked: SNMPサービスを有効にする
    • コミュニティ: public
    • アクセスを許可するホスト: 192.168.1.100
    • 温度がMIBではINTEGERで定義されているが、実際はSTRING(10℃/)で返ってくるためそのままではzabbixには取り込めない
      snmpwalk -v 2c -c public 192.168.1.10 READYNAS-MIB::netgear
      ...
      READYNAS-MIB::temperatureValue.1 = Wrong Type (should be INTEGER): STRING: "51.0C/123.8F"

BUFFALO

  • 記事
  • BS-xxxxx 法人向けスイッチ 例: 本体: 192.168.1.10, SNMPホスト: 192.168.1.100
    • http://192.168.1.10/ > 基本設定 > SNMP設定
    • SNMPコミュニティテーブル: Public, GET, SET, TRAP
    • SNMPホストテーブル:
      • ホスト認証: 有効
      • earth, 192.168.1.100, public
    • SNMPトラップイベント: Community認証: 有効

YAMAHA

  • RTX1x00(ルーター) 例: 本体: 192.168.1.1, SNMPホスト: 192.168.1.100
    • http://192.168.1.1/admin/ > 運用サポート機能 > 保守 > コマンドの入力
      snmp host 192.168.1.100 public
      snmpv2c host 192.168.1.100 public
      snmp yrifppdisplayatmib2 on
  • private MIBを表示
    wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
    tar xvfz yamaha-private-mib.tar.gz
    sudo mv yamaha-*.txt /usr/share/snmp/mibs/
    
    snmpwalk -v 2c -c public 192.168.1.1 YAMAHA-SMI::yamahaRT

SNMPツール

  • CentOS6.x
    • インストール
      yum install net-snmp net-snmp-utils
    • MIBファイル: /usr/share/snmp/mibs/
  • OID to Name
    snmptranslate .1.3.6.1.2.1.1.5.0
    
    SNMPv2-MIB::sysName.0
  • Name to OID
    snmptranslate -On SNMPv2-MIB::sysName.0
    
    .1.3.6.1.2.1.1.5.0
  • MIBツリーの表示。[OID|Name]を省略すると全体を表示
    snmptranslate -Tp [OID|Name]
    
    snmptranslate -Tp SNMPv2-MIB::system
    +--system(1)
       |
       +-- -R-- String    sysDescr(1)
       |        Textual Convention: DisplayString
       |        Size: 0..255
    ...
  • 各ベンダのprivate MIBファイルを指定
    • 個別指定オプション '-m'
      mkdir ~/.snmp
      echo -e "mibdirs /usr/share/snmp/mibs\nmibs all" > ~/.snmp/snmp.conf
      
      # 例yamahaルーターのprivate MIB
      wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
      tar xvfz yamaha-private-mib.tar.gz
      sudo mv yamaha-*.txt /usr/share/snmp/mibs/
      
      # OID to Name
      snmptranslate .1.3.6.1.4.1.1182.2.1.6.0
      YAMAHA-RT-HARDWARE::yrhCpuUtil1min.0
      
      # private MIBツリー
      snmptranslate -Tp YAMAHA-SMI::yamahaRT
      +--yamahaRT(2)
         |
         +--yamahaRTHardware(1)
         |  |
         |  +--yamahaRTHardware#(0)
         |  |  |
         |  |  +--yrhMemoryUtilTrap(1)
         |  |  |
         |  |  +--yrhCpuUtilTrap(2)
         |  |  |
         |  |  +--yrhSystemAlarmTrap(3)
         |  |
         |  +-- -R-- EnumVal   yrhCpuType(1)
         |  |        Values: i386(1), i486(2), pentium(3), sh3(4), msp2000(5), ixp1200(6), ad6846(7), msp2100(8), powerQuick3(9), ixp422(10), cn5010(12), c1000(13), qorIQP2(14)
      ...
      
      # 特定の値だけ取得 例: yrhCpuType
      snmpwalk -v 2c -c public 192.168.1.1 YAMAHA-SMI::yamahaRT.yamahaRTHardware.yrhCpuType                                                                  
      YAMAHA-RT-HARDWARE::yrhCpuType.0 = INTEGER: cn5010(12)

HTTP,HTTPSのWebモニタリング

Zabbix標準機能として用意されているので簡単。トップページから認証画面を通じるシナリオも作れる。

  • アイテムとして取得可能なもの
    • 応答時間
    • ダウンロード速度(1秒あたり)
    • 応答コード
    • 失敗したステップ(0:正常)
  • zabbixにログインできるかチェック
  1. 設定 > ウェブ : グループとホストを選択 > シナリオの作成
    • アプリケーション: zabbix server
    • 名前: Zabbix GUI
    • 認証: なし
    • 更新間隔: 300
    • エージェント: 適当
    • 変数:
      {user}=user
      {password}=password
  2. ステップタブ > 追加
  3. ステップタブ > 追加 Zabbix3.0ではURL変わったため不要
  4. アイテムを追加すると、モニタリング > 最新データで値が見える
  5. トリガーを作成する場合
    • 名前: zabbix login failed on {HOST.NAME}
    • 条件: 連続3回以上あったらアラート発生(ステップの成功:0)
      {localhost:web.test.fail[localhost zabbix GUI].count(#3,0,gt)}>2
    • 深刻度: 適切に
  • ログインページにハッシュ等の文字列が入っており、1回でログインできない場合、2ステップに分ける。
  1. ログインページ取得
  2. ユーザID、パスワードを入力

Zabbix2.0で「zabbixサーバが動作していません」

ダッシュボードで「zabbixサーバが動作していません」が出続け、「Zabbixサーバーの起動: いいえ」の場合。

  • zabbix-serverが起動していない場合、起動する
    service zabbix-server restart
    service zabbix-server status
  • 明示的にzabbix serverのIPを指定する
    sudo vim /etc/zabbix/web/zabbix.conf.php
    ----
    $ZBX_SERVER      = '192.168.1.5';
    ----
    sudo service httpd restart
  • SELinuxを無効
    # 確認 DisabledならOK
    getenforce
    Disabled
    
    # 無効にする
    vim /etc/sysconfig/selinux
    ----
    SELINUX=disabled
    ----
    reboot

認証方法を変えてログインできなくなった時、元に戻す

  • zabbix 2.0.6
  • 管理 > 認証 > Internalに戻す場合。(internal:0, LDAP:1)
    echo "update config set authentication_type=0;" | mysql -u zabbix -p zabbix

ログ中に指定文字列を含む監視設定

  • zabbix 2.0.6
  • 監視したいログファイルに zabbix ユーザで読み取り可能な権限がある事
  • ステータスが変化する時にメールが送信される。nodata()=0 条件を加え、指定時間経過後にステータスを変化させる
    • 正規表現(例:error|warning)とした場合、nodata(10m)=0としても、"error","warning"が記録された時点でnodata()の条件に一致するため、10分待たずにトリガーが正常に戻る
  • 例: /var/log/messages を1分間隔で監視。"error","warning" が発生したらトリガーとする。その後10分間データがなければ解除
    • zabbix agent側
      sudo gpasswd -a zabbix wheel
      sudo chown :wheel /var/log/messages
      sudo chmod 640 /var/log/messages
      sudo service zabbix-agent restart
    • zabbix server アイテム設定
      タイプ: Zabbixエージェント(アクティブ)
      キー: log[/var/log/messages,error|warning]
      データ型: ログ
      更新間隔(秒): 60
    • zabbix server トリガー設定
      条件式: ({host1:log[/var/log/messages,error|warning].iregexp(error|warning)}=1)
      &({host1:log[/var/log/messages,error|warning].nodata(600)}=0)
      障害イベントを継続して生成: 未チェック
      深刻度: 警告 (適切に)
    • テスト
      logger error
      logger warning
  • 指定文字列を除外する場合。例:"test","debug"が入ってる場合は除外する
    条件式: ({host1:log[/var/log/messages,error|warning].iregexp(error|warning)}=1)
    &({host1:log[/var/log/messages,error|warning].iregexp(test|debug)}=0)
    &({host1:log[/var/log/messages,error|warning].nodata(600)}=0)
  • 発生回数を考慮する場合: 1時間に5回以上errorが出た時
    条件式: ({host1:log[/var/log/messages,error|warning].count(1h,"error","like")}>4)
    &({host1:log[/var/log/messages,error].nodata(600)}=0)

discoveryグラフが表示されない場合

1.8から2.0へアップグレードした場合、discoveryグラフが表示されないので調べた。

  • 管理 > 一般設定 > 正規表現 に以下が設定されているか? 1.8 から2.0へのアップグレードだと手動設定の必要があった
    • 名前 File systems for discovery
    • 名前 Network interfaces for discovery
    • 名前 Storage devices for SNMP discovery
  • ホストのテンプレートチェック
    • Template OS Linuxがリンクされ、ディスカバリに"Mounted filesystem discovery"が設定されており、有効になっているか?無効ならクリックして有効に変える
  • zabbix server上で値が取得できているかチェック
    zabbix_get -s localhost -k vfs.fs.discovery
    
    {
            "data":[
                    {
                            "{#FSNAME}":"\/",
                            "{#FSTYPE}":"rootfs"},
    ...
  • zabbix サーバログにエラーが出ていないかチェック
    • /var/log/zabbix/zabbix_server.log

日本語環境でグラフの文字化けを修正

zabbix 2.0.6 で プロファイルから言語を日本語(ja_JP)にしているとグラフの文字化けが起きるので修正。

zabbix-2.x-mojibake-befor.jpg

  • 環境
    • CentOS 5.8 x86_64 / CentOS 6.3 x86_64
    • PHP 5.4.17 / php 5.3.3
    • Zabbix 2.0.6 (yumでインストール)
  • 日本語フォントの検索
    yum search ipafont
    ipa-gothic-fonts.noarch : Japanese Gothic-typeface OpenType font by IPA
    ipa-mincho-fonts.noarch : Japanese Mincho-typeface OpenType font by IPA
    ipa-pgothic-fonts.noarch : Japanese Proportional Gothic-typeface OpenType font by IPA
    ipa-pmincho-fonts.noarch : Japanese Proportional Mincho-typeface OpenType font by IPA
  • IPAフォント
    yum -y install ipa-pgothic-fonts.noarch
    
    ls -lh /usr/share/fonts/ipa-pgothic/
    total 6.0M
    -rw-r--r-- 1 root root 6.0M Nov 11  2009 ipagp.ttf
  • CentOS 6.xの場合、defines.inc.php中のZBX_FONTPATHを変更するとグラフ横軸の時刻が表示されなくなるため、シンボリックリンクで対応
    ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf /usr/share/fonts/dejavu/ipagp.ttf

zabbix2.0-centos6.3-graph-bug.jpg

  • zabbix側の設定変更
    vim /usr/share/zabbix/include/defines.inc.php
    ----
    // CentOS6.x
    define('ZBX_FONTPATH',                  '/usr/share/fonts/dejavu');
    define('ZBX_GRAPH_FONT_NAME',           'ipagp'); // default: DejaVuSans
    
    // CentOS5.x
    define('ZBX_FONTPATH',                  '/usr/share/fonts/ipa-pgothic'); // default: /usr/share/fonts/dejavu
    define('ZBX_GRAPH_FONT_NAME',           'ipagp'); // default: DejaVuSans
    ----
  • グラフの再描画で修正を確認できます

zabbix-2.x-mojibake-after.jpg


userparameter:ユーザパラメータで任意の項目を監視

zabbix agent側の設定ファイルに追加する事で、任意のコマンドを実行して値を取得できる。

  • ファイルの存在を初めにチェックした方が良い。ファイルが存在しない場合はアイテムが「取得不可」になり、DBの使用量やモニタリング対象のアイテムが減る。特に監視間隔が短いアイテムだと影響が大きい
    # log.count[<file path>,<last lines>,<include>]
    UserParameter=log.count[*],[ -f "$1" ] && tail -n "$2" "$1" | grep "$3" -c
  • 一度取得不可になったアイテムも、zabbix_serverが数分後にポーリングするようで、その時に取得可能になれば復活する。よって失敗の場合は空白("")、成功の場合は値を返せば良さそうだ。
  • デフォルトではzabbix ユーザで実行されるため、permissionがあるものに限られる。もしくはzabbixユーザをグループに追加したり、sudoを使えるように設定する
  • agent自体をrootユーザで実行したい場合
    vim /etc/zabbix/zabbix_agentd.conf
    ----
    AllowRoot=1
    ----
  • コマンド1行で指定出来るものは単体で実行可能
    vim /etc/zabbix/zabbix_agentd.d/userparameter_example_monitor.conf
    ----
    UserParameter=key,command
    ----
    
    # テスト
    sudo -u zabbix zabbix_agentd -t "key"
  • パラメータ"*"を指定できる。それぞれ$1, $2として取得可能
    UserParameter=wc[*],cat $1 | wc -l
    
    # テスト
    sudo -u zabbix zabbix_agentd -t "wc[/tmp/test]"
  • 複数行になるような複雑なコマンドは別スクリプトに書いて、指定
  • awk等コマンド内で'$'を使う場合は、エスケープ('$$' または '$ 1')が必要。ただし、パラメータを受け取る必要が無い(UserParameter?=command)場合は不要
    UserParameter=sum[*],cat $1 | awk '{sum+=$$1} END {print sum}'
    
    # テスト
    sudo -u zabbix zabbix_agentd -t "sum[/tmp/test]"
  • awk等コマンド内で任意のパラメータ番号を指定する場合は '$$$1' のように書く
    echo "100 200 300" > /tmp/test
    
    UserParameter=test[*],cat /tmp/test | awk '{print $$$1}'
    
    # テスト
    sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t 'test[2]'
    ...
    [t|200]

NTPのoffset/delay等を取得

  • 時刻のずれを検出するのに fuzzytime()関数もあり、Template OS Linux にトリガーを追加するだけで利用できる。
    • 名前: Local time is not in sync on {HOST.NAME}
    • 条件式: {Template OS Linux:system.localtime.fuzzytime(300)}=0
    • 深刻度: 重度の障害
  • ntpqを使う
  • 同期済みサーバ(*)マークのついたntp行から取得する
  • /etc/zabbix/zabbix_agentd.d/userparameter_example.conf
    # NTP: ntp[<host>,<column number>]
    UserParameter=ntp[*],ntpq -pn $1 | grep -P '^\*' | awk '{print $$$2}'
  • 実行例
    ntpq -pn 127.0.0.1
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *133.243.238.164 .NICT.           1 u  178 1024  377    4.835   29.296   6.560
    +210.173.160.57  172.29.1.50      2 u  191 1024  377    2.600   28.339   6.392
     133.243.237.36  .INIT.          16 u    - 1024    0    0.000    0.000   0.000
    
    # delay取得
    zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t 'ntp[127.0.0.1,8]'
    ntp[ntpq -pn 127.0.0.1 | grep -P '^\*' | awk '{print $8}'] [t|4.835]
    
    # offset取得
    zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t 'ntp[127.0.0.1,9]'
    ntp[ntpq -pn 127.0.0.1 | grep -P '^\*' | awk '{print $9}'] [t|29.296]

HDDのS.M.A.R.T.情報を取得


  • Linuxの場合
  • smartctlを監視対象のHDDのホストにインストール
    • CentOS
      sudo yum install smartmontools
      
      sudo /usr/sbin/smartctl -A /dev/sda
    • Ubuntu
      sudo aptitude install smartmontools
      
      sudo /usr/sbin/smartctl -A /dev/sda
  • smartctlはroot権限が必要なコマンドなので、zabbixユーザから実行できるように設定
    sudo /usr/sbin/visudo
    ----
    Defaults !requiretty
    ----
    
    zabbix ALL=(ALL) NOPASSWD: /usr/sbin/smartctl
  • /etc/zabbix/zabbix_agentd.d/userparameter_app_smart.conf
    # SMART HDD Monitoring discovery. Parameter: hdd.smart.discovery
    UserParameter=hdd.smart.discovery,sudo smartctl --scan | awk 'BEGIN {f=1;print "{\"data\":["} {if(!f){print ","};f=0;gsub(/\//,"\\/",$1);print "{ \"{#DEVICENAME}\":\""$1"\",\"{#DEVICETYPE}\":\""$3"\" }"} END {print "]}"}'
    
    # SMART HDD Monitoring. Parameter: hdd.smart[<device name>,<smartctl attribute name>]
    UserParameter=hdd.smart[*],sudo smartctl -A $1 | awk '{if($$2 == "$2") print $$10;}'

  • Windowsの場合
  1. S.M.A.R.T. Monitoring Tools から smartmontools-6.2-1.win32-setup.exe をダウンロードしてインストール
  2. 試しに手動で実行して、情報を取得できるかテスト
    "C:\Program Files\smartmontools\bin\smartctl" --scan
    /dev/sda -d ata # /dev/sda, ATA device
    /dev/sdb -d ata # /dev/sdb, ATA device
    
    "C:\Program Files\smartmontools\bin\smartctl.exe" -A /dev/sda
  3. PowerShell?が実行できるようにコマンドプロンプト(cmd.exe)から許可する
    powershell Set-ExecutionPolicy RemoteSigned
  4. C:\zabbix\smart-win.ps1 を配置
  5. 取得(特に--scan)に時間がかかるのでzabbix agentdのタイムアウトを延長
    • C:\zabbix\zabbix_agentd.conf
      Timeout=10
      Include=c:\zabbix\zabbix_agentd.userparams.conf
    • C:\zabbix\zabbix_agentd.userparams.conf
      # SMART HDD Monitoring discovery. Parameter: hdd.smart.discovery
      UserParameter=hdd.smart.discovery,powershell -ExecutionPolicy ByPass C:\zabbix\smart-win.ps1 discovery
      
      # SMART HDD Monitoring. Parameter: hdd.smart[<device name>,<smartctl attribute name>]
      UserParameter=hdd.smart[*],powershell -ExecutionPolicy ByPass C:\zabbix\smart-win.ps1 get $1 $2
  6. zabbix agentd再起動
    zabbix_agentd.exe --config C:\zabbix\zabbix_agentd.conf --stop
    zabbix_agentd.exe --config C:\zabbix\zabbix_agentd.conf --start

プロセスの経過時間を取得

  • 同じ条件に複数プロセスがある場合、初めの1つめの値を取得する。よって、一つに絞り込むように条件を指定する
  • プロセス名は15文字までを指定する。
  • プロセス名、ユーザ名だけで絞りきれない場合、<cmdline>にコマンド実行時の引数等を指定して絞り込む
  • /etc/zabbix/zabbix_agentd.d/userparameter_e .mysql-zabbix mysqladmin -u root -p password $(cat ~/.mysql-root) echo xample.conf
    # elapsed time by process. Parameter: process.etime[<process name>,<user>,<cmdline>]
    UserParameter=process.etime[*],ps -eo comm,user:32,etime,args h | grep -P "^$1\s+$2" | grep -P "$3" | head -n 1 | perl -ane '@t=reverse split(/[:-]/,$F[2]); $s=$t[0]+$t[1]*60+$t[2]*3600+$t[3]*86400; print $s;'
  • 例: hogeユーザでcronで動作する「example.sh param1 param2」の実行時間を取得
  • zabbixアイテム
    • 名前: Elapsed time by process
    • タイプ: Zabbixエージェント
    • キー: process.etime[example.sh,hoge,param1]
    • データ形式: 10進数
    • 単位: s

nginxのアクセスログから指定HTTP Status Codeの件数

  • /etc/zabbix/zabbix_agentd.d/userparameter_example.conf
    # nginx.log.status.count[<file path>,<last lines>,<http status code>,<include>,<exclude>]
    UserParameter=nginx.log.status.count[*],[ -f "$1" ] && tail -n "$2" "$1" | grep -v "$5" | grep "$4" | grep "$(LANG=C date '+%d/%b/%Y:%H:%M' -d '1 min ago')" | awk -F' ' '{print $$9}' | grep -P "$3\d+" | wc -l
  • Zabbix Item: 更新間隔(秒): 60
    • 1分間の総件数: nginx.log.status.count[/var/log/nginx/access.log,10000,,,DUMMY]
    • 1分間のHTTP Status 5XX、/index.htmlを含む、testを除外した件数: nginx.log.status.count[/var/log/nginx/access.log,10000,5,/index.html,test]

プロセス毎のRSS(物理メモリ使用量)

# Real memory(KB) by process. Parameter: process.rss[<process name>,<user>]
UserParameter=process.rss[*],ps -eo comm,user,rss h | grep -P "$1\s+$2\s+" | awk 'BEGIN {sum=0} {sum+=$$3} END {print sum}'

# テスト
sudo -u zabbix zabbix_agentd -t "process.rss[httpd,apache]"

プロセス毎の%CPU

  • topを使う。topで長いユーザ名だと省略されるのでtop -uオプションで指定している。
    # %CPU by process. Parameter: process.pcpu[<process name>,<user>]
    UserParameter=process.pcpu[*],top -b -d1 -n1 -u "$2" 2>/dev/null | perl -ne 'BEGIN { $sum=0; } if($. > 7) { $_ =~ s/^\s+//g; @l=split(/\s+/, $_); if($l[11] =~ m#$1#){ $sum+=$l[8]; } } END { print $sum; }'
    
    # テスト
    sudo -u zabbix zabbix_agentd -t "process.pcpu[httpd,apache]"
  • psを使う。※デュアルコア以上だと値が異常
    # %CPU by process. Parameter: process.pcpu[<process name>,<user>]
    UserParameter=process.pcpu[*],ps -eo comm,user,pcpu h | grep -P "$1\s+$2" | awk '{sum+=$$3} END {print sum}'

パスワードの初期化

  • User: Admin , Password: なし に初期化
    echo "update users set passwd = 'd41d8cd98f00b204e9800998ecf8427e' where alias = 'Admin';" | mysql -u root zabbix

LDAP認証

sudo yum install php-ldap openldap-clients
  • Zabbix 2.0 > 管理 > 認証
    • デフォルトの認証: LDAP
    • LDAPホスト: ldaps://ldap.example.com:636
    • ポート: 0
    • Base DN: ou=users,dc=example,dc=com
    • 検索の属性: uid
    • Bind DN: cn=connector,ou=administration,dc=example,dc=com
    • Bind Password: ****
  • LDAP認証に失敗する場合のチェックポイント
    • ldapコマンドで接続できるか確認
      ldapsearch -x -b 'dc=my-domain,dc=com' '(uid=hoge)' \
        -H ldaps://localhost:636 \
        -D "cn=Manager,dc=my-domain,dc=com" \
        -W
    • phpでldap, ldapsをサポートしているか確認
      php -i | grep -i ldap
    • Zabbix 2.0.13で「ldap_bind(): Unable to bind to server: Can't contact LDAP server...」
      • 標準ポートではない時は、ホスト側にポートを指定(ldaps://ldap.example.com:636)し、ポート(0)にすると接続できた。

日本語入力の文字化けの解消

障害対応のコメント等で日本語を入力すると"?"に化けてしまう場合、インストール時にDBの文字コードの設定が"latin1"になっているので"utf8"に変更する

  • MySQL 5.1のデフォルト文字コードを変更
    vim /etc/my.cnf
    ----
    [mysqld]
    skip-character-set-client-handshake
    character-set-server=utf8
    # init-connect="SET NAMES utf8"
    default-table-type=InnoDB
    
    [mysql]
    default-character-set=utf8
    
    [client]
    default-character-set=utf8
    
    [mysqldump]
    default-character-set=utf8
    ----
    service mysqld restart
  • zabbix mysqlの文字コードをutf8に変更
    cat > zabbix-modify-mysql-charset-utf8.sql << EOS
    alter database zabbix default character set utf8;
    alter table zabbix.acknowledges charset=utf8;
    alter table zabbix.actions charset=utf8;
    alter table zabbix.alerts charset=utf8;
    alter table zabbix.applications charset=utf8;
    alter table zabbix.auditlog charset=utf8;
    alter table zabbix.auditlog_details charset=utf8;
    alter table zabbix.autoreg_host charset=utf8;
    alter table zabbix.conditions charset=utf8;
    alter table zabbix.config charset=utf8;
    alter table zabbix.dchecks charset=utf8;
    alter table zabbix.dhosts charset=utf8;
    alter table zabbix.drules charset=utf8;
    alter table zabbix.dservices charset=utf8;
    alter table zabbix.escalations charset=utf8;
    alter table zabbix.events charset=utf8;
    alter table zabbix.expressions charset=utf8;
    alter table zabbix.functions charset=utf8;
    alter table zabbix.globalmacro charset=utf8;
    alter table zabbix.graph_theme charset=utf8;
    alter table zabbix.graphs charset=utf8;
    alter table zabbix.graphs_items charset=utf8;
    alter table zabbix.groups charset=utf8;
    alter table zabbix.help_items charset=utf8;
    alter table zabbix.history charset=utf8;
    alter table zabbix.history_log charset=utf8;
    alter table zabbix.history_str charset=utf8;
    alter table zabbix.history_str_sync charset=utf8;
    alter table zabbix.history_sync charset=utf8;
    alter table zabbix.history_text charset=utf8;
    alter table zabbix.history_uint charset=utf8;
    alter table zabbix.history_uint_sync charset=utf8;
    alter table zabbix.hostmacro charset=utf8;
    alter table zabbix.hosts charset=utf8;
    alter table zabbix.hosts_groups charset=utf8;
    alter table zabbix.hosts_profiles charset=utf8;
    alter table zabbix.hosts_profiles_ext charset=utf8;
    alter table zabbix.hosts_templates charset=utf8;
    alter table zabbix.housekeeper charset=utf8;
    alter table zabbix.httpstep charset=utf8;
    alter table zabbix.httpstepitem charset=utf8;
    alter table zabbix.httptest charset=utf8;
    alter table zabbix.httptestitem charset=utf8;
    alter table zabbix.ids charset=utf8;
    alter table zabbix.images charset=utf8;
    alter table zabbix.items charset=utf8;
    alter table zabbix.items_applications charset=utf8;
    alter table zabbix.maintenances charset=utf8;
    alter table zabbix.maintenances_groups charset=utf8;
    alter table zabbix.maintenances_hosts charset=utf8;
    alter table zabbix.maintenances_windows charset=utf8;
    alter table zabbix.mappings charset=utf8;
    alter table zabbix.media charset=utf8;
    alter table zabbix.media_type charset=utf8;
    alter table zabbix.node_cksum charset=utf8;
    alter table zabbix.nodes charset=utf8;
    alter table zabbix.opconditions charset=utf8;
    alter table zabbix.operations charset=utf8;
    alter table zabbix.opmediatypes charset=utf8;
    alter table zabbix.profiles charset=utf8;
    alter table zabbix.proxy_autoreg_host charset=utf8;
    alter table zabbix.proxy_dhistory charset=utf8;
    alter table zabbix.proxy_history charset=utf8;
    alter table zabbix.regexps charset=utf8;
    alter table zabbix.rights charset=utf8;
    alter table zabbix.screens charset=utf8;
    alter table zabbix.screens_items charset=utf8;
    alter table zabbix.scripts charset=utf8;
    alter table zabbix.service_alarms charset=utf8;
    alter table zabbix.services charset=utf8;
    alter table zabbix.services_links charset=utf8;
    alter table zabbix.services_times charset=utf8;
    alter table zabbix.sessions charset=utf8;
    alter table zabbix.slides charset=utf8;
    alter table zabbix.slideshows charset=utf8;
    alter table zabbix.sysmaps charset=utf8;
    alter table zabbix.sysmaps_elements charset=utf8;
    alter table zabbix.sysmaps_link_triggers charset=utf8;
    alter table zabbix.sysmaps_links charset=utf8;
    alter table zabbix.timeperiods charset=utf8;
    alter table zabbix.trends charset=utf8;
    alter table zabbix.trends_uint charset=utf8;
    alter table zabbix.trigger_depends charset=utf8;
    alter table zabbix.triggers charset=utf8;
    alter table zabbix.user_history charset=utf8;
    alter table zabbix.users charset=utf8;
    alter table zabbix.users_groups charset=utf8;
    alter table zabbix.usrgrp charset=utf8;
    alter table zabbix.valuemaps charset=utf8;
    EOS
    cat zabbix-modify-mysql-charset-utf8.sql | mysql -u root zabbix
    
    # 確認
    echo "show variables like 'character_set_%';" | mysql -u root zabbix
    Variable_name   Value
    character_set_client    utf8
    character_set_connection        utf8
    character_set_database  utf8
    character_set_filesystem        binary
    character_set_results   utf8
    character_set_server    utf8
    character_set_system    utf8
    
    echo "show create table zabbix.valuemaps;" | mysql -u root zabbix
    Table   Create Table
    valuemaps       CREATE TABLE `valuemaps` (\n  `valuemapid` bigint(20) unsigned NOT NULL DEFAULT '0',\n  `name` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '',\n  PRIMARY KEY (`valuemapid`),\n  KEY `valuemaps_1` (`name`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8

マクロ

使える箇所と使えない箇所がある。またバージョンによっても異なる

  • マクロ使える
    • Zabbix Agent
  • マクロ使えない
    • Zabbix Trapper

アイテム

監視対象を設定する

  • 例:java tomcatプロセスのメモリ使用量(VSZ:仮想メモリ)。javaはプロセス名が同じで、ユーザやパラメータが異なるのでそれを指定する。
    proc.mem[java,user1]
  • 例:httpdプロセスのメモリ使用量(VSZ:仮想メモリ), RSS:物理メモリ はv1.8のアイテムでは取れないようだ
    proc.mem[httpd]
  • 例:httpdプロセスの数
    proc.num[httpd]
  • 例:rubyで動いているtd-agent(fluentd), puppet
    zabbix_agentd -t 'proc.num[ruby,,,td-agent]'
    proc.num[ruby,,,td-agent]                     [u|2]
    
    # td-agentが停止している場合に0を返して欲しい時、以下はNOT_SUPPORTEDになり値が取れない。
    zabbix_agentd -t 'proc.num[ruby,td-agent]'

テンプレートを変更した場合

  • キーがテンプレート変更前と同じなら、テンプレートを変更しても、データは引き継がれる。同一ホストに同じキーが存在するとエラーになる。
    • 例:"Template test1"をホストから削除、"Template test2"を追加した場合、データは引き継がれる
    • Template test1
      • Key: system.uptime
    • Template test2
      • Key: system.uptime

ゾンビ/スリーププロセスの数

  • zombie
    Name: Number of zombie processes
    Key: proc.num[,,zomb]
    Update interval: 60
    Keep history: 7
    Keep trends: 365
    Description: Number of processes in zombie state.
  • sleep
    Name: Number of sleep processes
    Key: proc.num[,,sleep]
    Update interval: 60
    Keep history: 7
    Keep trends: 365
    Description: Number of processes in sleep state.

DenyHosts?の件数を監視

  • DenyHosts はssh等で指定した回数ログインに失敗したIPを /etc/hosts.deny に記録する。これを監視に入れたい。
  • Zabbix Agent
    vim /etc/zabbix/zabbix_agentd.conf
    ----
    EnableRemoteCommands=1
    ----
    service zabbix-agent restart
  • Zabbix Item
    名前: Number of DenyHosts
    キー: system.run["grep -c DenyHosts /etc/hosts.deny"]
    更新間隔: 3600

vm.memory.size

  • 記事
    • Page not found | Zabbix Weblog vm.memory.size[shared] はkernel 2.6では常に0が返ってくるため廃止。値が取れる kernel2.4 で限定的にサポート

ログ監視


ホストの登録でDNS名が64文字までしか使えない

AWS RDSのDNSを入力しようとして発覚

  • Zabbix 1.8.13, 2.0.13, 3.0.6 で確認
    • Configuration > Hosts > Crete Host > DNS nameに64文字しか登録できない。それ以上入力しても、後ろの文字が切断される
    • 対処:DNSで64文字以下のCNAMEを付ける

External checks/外部チェック

Zabbix server上で外部スクリプトを実行して結果をZabbixに取り込める
やり過ぎるとZabbixのパフォーマンスが悪化するため注意

  • 4 Configuration Zabbix1.8 Zabbix1.8系では第一引数にHost:DNS name/IP addressが必ず入る
    # itemに設定した値
    check_oracle.sh[-h 192.168.1.4]
    
    # zabbixから実行される値
    check_oracle.sh www1.company.com -h 192.168.1.4
  • 11 External checks Zabbix2.0 Zabbix2.0ではカンマ区切りに変わっている。ホスト情報が欲しい場合は{HOST.CONN}等が使える。"パラメータ名","引数"と分けて記述する必要がある。"パラメータ名 引数"とすると引数に空白が含まれる場合の実行に失敗する。
    # itemに設定した値
    check_oracle.sh["-h","{HOST.CONN}"]
    
    # zabbixから実行される値
    check_oracle.sh "-h" "192.168.1.4"

用語

ITサービス
監視項目単位でグループを作成し、稼働率(SLA)を算出できる。apache+mysqlで可動してるサービスを登録し、サービス全体としての稼働率を計算してくれる。
ディスカバリ
指定したIPアドレス範囲(192.168.1.1〜255)を一定時間毎に探索し、自動的に監視対象に追加したり、その他アクションをとる事ができる
ホストの自動登録
zabbix-agentのアクティブチェックを利用して、一定条件を満たすzabbix-agentから受信した場合にzabbix-serverに自動登録できる
アクション
障害発生時や復旧時に実行する動作設定。トリガーステータスが変化しイベントが生成された時に、管理者へ通知、自動復旧、特定スクリプトの実行等できる
WEB監視
HTTP/HTTPSを使ってWebページが正常に表示できるかチェックできる。basic認証、POST変数、ステータスコード等を指定可能。ログイン可能かをチェックもできる。
IPMI
Intelligent Platform Management Interface。SNMPやDMI等のサーバー管理ソフトウェアが、特定のハードウェアシステムやOSに依存することなく、サーバーハードウェアをモニタ可能にするための標準インターフェイス仕様
Discovered hosts
検出されたホスト
アイテム
監視項目
アプリケーション
アイテムをグループ化する機能
ヒストリ
収集した生データが保存されている期間。デフォルト90日
トレンド
収集したデータのうち、グラフ表示用に30分の最小/平均/最大/個数を保存する期間。デフォルト365日
監視タイプ
Zabbixエージェント
zabbix-serverからzabbix-agentにリクエストを投げて、データを取得する。デフォルト
Zabbixエージェント(アクティブ)
zabbix-agentからzabbix-serverにリクエストを投げる。スタンドアロンのみで、xinetd経由では利用できない。
シンプルチェック
zabbix-agentなしで監視可能。ping, ポートチェック
SNMP v1/v2/v3エージェント
zabbix-serverからSNMP機器へリクエストが投げられる
Zabbixトラッパー
zabbix-agentに付属するzabbix_senderを用いてzabbix-serverへ送信する。手動やスクリプトに組み込んで実行する。
Zabbixインターナル
zabbix-server内部のアイテムやトリガー数、監視キュー等の監視
Zabbixアグリゲート
同じホストグループに属するホストの同じキーを持つアイテムを集計し、平均/最大を計算できる。zabbix-serverのDBのみを参照するためagentと通信しない
外部チェック
zabbix-server上に置いたスクリプトを実行し、結果を取得する。
vi /etc/zabbix/zabbix_server.conf
----
ExternalScripts=/usr/lib/zabbix/externalscripts
----
データベースモニタ
zabbix-serverからunixODBC,iODBCを利用してDBサーバにSQLクエリを発行し、結果を取得する
IPMIエージェント
zabbix-serverからIPMIを利用してハードウェアのステータスを取得する
SSHエージェント
zabbix-serverからSSHサーバへログインしてコマンドを実行し、結果を取得。公開鍵認証の場合は公開鍵/秘密鍵のパスをzabbix_server.confに記載。
vi /etc/zabbix/zabbix_server.conf
----
SSHKeyLocation=/etc/zabbix/sshkeys
----
TELNETエージェント
zabbix-serverからtelnetサーバへログインしてコマンドを実行し、結果を取得。

ホストの自動登録

例としてLinuxサーバをzabbix-serverに自動登録する。
zabbix-agentのHostnameに"agent"が含まれる場合に、1.ホスト追加, 2."Linux servers"グループに追加, 3. "Template OS Linux"テンプレートを追加

  • zabbix-agent側
  • zabbix-server側
    • 10051/tcpポートを開放
    • 設定 > アクション > 右上のイベントソース:自動登録 > アクションの作成
    • アクションタブ:
      • 名前:Linuxサーバの自動登録
      • デフォルト件名:デフォルト
      • デフォルトのメッセージ:デフォルト
    • アクションの実行条件タブ:
      • "ホスト名" + "含まれる" + "agent" > 追加
    • アクションの実行内容
      • ホストを追加
      • ホストグループに追加: Linux servers
      • テンプレートとリンク: Template OS Linux
    • 保存

バックアップ/リストア

  1. DBが更新されないようにサービス停止
    sudo service zabbix-server stop
    sudo service httpd stop
  2. 設定ファイル。/etc/zabbix以下がsymlinkの事もある(EPEL版)のため、hオプションを付けてバックアップ
    tar cfzh zabbix.conf.$(date +%Y%m%d).tar.gz /etc/zabbix/
  3. mysqlバックアップ
    mysqldump -u root --opt --single-transaction --default-character-set=utf8 --database zabbix | gzip > zabbix.mysql.`date +%Y%m%d`.gz
  • mysqlリストア
    service zabbix-server stop
    mysqladmin -u root drop zabbix
    mysql -u root -e 'CREATE DATABASE zabbix CHARACTER SET utf8;'
    zcat zabbix.mysql.YYYYMMDD.gz | mysql -u zabbix zabbix

メンテナンス

  • ホストやホストグループのメンテナンスのため、一時的にアラートメール等を止める
    • 設定 > メンテナンス
  • メンテナンス(左上)
    • 名前: 適当
    • メンテナンスタイプ: データ収集あり
    • 開始日時: この設定が有効な期間
    • 終了日時: この設定が有効な期間
  • メンテナンス期間(左下) ※これを設定しないと機能しない
    • 期間のタイプ:一度限り
    • 日付: メンテナンス開始日時
    • メンテナンス期間: メンテナンスに費やす日時
  • zabbiz-server自体のwebインタフェースをメンテナンスモードにする
    • 2.0
      /etc/zabbix/web/maintenance.inc.php
    • 1.8

メンテナンス時にアラートメールを送信しないようにするには

デフォルトではメンテナンス期間を作成してもアラートメールが送信される。

  1. 設定 > アクション > アクションを選択
  2. and条件の時には、コンディションに 「メンテナンスの状態」「期間外」を追加する

トラブル対応

  • zabbix-serverからzabbix-agentへの通信に失敗する、全て"[m|ZBX_NOTSUPPORTED]"になる場合、zabbix-agentが設定ファイルを読んでいないケースがあるので起動スクリプトを確認
    vim /etc/rc.d/init.d/zabbix-agent
    ----
    daemon --user zabbix $exec -c /etc/zabbix/zabbix_agentd.conf
    ----
    service zabbix-agent restart
  • アクションが実行されない時
    • 対象ホストにアクセスできる権限(読み取り専用以上)が管理 > ユーザ > ユーザグループに付与されている必要がある。ユーザがグループに入る必要がある。
  • zabbix_getで値が0になり, zabbix_agentdでは値が取得できる場合。Permission deniedになっていないかzabbixユーザでzabbix_agentdを実行して確かめる。
  • zabbix_get, zabbix_agentd実行時に"ZBX_NOTSUPPORTED"が発生する場合
    • アクセスするファイルへのパーミッションが無い。zabbixユーザがアクセスできるファイルに限られる。もしくは zabbix_agentd.conf で "AllowRoot?=1" にする
    • zabbix_get -k の値と zabbix_agentd.d/userparameter_*.confで指定されたキー名が一致しない
    • [zabbix1.8?] zabbix_agentd.d/userparameter_*.conf 中でパイプ"|"を使っているコマンドの前後にスペースが入っている
  • 外部のagentに対してコマンドを発行(zabbix-getパッケージが必要)
    zabbix_get -s [TARGET IP] -p [AGENT PORT:10050(省略可)] -k "[キー]"
    
    例:loadを取得
    zabbix_get -s localhost -k "system.cpu.load[,avg1]"
  • zabbix-agentから取得できるか確認。rootユーザとzabbixユーザで結果が異なるので注意。
sudo -u zabbix zabbix_agentd -t "キー"

例:loadを取得
sudo -u zabbix zabbix_agentd -t "system.cpu.load[,avg1]"

見積もり

  • windows cuiコマンド
    # システム情報の取得
    systeminfo
    
    # パフォーマンスカウンタから取得
    typeperf -qx
    
    # サービス一覧の取得
    sc query
    
    # ポート(state=LISTENING)
    netstat
  • linux
    # OS,アーキテクチャ
    uname -a
    
    # ディストリビューションの確認
    # RedHat, CentOS
    cat /etc/redhat-release
    # Debian
    cat /etc/debian_version
    # Ubuntu
    cat /etc/lsb-release
    
    # CPU
    cat /proc/cpuinfo
    
    # ネットワーク
    ifconfig -a
    
    # メモリ
    free -m
    
    # ディスク
    df -h
    
    # プロセス
    ps -ef
    # プロセスツリー
    pstree -p
    
    # ネットワークポート
    netstat -anp | grep LISTEN | grep tcp

管理 > メディアタイプ > スクリプト

トリガー発生時にメールを飛ばすように、zabbix-server上のスクリプトを実行できる

  • zabbix-server
    • 管理 > メディアタイプ > 新規作成 > タイプ:スクリプト
    • 以下の場所にスクリプトを置き、管理画面上でスクリプトファイル名を指定する
      vi /etc/zabbix/zabbix_server.conf
      ----
      AlertScriptsPath=/usr/lib/zabbix/alertscripts
      ----

日本語アラートスクリプト


アクション


リモートコマンド

  • 設定 > アクション > リモートコマンド

ワンライナーで取得できる値を簡単に取り込める

  • zabbix-server
    • 設定 > アクション > アクションの実行内容 > 実行内容のタイプ:リモードコマンド
  • zabbix-agentの設定変更
    vi /etc/zabbix/zabbix_agentd.conf
    ----
    EnableRemoteCommands=1
    LogRemoteCommands=1
    ----
    service zabbix-agent restart
  • sudoで実行させたいコマンドの場合
    visudo
    ----
    #Defaults    requiretty
    zabbix ALL=(ALL) NOPASSWD: ALL
    ----
  • アクション:リモートコマンドの書式
  • 例:アイテム:ファイル数を数える
    system.run["ls /var/log/*.log | wc -l"]
  • 例:アクション:OSを再起動させる。1行目Linux, 2行目:Windows
    host1:sudo /sbin/reboot
    host2:c:\windows\system32\shutdown.exe -r -f
  • うまく実行できない場合、ログを見る。sudoがうまく行かない場合、visudoの設定を再確認
    /var/log/zabbix/zabbix_agentd.log
    • CentOS
      /var/log/secure
    • Ubuntu
      /var/log/auth.log

トリガー

  • 障害イベント
    • 正常 > 障害
    • 正常 > 不明 > 正常
  • 復旧イベント
    • 障害 > 正常
    • 障害 > 不明 > 正常
  • トリガーステータス
    • 障害:条件式が真
    • 正常:条件式が偽
    • 不明:ホストが"不明"や、アイテムが"取得不可"、トリガー条件式が評価できない場合
  • テキストエリア内の改行はOK
  • ping応答ない場合にチェック
    {host1:icmpping.last(0)}=0
  • WEB 80/tcpポート開放チェック
    {host1:http.last(0)}=0
  • プロセスが可動しているかチェック。例:syslogd
    {host1:proc.num[syslogd].last(0)}=0
  • ファイルの存在(0/1)をチェック
    {host1:vfs.file.exists[/tmp/hoge]}>0
  • ファイルが更新された場合をチェック
    {host1:vfs.file.cksum[/etc/passwd].diff(0)}>0
  • windowsサービスの可動チェック。例:WindowsTime?サービス
    {host1:service_state[W32Time].last(0)}>0
  • 過去3回連続1以上の値が、3回以上続いたらアラート
    {test:test.trapper.count(#3,1,ge)}>2
  • 過去1時間以内に4回以上loadが10を越えた場合を検知
    {host1:system.cpu.load[,avg1].count(3600,10,gt)}>3
  • 過去30分のCPU使用率の平均が90%以上の場合に検知
    {host1:system.cpu.util[idle,avg1].avg(1800)}<10
  • ログに特定の文字列が含まれていたら検知。例:/var/log/messageに"error"が含まれていた場合。正規表現はregexp()
  • 2重化されているSMTPサーバの両方が停止した場合を検知
    ({host1:smtp.last(0)}=0) & ({host2:smtp.last(0)}=0)

指定時間対のトリガーを無効にする

  • Zabbix2.4の場合は、「|」「&」の代わりに「or」「and」を使う
  • 例: 04:00-05:00の「Processor load is too high on {HOST.NAME}」を無効にする
    ({Template OS Linux:system.cpu.load[percpu,avg1].last(0)}>5) & (({Template OS Linux:system.cpu.load[percpu,avg1].time(0)}<040000) | ({Template OS Linux:system.cpu.load[percpu,avg1].time(0)}>050000))

トリガーでホスト名を条件にいれる

  • 環境: Zabbix2.0
  • やりたい事
    • 複数ホストに同一テンプレートを指定するが、トリガーでホスト名を条件にいれたい。
  • できなかった事
    • 複数のテンプレートを跨いだトリガーの作成。(ホストに直接トリガーを設定すれば可能だが、保守性が悪い)
    • {HOST.NAME}をトリガーの条件式で使う
    • {Template OS Linux:system.hostname.iregexp(web01)}=1 を Template OS Linux 以外のテンプレートで使う
  • 例:「batch01.result nodata >= 25h」のトリガーの条件に Hostname:web01を含む条件をいれる
    • Hosts: web01, web02, db01, db02がある
    • Template: Template My Linux
    • Item: my.hostname
      • タイプ: Zabbixエージェント
      • キー: system.hostname[host]
        (system.hostnameは Template OS Linuxと重複するため別名を使う。[type]はWindows以外は無視される)
      • 更新間隔(秒): 3600
      • ヒストリの保存期間: 1
    • Item: batch01.result
      • タイプ: Zabbixトラッパー
      • キー: batch01.result
      • ヒストリの保存期間: 7
    • Trigger: batch01.result nodata >= 25h
      • 条件式:
        ({Template My Linux:system.hostname[host].iregexp(web01)}=1)
        &({Template My Linux:batch01.result.nodata(25h)}=1)

テンプレート

  • zabbix-agent用ユーザスクリプト
    /etc/zabbix/zabbix_agentd.d/
  • インポート
  1. Zabbixの設定 > テンプレート > 右上のインポート

Apache

  1. zabbix-agent側の設定
    vi /etc/httpd/conf/httpd.conf
    ----
    ExtendedStatus On
    
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
        Allow from localhost
    </Location>
    ----
    service httpd restart
  2. Apache Monitoring Script [Zabbix] に説明があり3つの例がある。1.cronを使う, 2.zabbix-serverから直接/server-statusを参照する, 3.agent側にbashスクリプトを置く。(3)がスマートなので採用
  3. filezapache filezapache_export.xml をダウンロード
  4. zapacheをagent側にコピー
    mkdir /etc/zabbix/bin
    cp /tmp/zapache /etc/zabbix/bin
    chmod 755 /etc/zabbix/bin/zapache
    
    cat > /etc/zabbix/zabbix_agentd.d/userparameter_apache.conf << 'EOS'
    UserParameter=apache[*],/etc/zabbix/bin/zapache \$1
    EOS
    
    service zabbix-agent restart
  5. 設定 > -hテンプレート > 右上のインポートで「zapache_export.xml」を指定
  6. Template_Apache_Stats が追加される。アイテムしかないのでトリガーやグラフは任意で追加
  • 例:秒間リクエスト数グラフの追加
  1. 設定 > テンプレート > Template_Apache_Stats > グラフを選択
  2. 右上のグラフの作成
  3. 名前:Apache - Requests Per Second
  4. アイテム:Template_Apache_Stats: Apache/ReqPerSec?
  5. 保存

MySQL

  • Zabbix 2.0/2.2標準の「Template App MySQL」を使う
    • Zabbix Agent側の設定
    1. MySQLにzabbixユーザを作成(Zabbix Serverの場合は不要)
      echo "grant process on *.* to 'zabbix'@'localhost' identified by 'zbxpasswd';flush privileges;" | mysql -u root -p -h localhost mysql
      
      # ステータスを取得できるか確認
      mysqladmin status -u zabbix -p
    2. /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf にHOME=/var/lib/zabbixとあるので /var/lib/zabbix/.my.cnfを作成
      cp /usr/share/doc/zabbix20-agent-2.0.13/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
      
      vim /var/lib/zabbix/.my.cnf
      ----
      [client]
      host=127.0.0.1
      user=zabbix
      password=********
      default-character-set=utf8
      ----
      chmod 600 /var/lib/zabbix/.my.cnf
      chown zabbix:zabbix /var/lib/zabbix/.my.cnf
      
      # statusが取れるか確認
      sudo -u zabbix mysqladmin status
    3. zabbix_agentdから値が読めるかテスト
      sudo -u zabbix zabbix_agentd -t 'mysql.uptime'
    4. zabbix_serverから値が読めるかテスト
      zabbix_get -s localhost -k 'mysql.uptime'
    • Zabbix Server側の設定
    1. 設定 -> ホスト -> ホスト名
    2. テンプレートタブ -> 「Template App MySQL」を追加

ユーザの追加

  • Zabbix2.x
    • ユーザの種類「Zabbix特権管理者」のみ「管理タブ」が表示される
  1. 管理 > ユーザ
  2. 右上のセレクトボックスで「ユーザ」に切り替え
  3. エイリアス「Admin」がデフォルトユーザなのでパスワードを変更しておく
  4. 右上の「ユーザの追加」で追加可能
  5. 「権限」タブで「ユーザ」「管理者」「特権管理者」と選択ができる
  6. 保存

通知用のメール設定

  • Zabbix2.x
  1. 管理 > メディアタイプ > Email
    • SMTPサーバ: localhost
    • SMTP helo: localhost
    • 送信元メールアドレス: zabbix@localhost
    • 有効:チェック
  2. 保存
  1. 設定 > アクション > Report problems to Zabbix administrators
    • デフォルトの件名(マクロが使えるので適当に):例 ホスト名を追加
      {HOSTNAME}: {TRIGGER.STATUS}: {TRIGGER.NAME}
    • デフォルトのメッセージ(マクロが使えるので適当に):例 ホスト名とイベント発生日時を追加
      Hostname: {HOSTNAME}
      Event: {EVENT.DATE} {EVENT.TIME}
      ...
    • リカバリメッセージ:チェック
    • リカバリ件名・メッセージも上記と同様

添付ファイル: filezabbix-slack-notify.zip 262件 [詳細] filezabbix_cleanup 569件 [詳細] fileapiinfoVersion.zip 457件 [詳細] fileTemplate_App_SMART_Windows_LLD.xml 442件 [詳細] filesmart-win.ps1 587件 [詳細] fileTemplate SNMP YAMAHA RTX1200.xml 716件 [詳細] fileTemplate_App_SMART_Linux_LLD.xml 452件 [詳細] fileyamaha-rt-status.sh 674件 [詳細] fileTemplate SNMP YAMAHA RTX810.xml.xml 415件 [詳細] filezabbix2.0-centos6.3-graph-bug.jpg 677件 [詳細] filezabbix-2.x-mojibake-after.jpg 806件 [詳細] filezabbix-2.x-mojibake-befor.jpg 766件 [詳細] filezapache_export.xml 441件 [詳細] filezapache 442件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (35d)