58
Zabbixのパフォーマンスチューニング & インストール時の注意点 2010/07/30 @ 2ZABBIX-JP勉強会 ZABBIX-JP 代表 寺島広大 @kodai74 http://kodai74.blogspot.com 1

Zabbixのパフォーマンスチューニング & インストール時の注意点

Embed Size (px)

DESCRIPTION

2010年7月30日 第2回ZABBIX-JP勉強会

Citation preview

Page 1: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixのパフォーマンスチューニング& インストール時の注意点

2010/07/30 @ 第2回ZABBIX-JP勉強会ZABBIX-JP 代表 寺島広大 @kodai74

http://kodai74.blogspot.com

1

Page 2: Zabbixのパフォーマンスチューニング & インストール時の注意点

アジェンダ

• Zabbixのインストールとインストール時の注意点

•とりあえず監視してみる

• Zabbixサーバのチューニングポイント

•パフォーマンス測定

2

Page 3: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixインストールとインストール時の注意点

3

Page 4: Zabbixのパフォーマンスチューニング & インストール時の注意点

監視サーバ 監視対象

Zabbixの動作環境

Zabbixサーバ

データベースMySQL

PostgreSQLSQLiteOracle

監視データ保存

障害通知

Webインターフェース(Apache + PHP)

表示・設定

管理者

Zabbixエージェント

SNMPエージェント

4

パッケージインストール

要設定&チューニング!

Page 5: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバのインストール•CentOS / RHEL 

✓ ZABBIX-JPのyumリポジトリを登録

✓ yumで一発インストール

•Debian / Ubuntu ✓ aptで一発インストール

5

# rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp-release-5-3.noarch.rpm

# yum install zabbix zabbix-server zabbix-server-mysql \zabbix-web zabbix-web-mysql

# apt-get install zabbix zabbix-server

Page 6: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバの設定

• /etc/zabbix/zabbix_server.conf ✓ DBName=データベース名✓ DBUser=データベースユーザ✓ DBPassword=データベースパスワード✓ DBSocket=DBのソケットファイルのパス

6

Page 7: Zabbixのパフォーマンスチューニング & インストール時の注意点

後からハマらないためのMySQL設定• Zabbixデータベース作成前に/etc/my.cnfを変更•文字化け回避のためのエンコード設定

•データ保存ファイルの設定

7

設定パラメータ 説明

default-character-set=utf8 デフォルトエンコードをutf8に設定

skip-character-set-client-handshakeSQLクライアントの設定に関わらず、サーバ側のエンコード設定を使用

設定パラメータ 説明

innodb_file_per_table単一のデータファイルの肥大化を防ぐために、テーブルごとにデータファイルを作成。DB作成後は変更不可

Page 8: Zabbixのパフォーマンスチューニング & インストール時の注意点

MySQLの起動 ⇒ DB作成

•MySQLの起動

•DBと接続用アカウントの作成

• Zabbixデータベースの初期データのインポート

8

# service mysqld start

# mysql -uroot> create database zabbix;> grant all privileges on zabbix.* to zabbix@localhost identified by ‘pass’;

# mysql -uroot zabbix < /usr/share/doc/zabbix-server-XXX/schema/mysql.sql# mysql -uroot zabbix < /usr/share/doc/zabbix-server-XXX/data/data.sql# mysql -uroot zabbix < /usr/share/doc/zabbix-server-XXX/data/images_mysql.sal

Page 9: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixの起動とWebインターフェースの設定

• Zabbixサーバの起動

•Apacheの起動

•ブラウザでWebインターフェースにアクセス✓ http://zabbix-server-host/zabbix

9

# service zabbix-server start

# service httpd start

Page 10: Zabbixのパフォーマンスチューニング & インストール時の注意点

Webインストーラの実行

•インターフェースの設定ファイルを作成

•インストーラ完了⇒ ログイン画面

• Zabbixサーバのインストール完了!

10

Page 11: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixエージェントのインストール

•CentOS / RHEL ✓ ZABBIX-JPのyumリポジトリを登録

✓ yumで一発インストール

•Debian / Ubuntu ✓ aptで一発インストール

11

# rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp-release-5-3.noarch.rpm

# yum install zabbix zabbix-agent

