Zabbix勉強会に行ってきた

iwanMySQL, Zabbix, 監視

皆様こんにちは、
インフラサーバエンジニア暦 9ヶ月 iwanです。

先々週ですが、第2回Zabbix-JP勉強会に参加してきました。
http://www.zabbix.jp/modules/news/article.php?storyid=185

最初のテーマは、Zabbixのインストール時の注意点/パフォーマンスチューニングでした。
テストサーバにホストを追加して、Zabbixで負荷の状況を確認していく内容でした。

まずは、インストール時に行うMySQLの設定ですね。
Zabbixデータベース作成前に、my.cnfを変更するお話でした。
文字化け対策の設定ですが、自分も検証中に最初にハマった箇所でした。

  • default-characterset=utf8
  • =>デフォルトエンコードをutf8に設定

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

次もMySQLのお話でしたが、その中でもInnoDBのパフォーマンスチューニングが、話題中心の印象を受けました。InnoDBで、MySQLを起動する前に注意しておく設定が話題でした。
データ保存のファイルの設定では、下記の項目を追加することにより、テーブル単位(データファイルの単位)でのバックアップ、リカバリが可能になります。

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

InnoDBのメモリ関連のパラメータでは、データやインデックスをキャッシュするためのメモリ上の領域が、デフォルト値では小さすぎる指摘がありました。
物理メモリに合わせたチューニングを心掛けましょう。

  • innodb_buffer_pool_size
  • =>デフォルトの値に注意が必要
    =>ちなみに、デフォルト値は8MBです

発表者の要点は、下記3点でした。

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

次に、InnoDBのログファイル関連のパラメータについても言及してました。

  • innodb_log_file_size
  • =>更新ログを記録するためのファイルサイズ デフォルト値は5MB

  • innodb_log_file_in_group
  • =>ログファイルの作成数 デフォルト値は2

発表者の要点は、下記4点でした。

  • ログファイルはMySQLのアプリケーションログではなくDB書き込み前にデータを追記形式で保存しておくところ
  • ログファイルの実体は/var/lib/mysql/ib_logfile*
  • ログファイル設定を変更したら必ずMySQLを停止し、ib_logfile* を削除してMySQLの起動を行うこと
  • ログファイルは64~128MB×2もあれば十分、それ以上でもあまり効果はない

zabbix_server.confのチューニングも話題にでました。
中でも、これはやってみよう!と思ったのが、StartDBSyncersの設定です。
デフォルトでは、設定ファイルには項目もないので盲点でした。
DBSyncersとは、DB書き込み前にメモリキャッシュを行う専用のプロセスです。

普段から上司には、マニュアルや情報はすみずみまでちゃんと読め!と注意されますが、
Zabbixオフィシャルサイトのリリースノートに、ちゃんと書かれてありました。

ZABBIX 1.6 リリースノートより、

:: パフォーマンスの大幅な向上::
Zabbix データベースキャッシュモジュールを StartDBSyncers パラメータで有効にすると、
Zabbix の速度が構成に応じて 4 倍から 8 倍まで増加します。

これはかなりの効果が望めそうです。

ZabbixサーバのPollerプロセス、Pingerプロセス数を変更してキューを確認し、
監視の遅延有無の検証もしてました。
遅延キューが無い状態からプロセス起動数を増やしても、パフォーマンスが落ちる結果となってました。
ただし、1.8では処理が変更されて、パフォーマンスが向上しているそうです。

Zabbixの冗長化の話題では、Haertbeatを併用し、VirtualIPを使って冗長化した実績を挙げてました。

次のテーマは、メールや電話による障害通知と、そのカスタマイズのお話でした。
Zabbixの障害通知を Skype4pyを使って電話で通知するお話でした。
デモを行う予定だったが、ネットワークのトラブルにより披露されませんでした。

あとは、障害をTwitterに通知するワザも披露されました。
発表者はpythonを書き始めらしく、pythonでなんか書きたいなーって思っていて、
閃いたのが始まりだったそうです。

試してみたいことや、確認したいことがたくさんあり、参加してよかったなぁと思える勉強会でした。

iwanMySQL, Zabbix, 監視

Posted by iwan