グラフ表示ができない

 はじめまして、y-komoriと申します。

 SoftwareDesignの記事を見てZABBIXに興味を持ち、RRDToolから乗り換えるべくインストールしてみました。非常に素晴らしいプロダクトだと思います!

 ただ、インストールしてSoftwareDesignの記事に沿ってグラフ表示をさせてみたのですが、肝心のグラフが表示できません。

 ZABBIXのインストールはyumではなくtarボールからインストールしました。PHP環境のGDやlibpngあたりが原因かと思い、phpinfo()で調べてみたのですが、GD Support、PNG Support 共にEnableになっていました。
 また、テキスト形式では蓄積しているデータが表示されるので、少なくともデータベース絡みではないようです。
 あとは、生成したグラフをどこかのディレクトリに一時出力する仕組みならば、パーミッションの問題かもしれませんが、出力先がわからず苦慮しています。

 申し訳ありませんが、心当たりのある方、アドバイスいただけないでしょうか。

環境は以下の通りです。
OS :CentOS 5.2(Kernel 2.6.18-92.1.22.el5)
Apache :2.2.1
PHP :5.2.8
ZABBIX :1.4.5
PostgreSQL:8.3.5

以上、よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

KAZと申します。

グラフの期間を変更しても表示されませんでしょうか?
また、serverのログにエラーが出力されていませんでしょうか?

ユーザー y-komori の写真

返信ありがとうございます。

グラフ期間を変更しても変化はありません。IE7で表示すると、イメージのリンクが切れているときの「×」アイコンが表示されてしまう状態です。

serverのログとはzabbix_server.logのことでよいのですよね?
このファイルを tail -f でチェックしながら操作してみましたが、特にエラーは出力されないようです。

ユーザー KAZ の写真

グラフ期間を変更しても変化はありません。IE7で表示すると、イメージのリンクが切れているときの「×」アイコンが表示されてしまう状態です。

その画像を右クリックしてプロパティを見るとURLはどうなっていますか?

また、webサーバのログでエラーはなんとなっていますでしょうか?

serverのログとはzabbix_server.logのことでよいのですよね?
このファイルを tail -f でチェックしながら操作してみましたが、特にエラーは出力されないようです。

zabbix_server.confのDebugLevelは3でしょうか?
もし3ならばDebugLevelを4にして動かすことはできますでしょうか?
※:zabbix_serverの再起動が必要です。

ユーザー y-komori の写真

KAZさん

その画像を右クリックしてプロパティを見るとURLはどうなっていますか?

以下のような感じです。(ドメイン部分は伏せています)

https://www.XXXXXXX.jp/personal/zabbix/chart2.php?graphid=61&from=0&period=43200&width=830

また、webサーバのログでエラーはなんとなっていますでしょうか?

apache のログを確認してみましたが、特にエラーは出ていません。
以下のようなログが出ているので、少なくとも上記のGETリクエストは届いているようです。

XXXXXXXXXX - - [26/Dec/2008:15:20:34 +0900] "GET /personal/zabbix/chart2.php?graphid=61&from=0&period=43200&width=830 HTTP/1.1" 200 172 "htt
ps://www.XXXXXX.jp/personal/zabbix/charts.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"

zabbix_server.confのDebugLevelは3でしょうか?
もし3ならばDebugLevelを4にして動かすことはできますでしょうか?
※:zabbix_serverの再起動が必要です。

DebugLevelを4にしてzabbix_serverを再起動しました。発行しているSQLなど詳細なログが出るようにはなりましたが、errorやfailといったキーワードで検索しても特に引っかかりませんでした(SQL内の文字列は除く)。

PHPの内部処理に問題があるような気がするのですが、PHPの処理で発生したエラーはどこかに出力されますでしょうか?
(なお、念のためphp.iniでdisplay_errors = Onとした状態で動かしています)

お手数おかけしてすみませんが、よろしくお願いします。

ユーザー KAZ の写真