# apt-get install zabbix zabbix-agent

Page 12: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixエージェントの設定&起動

• /etc/zabbix/zabbix_agentd.conf ✓ Server=ZabbixサーバのIPアドレス✓ Hostname=Zabbixサーバに監視対象として登録する時のホスト名✓ ListenIP=ListenするIPアドレス

12

Page 13: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixエージェントの起動

• Zabbixエージェントの起動

• Zabbixエージェント側に監視設定は不要✓監視設定はZabbixサーバで集中管理✓ Zabbixエージェントは起動しておくだけ

13

# service zabbix-agent start

Page 14: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixのインストールまとめ

•MySQLの設定がキモ!•ソースからコンパイルする場合はZabbixの詳細を理解しておかないといけないが、RPMなら簡単にインストール

• ZABBIX-JPのRPMなら日本語利用にあたって必要な設定があらかじめ設定済み。インストール後すぐ使える

•Debian系のパッケージは日本語関連の設定が入っていないため、インストール後にPHPの設定を変更する必要あり

14

Page 15: Zabbixのパフォーマンスチューニング & インストール時の注意点

ZABBIX-JP RPMを使ったインストール手順

15

http://www.zabbix.jp/documents

Page 16: Zabbixのパフォーマンスチューニング & インストール時の注意点

ZABBIX-JPマニュアル

• ZABBIX インストレーションガイド✓ Configureでインストールする手順を解説

✓ 基本的な設定とカスタマイズ

16

http://www.zabbix.jp/documents

Page 17: Zabbixのパフォーマンスチューニング & インストール時の注意点

とりあえず監視してみる

17

Page 18: Zabbixのパフォーマンスチューニング & インストール時の注意点

監視対象

監視サーバ

テスト環境

•監視対象をたくさん用意できないので...✓ 2つの監視対象(Zabbixエージェント)を複数登録して監視✓ネットワーク的に遅延があまりない環境

18

Zabbixサーバ

Zabbixエージェント Zabbixエージェント

•Core 2 Duo 1.8GHz •メモリ4GB•Zabbix 1.6.9-2.JP 

Page 19: Zabbixのパフォーマンスチューニング & インストール時の注意点

利用するテンプレート

• ZABBIX-JPのTemplate_OS_Linuxを利用

19

設定項目 アイテム数 トリガー数 監視間隔

死活監視 1 1

5分

CPU、メモリ、ネットワーク、ディスク 32 8

5分プロセス、ポート 8 5 5分

その他 6 2

5分

合計 47 16

5分

Page 20: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホストの登録•同じ監視対象を複数ホストとして登録

20

ホスト名 IPアドレス テンプレート

test001 A.A.A.A Template_OS_Linux

test002 A.A.A.A Template_OS_Linux

test003 A.A.A.A Template_OS_Linux

・・・

Page 21: Zabbixのパフォーマンスチューニング & インストール時の注意点

確認ポイント(1) - Zabbixサーバの負荷• Zabbixサーバにもエージェントをインストール、スクリーンを作成して負荷状況を確認

21

ロードアベレージ

メモリ使用量

ネットワーク

CPU使用率

スワップ

I/O

Page 22: Zabbixのパフォーマンスチューニング & インストール時の注意点

確認ポイント(2) - キュー

• [管理] ⇒ [キュー]画面で監視の遅延有無を確認

22

Page 23: Zabbixのパフォーマンスチューニング & インストール時の注意点

確認ポイント(3) - Zabbixサーバの状態

• [レポート] ⇒ [Zabbixサーバの状態]画面でホスト、アイテムの登録数を確認

23

Page 24: Zabbixのパフォーマンスチューニング & インストール時の注意点

確認ポイント(4) - 監視データ• [監視データ] ⇒ [最新データ]画面でヒストリを表示して監視データに遅延がないかを確認

24

Page 25: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト10/アイテム500

25

0.2

Page 26: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト20/アイテム1000

26

0.2

赤:write I/O

Page 27: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト30/アイテム1500

27

0.2

Page 28: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト60/アイテム3000

28

0.2

赤: user time

Page 29: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト100/アイテム5000

29

0.2

Page 30: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト200/アイテム10000

30

0.2

