2009年12月27日日曜日

Zabbix 1.8の動作に必要なパッケージ

Zabbix 1.8になって機能追加やソースの修正などで必要な関連パッケージが追加されてます。ついでなのでZabbixが要求するパッケージをまとめて解説しておきます。

Zabbixサーバ

  • fping: pingの死活監視を行うために必要。RedHat/CentOSには含まれていないので、epelZABBIX-JPからダウンロードしてインストールしてください。
  • iksemel: Jabberによるチャットの通知を行うために必要。これもRedHat/CentOSには含まれていません。
  • curl: Web監視を行うために必要。RedHat/CentOSの4系ではバージョンが古くて動作しないので、Web監視を行いたいならRedHat/CentOSの5系以上を使う必要があります。
  • net-snmp-libs: SNMP監視を行うために必要
  • unixODBC: データベース監視を行うために必要
  • libssh2: Zabbix 1.8以降で追加されたsshエージェント監視を行うために必要。1.0以上のバージョンが必要なので、いまのところepelに含まれるバージョンでも動作しません。ZABBIX-JPでパッケージを配布予定です。
Webインターフェース

  • php-gd: グラフやマップを描画するために必要
  • php-bcmath: 任意精度の数値計算を行うために必要
  • php-mbstring: マルチバイト文字列を扱うために必要
  • php-xml: Zabbix 1.8以降で追加。インポート/エクスポートのXMLファイルの処理に必要

2009年12月25日金曜日

Zabbix 1.8のユーザグループのパーミッションのバグ

Zabbix 1.8を新規でインストールする際に使用する初期インポート用のSQLに入っているユーザグループのパーミッション設定が間違ってました。「API access」と「Disabled」グループのパーミッションが入れ替わっています。



インストール後に手動で設定しなおせば良いだけなのですが、気付かないまま無効にしたいユーザをDisabledグループにした場合は意図した設定にならないので注意してください。

Zabbix SIAにもパッチ送付済みです。ZABBIX-JP配布の1.8のRPMには修正を含めてリリース予定です。


2009年12月24日木曜日

Zabbixのセキュリティ情報

Zabbixのセキュリティ情報が5件出てます。
2.のコマンド実行のセキュリティの問題は1.8で修正されていて、それ以外はすべて1.6.8までに修正されています。Zabbix SIAのバグトラッキングツールでは2.の問題も1.6系で修正するよ、とAlexeiからコメントがありました。
1.6.8がリリースされて以降もSubversionの1.6のbrunchにはいくつかのコミットが行われているので、もしかすると1.6.9のリリースがありそうな雰囲気です。

2009年12月20日日曜日

Zabbix 1.8のグラフの文字化け(4)

前回から引き続きZabbix 1.8のグラフまわりの修正です。

通常のグラフと概要画面の縦文字の表示については修正できましたが、トリガーの稼働率のグラフ([レポート] -> [稼働レポート]のリストから「グラフ」をクリックして表示されるグラフ)はZabbix 1.8で修正されておらず1.6以前と同じ表示になっています。しかも修正が中途半端にされたのか英語でも凡例が正しく表示できません。



このグラフをZabbix 1.8で新しく作られたグラフの文字表示用関数imageText()を利用するように修正するパッチを作成しました。

このパッチを当てることで日本語フォントを利用でき凡例も正しく表示できるようになります。



Zabbix SIAにも報告しておいたので、上記の修正がそのまま採用されるかどうかは分からないですが、次のバージョンで改善されると思います。

Zabbix 1.8のグラフの文字化け(3)

前回問題だった概要画面の縦の文字表示が正常に行えない件ですが、vtext.phpを以下のように修正することで正しく表示できました。フォントサイズと表示領域の大きさによって起きている問題だと思うので、IPAフォント以外のフォントを利用した場合は違う修正をした方が良い場合もあると思います。

imageText($im, 9, 90, $size['width']+3, $size['height'], $text_color, $text);
    ↓
imageText($im, 8, 90, $size['width']+3, $size['height'], $text_color, $text);



Zabbix SIAにも報告しておきました。

2009/12/20追記: Zabbix 1.8のグラフの文字化け対策(4)

2009年12月18日金曜日

Zabbix 1.8のグラフの文字化け(2)

前回からの続編です。

やっぱりIPAフォントが利用できた方が表示も奇麗だし、ということでIPAフォントのライセンスについてもう少し調べてみたところ、現在リリースされている一つ前のバージョン(2008/2にリリースされたバージョン002.03)であれば再配布も可能ということが分かりました。
しかも、最新のIPAフォントは.otfという拡張子になっていてUIゴシックフォントが削除されているのに対し、旧バージョンは.ttfでUIゴシックが含まれています。

IPA UIゴシックを利用してグラフを表示すると奇麗に表示できました。



できればソースはいじりたくないですし、ライセンス的にも問題なさそうなのでZABBIX-JPのRPMにはIPA UIゴシックを含める方向で考えたいと思います。

IPA UIゴシックを使った場合でも一ヶ所だけ問題があって、概要の表示の一部の表示が正常にできません(赤枠の部分)。ここは修正を行う必要がありそうです。



sazanami-gothicを利用した場合にグラフの縦表示が正常に行えない問題ですが、とある方から情報を頂きましてフォントファイルに埋め込みビットマップフォントが含まれているために発生しているのではないかということでした。
情報どうもありがとうございました!

2009/12/20追記: Zabbix 1.8の文字化け対策(3)

2009年12月16日水曜日

Zabbix SIAからクリスマスカードが届いた