<code>
PHPの内部処理に問題があるような気がするのですが、PHPの処理で発生したエラーはどこかに出力されますでしょうか?
(なお、念のためphp.iniでdisplay_errors = Onとした状態で動かしています)
</code>
phpのエラーですが、zabbix_server.logにでるか、画面に出るかになるはずです。

1点確認ですがPHPですが、rpmインストールでしょうか?
それともconfigureしたのでしょうか?

configureだった場合は、各pkgのインストール順を教えて下さい。

ユーザー y-komori の写真

 なるほど。(>PHPのエラー)

PHP はもともと他の用途でも使用しており、rpm からではなくtarボールからconfigureしてインストールしたものです。

 今回、ZABBIXの要件に合わせるため、再コンパイル&インストールしました。
phpinfo()で表示されるconfigureオプションは以下の通りです。

'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--enable-zend-multibyte' '--enable-mbstring' '--with-pgsql' '--enable-mbregex' '--with-db4' '--enable-ftp' '--with-gd' '--with-zlib-dir=/usr/local/lib' '--with-png-dir=/usr/lib' '--enable-bcmath'

(「各pkgのインストール順を教えて下さい。」の回答になっているでしょうか?)

 なお、念のためlibphp5.soに対してlddをかけて共有ライブラリのリンクも確認してみましたが、以下のようにきちんとリンクされているようです。

# ldd libphp5.so
linux-gate.so.1 => (0x003bf000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00f9a000)
libpq.so.5 => /usr/local/pgsql/lib/libpq.so.5 (0x00d8c000)
librt.so.1 => /lib/librt.so.1 (0x002cc000)
libpng12.so.0 => /usr/local/lib/libpng12.so.0 (0x004ca000)
libz.so.1 => /usr/lib/libz.so.1 (0x00110000)
libdb-4.3.so => /lib/libdb-4.3.so (0x0018c000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00123000)
libm.so.6 => /lib/libm.so.6 (0x00504000)
libdl.so.2 => /lib/libdl.so.2 (0x00f77000)
libnsl.so.1 => /lib/libnsl.so.1 (0x0042d000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00be3000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00136000)
libc.so.6 => /lib/libc.so.6 (0x00da5000)
/lib/ld-linux.so.2 (0x00170000)

ユーザー KAZ の写真

(「各pkgのインストール順を教えて下さい。」の回答になっているでしょうか?)
/lib/ld-linux.so.2 (0x00170000)

phpをconfigureしたと言うことですが、PostgreSQL、libxml2やgdは既に入っていたということで良いですか?

PostgreSQL、libxml2やgd、libpng、libjpegはphpの前にいれる必要があります。大丈夫でしょうか?

ユーザー y-komori の写真

phpをconfigureしたと言うことですが、PostgreSQL、libxml2やgdは既に入っていたということで良いですか?

PostgreSQL、libxml2やgd、libpng、libjpegはphpの前にいれる必要があります。大丈夫でしょうか?

はい。PostgreSQLも別用途で前から使っていたのでインストール済みです。libxml2は意識していませんでしたが、yum list installed で確認したところ、インストール済みでした。

gd、libpng、libjpeg もインストール済みであることを確認して、PHPを再度コンパイル&インストールしてみたのですが、ダメでした。

やはり、yum経由でインストールした方が無難なのでしょうか。

ユーザー y-komori の写真

 すみません、解決できました!

 PHPのコンフィグレーションで --with-freetype-dir を指定していなかったのが原因でした。

 Apacheのログをよく見てみると、以下のようなエラーが出ていたのでわかりました。

PHP Fatal error: Call to undefined function ImageTTFText() in
/home/httpd/ssl-html/personal/zabbix/include/classes/graph.inc.php on line 412, referer: https://www.XXXXXXXX.jp/personal/zabbix/charts.php

Apacheのログ出力をカスタマイズしていて、別の通常とは別のファイルに出力されているのをすっかり忘れていて気づきませんでした・・

KAZさん、どうもありがとうございました!