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

22,681 views
22,320 views

Published on

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

Published in: Technology
0 Comments
32 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
22,681
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
228
Comments
0
Likes
32
Embeds 0
No embeds

No notes for slide

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

  1. 1. Zabbixのパフォーマンスチューニング & インストール時の注意点 2010/07/30 @ 第2回ZABBIX-JP勉強会 ZABBIX-JP 代表 寺島広大 @kodai74 http://kodai74.blogspot.com 1
  2. 2. アジェンダ• Zabbixのインストールとインストール時の注意点• とりあえず監視してみる• Zabbixサーバのチューニングポイント• パフォーマンス測定 2
  3. 3. Zabbixインストールとインストール時の注意点 3
  4. 4. Zabbixの動作環境 要設定&チューニング! 監視サーバ 監視対象データベース MySQL PostgreSQL SQLite Oracle SNMPエージェント データ保存 監視 ZabbixサーバWebインターフェース Zabbixエージェント (Apache + PHP) 表示・設定 障害通知 パッケージインストール 管理者 4
  5. 5. Zabbixサーバのインストール• CentOS / RHEL  ✓ ZABBIX-JPのyumリポジトリを登録 # rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp- release-5-3.noarch.rpm ✓ yumで一発インストール # yum install zabbix zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql• Debian / Ubuntu  ✓ aptで一発インストール # apt-get install zabbix zabbix-server 5
  6. 6. Zabbixサーバの設定• /etc/zabbix/zabbix_server.conf  ✓ DBName=データベース名 ✓ DBUser=データベースユーザ ✓ DBPassword=データベースパスワード ✓ DBSocket=DBのソケットファイルのパス 6
  7. 7. 後からハマらないためのMySQL設定• Zabbixデータベース作成前に/etc/my.cnfを変更• 文字化け回避のためのエンコード設定 設定パラメータ 説明 default-character-set=utf8 デフォルトエンコードをutf8に設定 SQLクライアントの設定に関わらず、 skip-character-set-client-handshake サーバ側のエンコード設定を使用• データ保存ファイルの設定 設定パラメータ 説明 単一のデータファイルの肥大化を防ぐために、テーブル innodb_file_per_table ごとにデータファイルを作成。DB作成後は変更不可 7
  8. 8. MySQLの起動 DB作成• MySQLの起動 # service mysqld start• DBと接続用アカウントの作成 # mysql -uroot > create database zabbix; > grant all privileges on zabbix.* to zabbix@localhost identified by ‘pass’;• Zabbixデータベースの初期データのインポート # 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 8
  9. 9. Zabbixの起動とWebインターフェースの設定• Zabbixサーバの起動 # service zabbix-server start• Apacheの起動 # service httpd start• ブラウザでWebインターフェースにアクセス ✓ http://zabbix-server-host/zabbix 9
  10. 10. Webインストーラの実行• インターフェースの設定ファイルを作成• インストーラ完了 ログイン画面• Zabbixサーバのインストール完了! 10
  11. 11. Zabbixエージェントのインストール• CentOS / RHEL  ✓ ZABBIX-JPのyumリポジトリを登録 # rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp- release-5-3.noarch.rpm ✓ yumで一発インストール # yum install zabbix zabbix-agent• Debian / Ubuntu  ✓ aptで一発インストール # apt-get install zabbix zabbix-agent 11
  12. 12. Zabbixエージェントの設定&起動• /etc/zabbix/zabbix_agentd.conf  ✓ Server=ZabbixサーバのIPアドレス ✓ Hostname=Zabbixサーバに監視対象として登録する時のホスト名 ✓ ListenIP=ListenするIPアドレス 12
  13. 13. Zabbixエージェントの起動• Zabbixエージェントの起動 # service zabbix-agent start• Zabbixエージェント側に監視設定は不要 ✓ 監視設定はZabbixサーバで集中管理 ✓ Zabbixエージェントは起動しておくだけ 13
  14. 14. Zabbixのインストールまとめ• MySQLの設定がキモ!• ソースからコンパイルする場合はZabbixの詳細を理解しておかないといけないが、RPMなら簡単にインストール• ZABBIX-JPのRPMなら日本語利用にあたって必要な設定があらかじめ設定済み。インストール後すぐ使える• Debian系のパッケージは日本語関連の設定が入っていないため、インストール後にPHPの設定を変更する必要あり 14
  15. 15. ZABBIX-JP RPMを使ったインストール手順 http://www.zabbix.jp/documents 15
  16. 16. ZABBIX-JPマニュアル• ZABBIX インストレーションガイド ✓ Configureでインストールする 手順を解説 ✓ 基本的な設定とカスタマイズ http://www.zabbix.jp/documents 16
  17. 17. とりあえず監視してみる 17
  18. 18. テスト環境• 監視対象をたくさん用意できないので... ✓ 2つの監視対象(Zabbixエージェント)を複数登録して監視 ✓ ネットワーク的に遅延があまりない環境 監視サーバ •Core 2 Duo 1.8GHz  •メモリ4GB •Zabbix 1.6.9-2.JP  Zabbixサーバ Zabbixエージェント Zabbixエージェント 監視対象 18
  19. 19. 利用するテンプレート• ZABBIX-JPのTemplate_OS_Linuxを利用 設定項目 アイテム数 トリガー数 監視間隔 死活監視 1 1 CPU、メモリ、ネットワーク、ディスク 32 8 プロセス、ポート 8 5 5分 その他 6 2 合計 47 16 19
  20. 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 ・ ・ ・ 20
  21. 21. 確認ポイント(1) - Zabbixサーバの負荷• Zabbixサーバにもエージェントをインストール、スク リーンを作成して負荷状況を確認ロードアベレージ CPU使用率メモリ使用量 スワップネットワーク I/O 21
  22. 22. 確認ポイント(2) - キュー• [管理] [キュー]画面で監視の遅延有無を確認 22
  23. 23. 確認ポイント(3) - Zabbixサーバの状態• [レポート] [Zabbixサーバの状態]画面でホスト、アイ テムの登録数を確認 23
  24. 24. 確認ポイント(4) - 監視データ• [監視データ] [最新データ]画面でヒストリを表示して監視データに遅延がないかを確認 24
  25. 25. ホスト追加 - ホスト10/アイテム5000.2 25
  26. 26. ホスト追加 - ホスト20/アイテム10000.2 赤:write I/O 26
  27. 27. ホスト追加 - ホスト30/アイテム15000.2 27
  28. 28. ホスト追加 - ホスト60/アイテム30000.2 赤: user time 28
  29. 29. ホスト追加 - ホスト100/アイテム50000.2 29
  30. 30. ホスト追加 - ホスト200/アイテム100000.2 赤: user time 黄: iowait time 30
  31. 31. ホスト追加 - ホスト500/アイテム230002 赤: user time 黄: iowait time 31
  32. 32. キュー - ホスト500/アイテム23000• 特に遅延は発生していない 32
  33. 33. Zabbixのチューニングポイント 33
  34. 34. その前に...Zabbixサーバの監視のしくみ• Zabbixサーバのプロセス Zabbixサーバプロセス が複数起動します 34
  35. 35. Zabbixサーバのプロセス• 起動直後のZabbixサーバのログを見ると... 役割ごとに処理を担当する プロセスが起動している 35
  36. 36. Pollerプロセスの役割• Zabbixエージェント、SNMPエージェント、シンプルチェックのポート監視を行う専用のプロセスデータベース (1) 監視リスト取得 (2) 監視 Zabbixサーバ Zabbixエージェント (4) データを保存 Pollerプロセス (3) データを返す SNMPエージェント 36
  37. 37. Pingerプロセスの役割• Ping監視を行う専用のプロセス データベース (1) 監視リスト取得 (2) Ping実行 (fping) Zabbixサーバ 監視対象機器 (3) 結果を保存 Pingerプロセス 37
  38. 38. Zabbixサーバの設定パラメータ(1)• 監視プロセス数の調整 設定パラメータ 説明 Zabbixエージェント、SNMPエージェント、シンプル StartPollers=5 チェックを利用した監視用のプロセス起動数 StartPingers=1 Ping監視用のプロセス起動数• Zabbix 1.6 設定パラメータ 説明 DB書き込み前にメモリキャッシュを行う専用のプロセ StartDBSyncers=1 ス”DBSyncers”を起動。デフォルト無効 38
  39. 39. Zabbixサーバの設定パラメータ(2)• Zabbix 1.8 設定パラメータ 説明 CacheSize=8M 監視設定のキャッシュサイズ CacheUpdateFrequency=60 監視設定のキャッシュを更新する間隔 HistoryCacheSize=8M ヒストリデータのメモリキャッシュサイズ TrendCacheSize=4M トレンドデータのメモリキャッシュサイズ テキスト形式のヒストリデータの HistoryTextCacheSize=16M キャッシュサイズ 39
  40. 40. MySQLの設定パラメータ(1)• InnoDBのメモリ関連のパラメータ 設定パラメータ 説明 デフォルト値 InnoDBのデータのメモリキャッ Innodb_buffer_pool_size 8MB シュサイズ ✓ デフォルト値が少なすぎる ✓ 物理メモリの8割まで割り当ててOKとマニュアルに記載あり ✓ ただし、OS、http、Zabbixサーバ用のメモリは残しておいてね 40
  41. 41. MySQLの設定パラメータ(2)• InnoDBのログファイル関連のパラメータ 設定パラメータ 説明 デフォルト値 更新ログを記録するための innodb_log_file_size 5MB ファイルサイズ innodb_log_files_in_group ログファイルの作成数 2 ✓ ログファイルはMySQLのアプリケーションログ、ではなくDB書き込み前 にデータを追記形式で保存しておくところ ✓ ログファイルの実体は/var/lib/mysql/ib_logfile* ✓ ログファイル設定を変更したら必ず MySQL停止 ib_logfile*削除 MySQL起動を行うこと ✓ ログファイルは64∼128MB×2もあれば十分。それ以上でもあまり効果 はない 41
  42. 42. MySQL設定の参考書籍• MySQL InnoDBのパフォーマンス設定 ✓ MyISAMに比べるとInnoDBは情報が少ない ✓ 参照系クエリのチューニングに比べると、更新系のチューニング情報は とても少ない• 実践ハイパフォーマンスMySQL 第2版 ✓ InnoDBのパフォーマンスチューニング のポイントや内部動作を詳細に解説 ✓ Zabbixに関わらず、MySQLのチューニング本として お勧めです 42
  43. 43. その他のMySQLのチューニングポイント• InnoDBはCPUでスケールしない ✓ 少なくともCentOS5 / RHEL5のMySQL 5.0.45ではスケールしない ✓ CPUはコア数より速度を優先する方が良い ✓ Hyper Threadingは絶対OFF (過去に問題が出たことあり)• Googleパッチ、InnoDBプラグイン ✓ InnoDBまわりの改善が多数 ✓ CPU数に応じてスケールするようになっている 43
  44. 44. パフォーマンス測定 44
  45. 45. 設定変更前 - ホスト500/アイテム230002 赤: user time 黄: iowait time 45
  46. 46. MySQLのパラメータ変更• /etc/my.cnf 設定パラメータ 設定値 innodb_buffer_pool_size 8MB 1024M innodb_log_file_size 5MB 128M innodb_log_files_in_group 2 (変更なし) ✓ Zabbixサーバ停止 ✓ MySQLサーバ停止 ✓ rm -rf /var/lib/mysql/ib_logfile*  ✓ MySQLサーバ起動 46
  47. 47. 設定変更後 - ホスト500/アイテム230002 赤: user time 黄: iowait time 47
  48. 48. ホスト追加 - ホスト800/アイテム380002 赤: user time ホスト100台 黄: iowait time 追加時の負荷 48
  49. 49. ホスト追加 - ホスト900/アイテム420002 赤: user time 黄: iowait time 49
  50. 50. ホスト追加 - ホスト900/アイテム42000• キューには溜まっていない 50
  51. 51. Zabbixサーバの設定パラメータ(1)• 監視プロセス数の調整 設定パラメータ 説明 StartPollers 5 20 StartPingers 1 5 ✓ Zabbixサーバの再起動 51
  52. 52. プロセス変更 - ホスト900/アイテム420002 52
  53. 53. プロセス変更 - ホスト900/アイテム42000• キューに溜まってしまっている 53
  54. 54. Zabbixサーバのプロセス• プロセスの動き ✓ Pollerプロセス、Pingerプロセスがそれぞれデータベースをオープ ンすることにより、不必要に起動数を増やすとパフォーマンスが落 ちる ✓ 1.8では処理が変更され、パフォーマンスが向上している 54
  55. 55. Zabbixサーバの設定パラメータ(1)• 監視プロセス数の調整 設定パラメータ 説明 StartPollers 20 5 StartPingers 5 1 StartDBSyncers 0 1 ✓ Zabbixサーバの再起動 55
  56. 56. DBSyncers - ホスト900/アイテム420002 56
  57. 57. 結論• MySQLのチューニング ✓ innodb_buffer_pool_sizeとinnodb_log_file_sizeは必ず修正した 方が良い ✓ I/Oパフォーマンスが向上する• Zabbixサーバのプロセス ✓ キューに溜まっていなければPollerやPingerプロセス数の設定を変 更しても効果なし。むしろ逆効果の場合もある ✓ StartDBSyncersは一定の効果あり 57
  58. 58. 分散監視機能 (大規模システムの監視)• Zabbixプロキシ ✓ Zabbixサーバに代わって監視を行う専用のサーバ ✓ スケールアウトすることにより監視の負荷分散が可能 ✓ プロキシを使えばより監視対象を増やせる 監視設定と監視データの 一元管理 Zabbixサーバ Zabbixプロキシサーバ Zabbixプロキシサーバ 監視対象 58

×