Zabbix SIAのパートナーになっている企業にだけだと思うんですけど、毎年クリスマスカードが届きます。日本の会社がお得意様に年賀状出すような感じなんでしょうか。

去年はパートナー契約の担当者にだけ届いたのですが、今年は私にも届きました♪



2009年12月15日火曜日

Zabbix 1.8のグラフの文字化け

Zabbix 1.8ではグラフの表示方法が大幅に変わっていて、日本語が文字化けしてしまいます。(赤線の部分)


文字化けの原因は英語フォントを利用しているためで、日本語フォントを指定すれば日本語を表示することができます。ひとまずCentOSに付属しているさざなみフォントを利用して表示してみました。

まず、ZabbixのWebインターフェースのファイルがあるディレクトリの、fontsディレクトリにOSのフォントのシンボリックリンクを張ります。

# cd /usr/share/zabbix/fonts
# ln -s /usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf .

次にWebインターフェースのファイルがあるディレクトリのinclude/defines.inc.phpの48行目あたり

44         define('ZBX_MAX_PERIOD',                        2*365*86400);   // ~2 years
45         define('ZBX_PERIOD_DEFAULT',                    3600);          // 1 hour
46 
47         define('ZBX_FONTPATH',                          realpath('fonts'));     // where to search for font (GD > 2.0.18)
48         define('ZBX_GRAPH_FONT_NAME',                   'DejaVuSans');          // font file name
49 /* END OF USERS DEFINES */
50 
51         define('ZBX_AUTH_INTERNAL',     0);

の「DejaVuSans」を「sazanami-gothic」に書き換えます。

するとグラフの凡例やタイトルは日本語を表示できたのですが、グラフの横軸の時間の表示が正常に表示されませんでした。この縦書き表示部分にはphpのImageStringUp関数が使用されているのですが、フォントとの相性があるようです。すべてのフォントで正しく表示させるためにはいちど横書きにして90度回転させた方がよさそうです。


試しにIPAフォント(再配布条件がややこしい旧バージョンのもの)を使ってみるときれいに表示できてます。でもフォントファイルだけ再配布できないので、ZABBIX-JPのRPMでは含められないですね...。


再配布条件が緩くなった現在のIPAフォントだとなぜか文字間の幅が広がってしまいます。


ということで、たんにフォントを置き換えただけでは表示上の問題やライセンスの問題でZABBIX-JPのRPMは作成できそうにありません。いちどsazanami-gothicを使って正常に表示させることができないかphp側の修正を試してみようと思います。

2009/12/18追記: Zabbix 1.8のグラフの文字化け(2)

2009年12月11日金曜日

Zabbix 1.8のWebインターフェースの動作に要求されるmbstring関数の問題

Zabbix 1.8がリリースされてインストールを試してみたというブログ記事をいくつか見かけたり、知人からメールをもらったりしているのですが、よくCentOS 5系でインストールをするとWebインターフェースのインストーラでPHPのmbstring supportのチェックでつまづいて先に進むことができないと報告を受けます。




このチェックはWebインターフェースのディレクトリのinclude/locales.inc.phpのmbstrings_available()関数でチェックされています。CentOS 5に付属しているPHP 5.1ではmb_stristrとmb_strstr関数が含まれないためにエラーになってしまっています。

39 function mbstrings_available(){
40         $mbstrings_fnc_exist =
41                 function_exists('mb_strlen') &&
42                 function_exists('mb_strtoupper') &&
43                 function_exists('mb_strpos') &&
44                 function_exists('mb_substr') &&
45                 function_exists('mb_stristr') &&
46                 function_exists('mb_strstr');
47 
48 return $mbstrings_fnc_exist;

ですが、これらの関数をgrepで探してみてもどこにも見当たりません。実際は使われていない関数なので、上記のチェックのうち該当する関数のチェックは外してしまっても問題ありません。

ZABBIX SIAのフォーラムでも同様のことが投稿されていたので、これはバグですね。おそらく次のバージョンで改善されるでしょう。


2009/12/11 追記:

後で気付いたのですが、Zabbix 1.8ではmbstring.func_overloadを2に設定する必要があるため、strstr関数がmb_strstr関数に自動的に上書きされて利用されることになります。

調べてみたところstristr関数はOracleデータベースを利用している場合のみ使われていて、strstr関数は利用されていませんでした。

ZABBIX SIAがどのように対応するか分からないですが、詳細が分かったら続編書きます。

2009年12月10日木曜日

Snow LwopardのMail.appでメールが文字化ける

Snow LeopardのMail.appでメールを送ったときに文字化けしてしまうことがあるようで、たびたび人から指摘されてました。

会社の文字エンコードに詳しい人に聞いて調べてみてもらったところ、どうやらMail.appに「〜」が含まれている場合に自動的にSJISに変換されて、かつ返信メールヘッダにcp932という標準化されていないエンコードが指定されているようです。Thunderbirdなど一般的なメーラではcp932というエンコードは登録されていないために文字化けしてしまっていました。

当然、Mail.appでは文字化けしないので自分では気付かずやっかいな問題です。しかも、メールの書名に「〜」を使っている人がいて、その人の書名が送信したメールに返信した場合はことごとく文字化けしている状況でした。

Leopardのときと同じように、ターミナルから以下のコマンドを実行することで解決しました。

defaults write com.apple.mail NSPreferredMailCharset "ISO-2022-JP"

毎度バージョンアップのたびに期待するのですが、Mail.appのエンコードまわりの処理は改善されないですね...。