赤: user time黄: iowait time

Page 31: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト500/アイテム23000

31

2

赤: user time黄: iowait time

Page 32: Zabbixのパフォーマンスチューニング & インストール時の注意点

キュー - ホスト500/アイテム23000

•特に遅延は発生していない

32

Page 33: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixのチューニングポイント

33

Page 34: Zabbixのパフォーマンスチューニング & インストール時の注意点

その前に...Zabbixサーバの監視のしくみ

• Zabbixサーバのプロセス

34

Zabbixサーバプロセスが複数起動します

Page 35: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバのプロセス

•起動直後のZabbixサーバのログを見ると...

35

役割ごとに処理を担当するプロセスが起動している

Page 36: Zabbixのパフォーマンスチューニング & インストール時の注意点

Pollerプロセスの役割

• Zabbixエージェント、SNMPエージェント、シンプルチェックのポート監視を行う専用のプロセス

36

ZabbixサーバPollerプロセス

データベース (2) 監視(1) 監視リスト取得

ZabbixエージェントSNMPエージェント(3) データを返す(4) データを保存

Page 37: Zabbixのパフォーマンスチューニング & インストール時の注意点

Pingerプロセスの役割

• Ping監視を行う専用のプロセス

37

ZabbixサーバPingerプロセス

データベース (2) Ping実行(fping)

(1) 監視リスト取得

監視対象機器(3) 結果を保存

Page 38: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバの設定パラメータ(1)

•監視プロセス数の調整

• Zabbix 1.6

38

設定パラメータ 説明

StartPollers=5Zabbixエージェント、SNMPエージェント、シンプルチェックを利用した監視用のプロセス起動数

StartPingers=1 Ping監視用のプロセス起動数

設定パラメータ 説明

StartDBSyncers=1DB書き込み前にメモリキャッシュを行う専用のプロセ

ス”DBSyncers”を起動。デフォルト無効

Page 39: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバの設定パラメータ(2)

• Zabbix 1.8

39

設定パラメータ 説明

CacheSize=8M 監視設定のキャッシュサイズ

CacheUpdateFrequency=60 監視設定のキャッシュを更新する間隔

HistoryCacheSize=8M ヒストリデータのメモリキャッシュサイズ

TrendCacheSize=4M トレンドデータのメモリキャッシュサイズ

HistoryTextCacheSize=16Mテキスト形式のヒストリデータの

キャッシュサイズ

Page 40: Zabbixのパフォーマンスチューニング & インストール時の注意点

MySQLの設定パラメータ(1)

• InnoDBのメモリ関連のパラメータ

✓デフォルト値が少なすぎる✓物理メモリの8割まで割り当ててOKとマニュアルに記載あり✓ただし、OS、http、Zabbixサーバ用のメモリは残しておいてね

40

設定パラメータ 説明 デフォルト値

Innodb_buffer_pool_sizeInnoDBのデータのメモリキャッ

シュサイズ8MB

Page 41: Zabbixのパフォーマンスチューニング & インストール時の注意点

MySQLの設定パラメータ(2)• InnoDBのログファイル関連のパラメータ

✓ログファイルはMySQLのアプリケーションログ、ではなくDB書き込み前にデータを追記形式で保存しておくところ

✓ログファイルの実体は/var/lib/mysql/ib_logfile*✓ログファイル設定を変更したら必ず

MySQL停止 ⇒ ib_logfile*削除 ⇒ MySQL起動を行うこと✓ログファイルは64~128MB×2もあれば十分。それ以上でもあまり効果はない

41

設定パラメータ 説明 デフォルト値

innodb_log_file_size更新ログを記録するための

ファイルサイズ5MB

innodb_log_files_in_group ログファイルの作成数 2

Page 42: Zabbixのパフォーマンスチューニング & インストール時の注意点

MySQL設定の参考書籍

•MySQL InnoDBのパフォーマンス設定✓MyISAMに比べるとInnoDBは情報が少ない✓参照系クエリのチューニングに比べると、更新系のチューニング情報はとても少ない

•実践ハイパフォーマンスMySQL 第2版✓ InnoDBのパフォーマンスチューニングのポイントや内部動作を詳細に解説

