質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.05%

cactiでグラフが表示されません。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,715

kaji

score 623

ブラウザで表示した際のcactiグラフが表示されません。

cacti直下のrraディレクトリには以下ファイルは存在しました。
-rw-rw-rw-. 1 cacti apache 141640  5月 12 15:05 2015 localhost_load_1min_5.rrd
-rw-rw-rw-. 1 cacti apache  47992  5月 12 15:05 2015 localhost_mem_buffers_3.rrd
-rw-rw-rw-. 1 cacti apache  47992  5月 12 15:05 2015 localhost_mem_swap_4.rrd
-rw-rw-rw-. 1 cacti apache  47992  5月 12 15:05 2015 localhost_proc_7.rrd
-rw-rw-rw-. 1 cacti apache  47992  5月 12 15:05 2015 localhost_users_6.rrd

グラフ横のスパナアイコンで表示された以下コマンドを直接rootやcactiユーザで実行したところ、グラフは出ました。(/tmp/cacti.pngでグラフが問題なく表示された画像を確認してます)

/usr/local/rrdtool/src/rrdtool graph -  --imgformat=PNG  --start='1431278600'  --end='1431365000'  --title='Localhost - Memory Usage'  --rigid  --base='1000'  --height='120'  --width='500'  --alt-autoscale-max  --lower-limit='0'   --vertical-label='kilobytes'  --slope-mode  --font TITLE:10:  --font AXIS:7:  --font LEGEND:8:  --font UNIT:7:  DEF:a='/var/www/cacti/rra/localhost_mem_buffers_3.rrd':'mem_buffers':AVERAGE  DEF:b='/var/www/cacti/rra/localhost_mem_swap_4.rrd':'mem_swap':AVERAGE  AREA:a#FF4105FF:'Free'   GPRINT:a:LAST:'Current\:%8.2lf %s'   GPRINT:a:AVERAGE:'Average\:%8.2lf %s'   GPRINT:a:MAX:'Maximum\:%8.2lf %s\n'   AREA:b#FFC73BFF:'Swap':STACK  GPRINT:b:LAST:'Current\:%8.2lf %s'   GPRINT:b:AVERAGE:'Average\:%8.2lf %s'   GPRINT:b:MAX:'Maximum\:%8.2lf %s\n' > /tmp/cacti.png

結局実行ユーザによって出たり出なかったりするのではないかということで、
グラフを表示しているurlを調べると以下urlだったので
http://cacti.localhost/graph_image.php?local_graph_id=1&rra_id=0&graph_height=120&graph_width=500&title_font_size=10&view_type=tree&graph_start=1431331819&graph_end=1431397655graph_image.php?local_graph_id=1&rra_id=0&graph_height=120&graph_width=500&title_font_size=10&view_type=tree&graph_start=1431331819&graph_end=1431397655

graph_image.phpに
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
を追加したユーザを調べたところ実行ユーザはapacheでした。

結局コマンドを実行している箇所が
-lib/rrd.php
98行目 $fp = popen(read_config_option("path_rrdtool") . escape_command(" $command_line"), $pipe_mode);

だったので、コマンドをechoしてみたところ、以下コマンドが出てきました。

/usr/local/rrdtool/src/rrdtool graph -  --imgformat=PNG  --start='1431278600'  --end='1431365000'  --title='Localhost - Memory Usage'  --rigid  --base='1000'  --height='120'  --width='500'  --alt-autoscale-max  --lower-limit='0'   --vertical-label='kilobytes'  --slope-mode  --font TITLE:10:  --font AXIS:7:  --font LEGEND:8:  --font UNIT:7:  DEF:a='/var/www/cacti/rra/localhost_mem_buffers_3.rrd':'mem_buffers':AVERAGE  DEF:b='/var/www/cacti/rra/localhost_mem_swap_4.rrd':'mem_swap':AVERAGE  AREA:a#FF4105FF:'Free'   GPRINT:a:LAST:'Current\:%8.2lf %s'   GPRINT:a:AVERAGE:'Average\:%8.2lf %s'   GPRINT:a:MAX:'Maximum\:%8.2lf %s\n'   AREA:b#FFC73BFF:'Swap':STACK  GPRINT:b:LAST:'Current\:%8.2lf %s'   GPRINT:b:AVERAGE:'Average\:%8.2lf %s'   GPRINT:b:MAX:'Maximum\:%8.2lf %s\n'

