統合監視ソフト Zabbix


テンプレートの活用

記事:


依存アイテム: 1つのmasterから複数のアイテムを同時に収集

1リクエストの結果に複数の値が入っている場合、リクエスト数を減らしてzabbix側の負荷/DB容量を減らせる。

記事:


web.page.regexp: http/httpsリクエストから正規表現で値を抽出


位置参照マクロ($1, $2, ...$9)の廃止


zabbix-web-service: 定期レポートの作成及び送信

記事


メモリの節約

デフォルト設定はWeb UIにアクセス人が数十人な設定にみえる。そのためphp-fpmのメモリ消費が多い

記事:


コンテナでのインストール

記事:


プロセス毎のファイルオープン数や、limitsの監視

プロセス毎のopen files, limitsを確認したい場合


グラフの時刻の表示形式の変更


ホストインベントリの自動登録

記事:


計算アイテム


zabbix_senderで一括送信

通常は監視の値1つに対して、1回実行が発生する。
1回の実行で複数の値が取れる場合、「-T」で一括送信ができる。外部チェックは負荷が高いので、負荷を下げる事ができるかも。


server/proxy/agent間通信の暗号化


HostMetadata, HostMetadataItem を使ってホストの自動登録を区別する

hostnameでのtrigger分岐


TCP/UDP コネクション数の取得

ホスト単位でざっくりな数を知りたい場合。

プロセス単位を知りたければ、

# サマリ
ss -s

# tcp, プロトコル等を表示
ss -tp

# ポート番号からプロセスを調べる
sudo lsof -i:<port no>

冗長構成


ネットワークのLatency測定

Zabbix Server/Proxyから実行される。


予測関数(time_shift, forecast)


Active Checkが失敗する場合


正規表現


PostgreSQLの監視


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


ansibleでzabbixの設定を行う


チャットに通知


ネットワーク疎通確認


CLI tools


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


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

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

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

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


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


DBのクリーンアップ

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


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


API


グラフの時刻を変更する


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


memcachedの監視


windows上でpowershellを実行する場合

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

powershell Set-ExecutionPolicy RemoteSigned

タイムアウト秒数変更

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


ユーザグループと権限


ローレベルディスカバリ 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. しばらく待って情報が取得できれば成功

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


zabbix-java-gateway: javaプロセスのJMXメトリクス監視


log型アイテムのグラフ化

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


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=********
  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
  1. 管理 > 分散管理 > プロキシの作成
    • プロキシ名: (/etc/zabbix/zabbix_proxy.confのHostnameの値) IPではうまくいかなかった。Zabbix Proxyとこの名前で疎通できる必要がある。
    • プロキシモード: アクティブ

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

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

--with-libssh2

アラートメールの破棄

  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のモニタリング


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


SNMPで監視

  1. 設定 > ホスト > 対象ホストを選択
  2. マクロタブを選択
    • {$SNMP_COMMUNITY} : public
  3. 保存

TCP/UDP


Windows


Cisco


NETGEAR


BUFFALO


YAMAHA


SNMPツール


HTTP,HTTPSのWebモニタリング

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. ユーザID、パスワードを入力

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

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


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


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


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

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


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


zabbix 6.0の場合

記事:


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

zabbix-2.x-mojibake-befor.jpg

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

zabbix-2.x-mojibake-after.jpg


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

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


NTPのoffset/delay等を取得


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



  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

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


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


プロセス毎の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


パスワードの初期化


LDAP認証

sudo yum install php-ldap openldap-clients

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

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


マクロ

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


アイテム

監視対象を設定する


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


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


DenyHostsの件数を監視


vm.memory.size


ログ監視


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

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


External checks/外部チェック

Zabbix server/proxy上で外部スクリプトを実行して結果をZabbixに取り込める


用語

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"テンプレートを追加


バックアップ/リストア

  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

メンテナンス

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

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

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

トラブル対応

sudo -u zabbix zabbix_agentd -t "キー"

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

見積もり


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

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


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


アクション


リモートコマンド

ワンライナーで取得できる値を簡単に取り込める。
zabbix-server,proxyがハックされると、任意のコマンドを実行されてしまうセキュリティ問題が出る


トリガー


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


単位記号

アイテムキーやトリガー内で、桁が大きい数値を「K, M, G, T」を使って分かりやすく記述できる


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


ユーザの追加

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

通知用のメール設定

  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}
      ...
    • リカバリメッセージ:チェック
    • リカバリ件名・メッセージも上記と同様

添付ファイル: fileexample_zabbix_sender.zip 1030件 [詳細] filezabbix-slack-notify.zip 2196件 [詳細] filezabbix_cleanup 2255件 [詳細] fileapiinfoVersion.zip 2395件 [詳細] fileTemplate_App_SMART_Windows_LLD.xml 2175件 [詳細] filesmart-win.ps1 1802件 [詳細] fileTemplate SNMP YAMAHA RTX1200.xml 2850件 [詳細] fileTemplate_App_SMART_Linux_LLD.xml 2170件 [詳細] fileyamaha-rt-status.sh 2391件 [詳細] fileTemplate SNMP YAMAHA RTX810.xml.xml 1530件 [詳細] filezabbix2.0-centos6.3-graph-bug.jpg 1878件 [詳細] filezabbix-2.x-mojibake-after.jpg 2041件 [詳細] filezabbix-2.x-mojibake-befor.jpg 1998件 [詳細] filezapache_export.xml 1672件 [詳細] filezapache 1277件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-09-10 (火) 16:31:05