✓ Zabbixに関わらず、MySQLのチューニング本としてお勧めです

42

Page 43: Zabbixのパフォーマンスチューニング & インストール時の注意点

その他のMySQLのチューニングポイント

• InnoDBはCPUでスケールしない✓少なくともCentOS5 / RHEL5のMySQL 5.0.45ではスケールしない✓ CPUはコア数より速度を優先する方が良い✓ Hyper Threadingは絶対OFF (過去に問題が出たことあり)

•Googleパッチ、InnoDBプラグイン✓ InnoDBまわりの改善が多数✓ CPU数に応じてスケールするようになっている

43

Page 44: Zabbixのパフォーマンスチューニング & インストール時の注意点

パフォーマンス測定

44

Page 45: Zabbixのパフォーマンスチューニング & インストール時の注意点

設定変更前 - ホスト500/アイテム23000

45

2

赤: user time黄: iowait time

Page 46: Zabbixのパフォーマンスチューニング & インストール時の注意点

MySQLのパラメータ変更• /etc/my.cnf

✓ Zabbixサーバ停止✓MySQLサーバ停止✓ rm -rf /var/lib/mysql/ib_logfile* ✓MySQLサーバ起動

46

設定パラメータ 設定値

innodb_buffer_pool_size 8MB ⇒ 1024M

innodb_log_file_size 5MB ⇒ 128M

innodb_log_files_in_group 2 (変更なし)

Page 47: Zabbixのパフォーマンスチューニング & インストール時の注意点

設定変更後 - ホスト500/アイテム23000

47

2

赤: user time黄: iowait time

Page 48: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト800/アイテム38000

48

2

赤: user time黄: iowait timeホスト100台

追加時の負荷

Page 49: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト900/アイテム42000

49

2

赤: user time黄: iowait time

Page 50: Zabbixのパフォーマンスチューニング & インストール時の注意点

ホスト追加 - ホスト900/アイテム42000

50

•キューには溜まっていない

Page 51: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバの設定パラメータ(1)•監視プロセス数の調整

✓ Zabbixサーバの再起動

51

設定パラメータ 説明

StartPollers 5 ⇒ 20

StartPingers 1 ⇒ 5

Page 52: Zabbixのパフォーマンスチューニング & インストール時の注意点

プロセス変更 - ホスト900/アイテム42000

52

2

Page 53: Zabbixのパフォーマンスチューニング & インストール時の注意点

•キューに溜まってしまっている

プロセス変更 - ホスト900/アイテム42000

53

Page 54: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバのプロセス•プロセスの動き

✓ Pollerプロセス、Pingerプロセスがそれぞれデータベースをオープンすることにより、不必要に起動数を増やすとパフォーマンスが落ちる

✓ 1.8では処理が変更され、パフォーマンスが向上している

54

Page 55: Zabbixのパフォーマンスチューニング & インストール時の注意点

Zabbixサーバの設定パラメータ(1)•監視プロセス数の調整

✓ Zabbixサーバの再起動

55

設定パラメータ 説明

StartPollers 20 ⇒ 5

StartPingers 5 ⇒ 1

StartDBSyncers 0 ⇒ 1

Page 56: Zabbixのパフォーマンスチューニング & インストール時の注意点

DBSyncers - ホスト900/アイテム42000

56

2

Page 57: Zabbixのパフォーマンスチューニング & インストール時の注意点

結論•MySQLのチューニング

✓ innodb_buffer_pool_sizeとinnodb_log_file_sizeは必ず修正した方が良い

✓ I/Oパフォーマンスが向上する

• Zabbixサーバのプロセス✓キューに溜まっていなければPollerやPingerプロセス数の設定を変更しても効果なし。むしろ逆効果の場合もある

✓ StartDBSyncersは一定の効果あり

57

Page 58: Zabbixのパフォーマンスチューニング & インストール時の注意点

監視対象

分散監視機能 (大規模システムの監視)

• Zabbixプロキシ✓ Zabbixサーバに代わって監視を行う専用のサーバ✓ スケールアウトすることにより監視の負荷分散が可能✓ プロキシを使えばより監視対象を増やせる

58

ZabbixサーバZabbixプロキシサーバ Zabbixプロキシサーバ

監視設定と監視データの一元管理