これを直で実行できる以下phpを作り表示したところ、
やはりcactiやrootだとバイナリが帰ってくるのに、
apacheを経由すると戻り値がない状態でした。

<?php
$command = <<< EOD
/usr/local/rrdtool/src/rrdtool graph -  --imgformat=PNG  --start='1431278600'  --end='1431365000'  --title='Localhost - Memory Usage'  --rigid  --base='1000'  --height='120'  --width='500'  --alt-autoscale-max  --lower-limit='0'  COMMENT:"From 2015/05/11 02\:23\:20 To 2015/05/12 02\:23\:20\c"  COMMENT:"  \n"  --vertical-label='kilobytes'  --slope-mode  --font TITLE:10:  --font AXIS:7:  --font LEGEND:8:  --font UNIT:7:  DEF:a='/var/www/cacti/rra/localhost_mem_buffers_3.rrd':'mem_buffers':AVERAGE  DEF:b='/var/www/cacti/rra/localhost_mem_swap_4.rrd':'mem_swap':AVERAGE  AREA:a#FF4105FF:'Free'   GPRINT:a:LAST:'Current\:%8.2lf %s'   GPRINT:a:AVERAGE:'Average\:%8.2lf %s'   GPRINT:a:MAX:'Maximum\:%8.2lf %s\n'   AREA:b#FFC73BFF:'Swap':STACK  GPRINT:b:LAST:'Current\:%8.2lf %s'   GPRINT:b:AVERAGE:'Average\:%8.2lf %s'   GPRINT:b:MAX:'Maximum\:%8.2lf %s\n'
EOD;
exec($command, $output, $return_var);
print nl2br(print_r($output, 1));exit;

/usr/local/rrdtool/src/rrdtoolの権限の問題かなとも思ったので
apacheなどに変更してみたのですが、変化なしでした。

pollerはcactiユーザが実行してます
$ sudo su cacti
$ crontab -e
*/5 * * * * /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1

調査にすでに丸々1日を費やしてしまい、
検索してもrraディレクトリにファイルが存在する時点で
解決してるページしか見つからないので、
知ってる方教えて欲しいです。

バージョンなど
rrdtool-1.5.3
cacti-0.8.8c
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

Apache のエラーログ(/var/log/httpd/error_log など)には何か記録されていませんでしょうか。
パーミッションとか、SELinux とか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/12 16:16

    apache側には何も記載がありませんでした。
    tail -f /etc/httpd/logs/cacti-error_log

    ちなみにcactiのサブドメでバーチャルホストを切ってます。
    ErrorLog logs/cacti-error_log
    CustomLog logs/cacti-access_log combined env=!no_log

    selinuxを一旦無効にして確認しましたが、グラフは出ませんでした。
    # sestatus
    SELinux status: enabled
    SELinuxfs mount: /selinux
    Current mode: enforcing
    Mode from config file: enforcing
    Policy version: 24
    Policy from config file: targeted
    # setenforce 0
    # sestatus
    SELinux status: enabled
    SELinuxfs mount: /selinux
    Current mode: permissive
    Mode from config file: enforcing
    Policy version: 24
    Policy from config file: targeted

    パーミッションはこんな感じです。
    drwxrwxrwx. 2 cacti apache 4096 5月 12 15:09 2015 rra
    drwxrwxrwx. 2 cacti apache 4096 11月 12 10:34 2014 log
    -rwxr-xr-x. 1 root root 7901 5月 12 14:15 2015 /usr/local/rrdtool/src/rrdtool

    キャンセル

  • 2015/05/12 16:53

    selinuxをもう一度オフにして
    apache再起動でグラフが表示されました。
    回答頂いたおかげで解決しました。
    selinuxをoffにしたままcactiを運用して良いかわかりませんが、
    ありがとうございました。

    キャンセル

  • 2015/09/08 10:59 編集

    SELinuxなんて、特別な場合を除き、即効オフで問題ありません。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.05%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る