熟練者ほどログをちゃんと見ろっっ（Zabbix編）


# はじめに
あるゲームの案件でサーバ監視にZabbixを使っています。
ある日アラートメールが飛んできたけどサーバーには異常が無いという事象がありました。
その時のやり取りをまとめました。
Zabbixの「item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds」というログについてを調べている人は役に立つかもしれません。

初心者にありがちなエラー出てるのにエラーログを見ずに解決できないやつ。
中級者～上級者のあなたもやっていませんか。
（わたしはたまにやってしまいます…）

# ログから原因を探り、設定を調整するまで。
**登場人物**
・わたし
　Zabbixをインストールしたことがない素人。
　サーバにアクセスできるが設定はイジれない立場。
　プログラム担当なのでサーバ管理は管轄外。
・サーバ管理者（他社の人）
　Zabbixのインストール・設定・運用。
　アラートメールを受け取ったらサーバを調査する。
・運営スタッフ（他社の人）
　アラートメールを受け取る。
　サーバ管理者へ連絡もする。
※3社

**環境**
Zabbix 2.0.12
ホスト数：　150ぐらい
アイテム数：　5500ぐらい
1秒あたりの監視項目数： 150ぐらい
※Zabbixの管理ページ(ダッシュボード)に表示されている数値より
監視対象はLB、スイッチ、サーバマシンなどいろいろ。

## ある日アラートメールが届く。
そのアラートによるとサーバーが応答できていなかったらしい。（運営スタッフより）
サーバ管理者からの報告によると1台が1分ほど不通だったとのこと。
その後監視サーバーや監視対象を調べたが特に異常はなかったらしい。

異常がないのにアラートメールが飛ぶのはおかしいなぁ…と思いログを調べてみると…
（どんなメッセージがあるのかも知らない素人なので実際はログを1行づつちまちま見てました…）

```text:/var/log/zabbix/zabbix_server.log
$ sudo cat /var/log/zabbix/zabbix_server.log | grep -E "host unavailable|host became available"
temporarily disabling Zabbix agent checks on host [xxxx]: host unavailable
enabling Zabbix agent checks on host [xxxx]: host became available
temporarily disabling Zabbix agent checks on host [xxxx]: host unavailable
temporarily disabling Zabbix agent checks on host [xxxx]: host unavailable
temporarily disabling Zabbix agent checks on host [xxxx]: host unavailable
temporarily disabling Zabbix agent checks on host [xxxx]: host unavailable
enabling Zabbix agent checks on host [xxxx]: host became available
enabling Zabbix agent checks on host [xxxx]: host became available
enabling Zabbix agent checks on host [xxxx]: host became available
enabling Zabbix agent checks on host [xxxx]: host became available
```

なんと応答できていない（と思われる）サーバは5台ありました。
しかも1分どころか5分ぐらい応答できていない状態だったようです。
（ぜんぜん報告と違うじゃないかい）
この時点でなんとなく監視サーバ側に問題ありそうだなーと思ったのでログをさらに調べていくと…

```text:/var/log/zabbix/zabbix_server.log
$ sudo cat /var/log/zabbix/zabbix_server.log | grep -E "host unavailable|host became available|connection restored|first network error"
item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds
item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds
item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds
……
```

「item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds」という出力が大量にありました。
Google検索して調べてみたところTimeoutの設定値を調整すればよさそうな感じでしたが、
もう少し状況把握したかったので監視サーバに「Template App Zabbix Server」というテンプレートを適応してもらいました。

さっそくグラフを見ると「icmp pinger processes」のビジー率が100%になっています。
おそらくping監視が処理しきれず何度もタイムアウトしてホストダウンと判定された？
↓
最初のアラートメールの状況につながりました。
これでほぼほぼ当たりをつけられたので設定を調整します。
グラフを見ながら調整して以下の数値になりました。

```text:/etc/zabbix/zabbix_server.conf
StartPollers=20
StartPingers=30
Timeout=10
```

※ping以外のアイテムでも「item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds」が出ていたのでStartPollersも調整しました。
※この数値は環境や監視ホスト・アイテム数等により変わると思うので、「Template App Zabbix Server」のグラフで状況確認しましょう。

## 設定調整後
ログに
「item [xxxx] on host [xxxx] failed: first network error, wait for 15 seconds」
は、ほぼほぼ出なくなりました。
あっても1日に数回（1～3）程度だったのでアラートメールには影響しないでしょう。

## まだ気になる個所はあるけども…
監視データの書き込みとhousekeeperの処理でCPUのwait値が20%以上になることがありました。
たぶんDBのチューニングをすればもう少し改善できると思うんですがやれてません。
ひとまず監視サーバから誤アラートがこなくなったということで終わりにしました。
（直接設定いじれないし、責任問題が絡むといろいろ指摘するのも面倒なんだ…）

サーバの設定変更する権限のある人はDBのチューニングもしましょう！

# まとめ
アラートがきたら原因をちゃんと調べよう。
無視してもよいアラートみたいなものを作ってはいけない。
無駄に監視項目が多くなっていないか？必要ないものは削る覚悟も必要。
本当に必要な時にだけアラートがくるようにしよう。

素人でも検索の力を借りれば大体の事は調べられます。
熟練者もログをちゃんと見ろっっ
（ちゃんと仕事しろっっ）

# 参考ページ
[日本Zabbixユーザー会](http://www.zabbix.jp/)
こちらのフォーラムに大体の問題は載っていそう。

[【連載Zabbix】Zabbix チューニング Serverプロセスの理解【Zabbix Advent Calendar 2016】](http://blog.serverworks.co.jp/tech/2016/12/17/zabbixtuning/)
poller processes
icmp pinger processes
unreachable poller processes