Muninダイナミックズームが機能しません。私は問題がNginxの構成に関係していると確信しています。ズームされたグラフを生成しようとすると、nginxログに次のエラーエントリがトリガーされます。
2015/02/22 13:26:01 [error] 4782#0: *2580 open() "/data/munin/usr/share/munin/cgi/munin-cgi-graph/bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot-pinpoint=1421756527,1424607727.png" failed (2: No such file or directory), client: 10.10.10.25, server: munin, request: "GET /usr/share/munin/cgi/munin-cgi-graph/bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot-pinpoint=1421756527,1424607727.png?&lower_limit=&upper_limit=&size_x=800&size_y=400 HTTP/1.1", Host: "munin.bellaria", referrer: "http://munin.bellaria/static/dynazoom.html?cgiurl_graph=/usr/share/munin/cgi/munin-cgi-graph&plugin_name=bellaria/antergos1.bellaria/diskstats_latency/AntergosVG_AntergosRoot&size_x=800&size_y=400&start_Epoch=1421756527&stop_Epoch=1424607727"
具体的には、fastCGIパラメータに問題があると思います。親しみやすい魂が私のMunin仮想サーバー(以下を参照)を見て、何が悪いのか説明してくれませんか?それは私を狂わせています-それでも私は専門家が問題をほんの一瞬で特定するという予感があります...
# Munin server
server {
listen 80;
server_name munin munin.bellaria;
root /data/munin;
allow all;
access_log logs/munin.access.log;
error_log logs/munin.error.log;
location / {
index index.html index.htm index.php;
}
location ~ \.(php|html|html|cgi)$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi.conf;
}
location ^~ /cgi-bin/munin-cgi-graph/ {
access_log off;
fastcgi_split_path_info ^(/cgi-bin/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/fcgi-graph.sock;
include fastcgi_params;
}
}
私の問題の解決策と良いニュースを探しているときに、これを見つけました!私は問題を解決しました。これがmuninがあなたの設定でも機能するのを助けることを願っています。
要件:
autoreconf -v -i
./configure && make && Sudo make install
#! /bin/sh ### BEGIN INIT INFO #提供:munin-fastcgi #必要な開始:$ remote_fs $ network #必須停止:$ remote_fs $ network #デフォルト開始:2 3 4 5 #デフォルト停止:0 1 6 #簡単な説明: starts munin-fastcgi #説明:Webアクセス用にMunin FCGIソケットを生成します ### END INIT INFO # #munin-fastcgi Munin CGIサービスの起動スクリプト # #chkconfig:-84 15 #説明:spawn-cgiを使用したMunin CGIサービスのロード #HTMLファイルとCGI。 # #作成者:Ryan Norbauer #変更:Geoffrey Grosenbach http://topfunky.com #変更: David Krmpotic http://davidhq.com #変更:Kun Xi http://kunxi.org #変更:http://drumcoder.co.uk/ #変更:http://uname.pingveno.net/ #変更:the_architecht http://iwbyt.com/ PA TH =/usr/local/bin /:/ usr/local/sbin:$ PATH DAEMON = $(which spawn-fcgi) FCGI_GRAPH_SOCK =/var/run/munin/fastcgi-munin -graph.sock FCGI_HTML_SOCK =/var/run/munin/fastcgi-munin-html.sock WWW_USER = www-data FCGI_USER = www-data FCGI_GROUP = www-data FCGI_SPAWN_GRAPH =/usr/lib/munin/cgi/munin-cgi-graph FCGI_SPAWN_HTML =/usr/lib/munin/cgi/munin-cgi-html PIDFILE_GRAPH =/var/run/munin/fastcgi-munin-graph.pid PIDFILE_HTML =/var/run/munin/fastcgi-munin-html.pid DESC = "Munin FCGI forグラフとHTML " #パッケージが削除された場合、正常に終了します。 test -x $ DAEMON || exit 0 test -x $ FCGI_SPAWN_GRAPH || exit 0 test -x $ FCGI_SPAWN_HTML || exit 0 start(){ $ DAEMON -s $ FCGI_GRAPH_SOCK -U $ WWW_USER -u $ FCGI_USER -g $ FCGI_GROUP -P $ PIDFILE_GRAPH $ FCGI_SPAWN_GRAPH 2>/dev/null || echo "グラフはすでに実行中です" $ DAEMON -s $ FCGI_HTML_SOCK -U $ WWW_USER -u $ FCGI_USER -g $ FCGI_GROUP -P $ PIDFILE_HTML $ FCGI_SPAWN_HTML 2>/dev/null || echo "HTML既に実行中" } stop(){ kill -QUIT `cat $ PIDFILE_GRAPH` || echo "グラフが実行されていません" kill -QUIT `cat $ PIDFILE_HTML` || echo "HTML Not running" } restart(){ kill -HUP `cat $ PIDFILE_GRAPH` || echo "グラフをリロードできません" kill -HUP `cat $ PIDFILE_HTML` || echo "HTMLを再読み込みできません" } case "$ 1" in start) echo "Starting $ DESC:" start ;; stop) echo "$ DESCを停止しています:" stop ;; restart | reload) echo "$ DESCの再起動:" stop #デーモンが停止するのに1秒では不十分かもしれません。 #これが発生した場合、d_start失敗します( #の場合、dpkgは壊れます#パッケージがアップグレードされています)。必要に応じてタイムアウトを変更します #するか、またはd_stopを変更して、start-stop-daemonに--retryを使用させます。 。] sleep 1 start ;; *) echo "使用法:$ SCRIPTNAME {start | stop | restart | reload}">&2 exit 3 ;; esac exit $?
上記を/etc/init.d/munin-fcgi
の下に権限755
でインストールします
/etc/nginx/conf.d/example.com.conf
、これをserver { }
ブロックに追加します。セットアップに合わせて許可されたIPブロックを変更できます。私はこれをローカルサーバーで行い、muninグラフをローカルでのみ使用できるようにしたいと考えました。location/munin { #alias /var/cache/munin/www; index index.html; #include /etc/nginx/php.conf ; #access_log off; allow 127.0.0.1; allow 192.168.0.0/16; deny all; } 場所^〜/ munin-cgi/munin-cgi-graph/{ #if($ uri〜/ munin-cgi/munin-cgi -graph /([^ /] *)){set $ path $ 1; } fastcgi_split_path_info ^(/ munin-cgi/munin-cgi-graph)(。*); fastcgi_param PATH_INFO $ fastcgi_path_info; fastcgi_pass unix:/ var/run/munin/fastcgi-munin-graph.sock; include fastcgi_params; } location ^〜/ munin-cgi/munin-cgi-html/{ #if( $ uri〜/ munin-cgi/munin-cgi-html /([^ /] *)){set $ path $ 1; } fastcgi_split_path_info ^(/ munin-cgi/munin-cgi-html)(。*); fastcgi_param PATH_INFO $ fastcgi_path_info; fastcgi_pass unix:/ var/run/munin/fastcgi-munin-html.sock; include fastcgi_params; }
/etc/init.d/munin-fcgi start
を起動し、nginxをリロードしてください。ps muninのhtmlフォルダーをvhostのフォルダーln -s /var/cache/munin/www/ /var/www/example.com/munin -v
にリンクしました。
これは、static/dynazoom.html
の定義に問題があるようです。私たちのインストールでは、
form.cgiurl_graph.value = qs.get("cgiurl_graph", "/munin-cgi/munin-cgi-graph");
あなたが持っていると思う
form.cgiurl_graph.value = qs.get("cgiurl_graph", "/usr/share/munin/cgi/munin-cgi-graph");
それがあるべきである間
form.cgiurl_graph.value = qs.get("cgiurl_graph", "/cgi-bin/munin-cgi-graph");
これがおおよそ問題のあるところだと私はまだ確信しています。ズームされたグラフのリクエストが/cgi-bin/munin-cgi-graph
で始まる限り、nginx構成は正しく見えます。 /data/munin/...
の出所がわかりません。
ブラウザ(fiddler、chrome dev tools))によって送信されているリクエストを監視し、実際に送信されているものを確認できる環境で実行してみてください。
Dynazoomの正しいコピーを編集していますか?これを確認するためだけに、目に見える簡単な変更を加えてください。
私はubintu 12.04とmunin 2.0.21で同様の問題を抱えていました。
dynazoomがmunin-cgi-graphを見つけようとしている場所を確認します。
Muninのwikiによると nginxのfcgi-graphを構成する必要がある
location ^~ /cgi-bin/munin-cgi-graph/
私の場合、Chrome開発者ツール(ネットワークタブ))でページを調べると、dynazoomが/ munin-cgiからmunin-cgi-graphを取得しようとしていることがわかりました/ munin-cgi-graph // cgi-bin/munin-cgi-graph /からではなく、グラフの代わりに404エラー
だから私はnginx設定でこの場所を変更しました:
location ^~ /munin-cgi/munin-cgi-graph/ {
access_log off;
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/fcgi-graph.sock;
include fastcgi_params;
}
同じ問題がmunin-cgi-graphの場所が間違っているようです。エラーが示すように、ブラウザのリクエストはroot /data/munin
に送信されます。
この会話に追加したいもの。 the_architechtからの情報は非常に貴重でしたが、少なくとも私にとっては欠けていたものです。
ここでCentOS 6.8を使用:
-
1)CGIファイルのパスが変更されました。locateを介して見つけることができます。
/var/www/cgi-bin/munin-cgi-graph
/var/www/cgi-bin/munin-cgi-html
開始スクリプトの行を1行ずつ移動して場所を比較し、デーモンの開始行を分解して、ファイルパスの違いを追跡するために何が問題だったかを確認する必要がありました。
-
2)ログの権限が「munin」ユーザーに設定されていたため、サイレントエラーが発生しました。これを解決するために、muninグループにwww-dataユーザーを追加し、ログファイルをchmod 664しました。
-rw-rw-r-- 1 munin munin 0 Apr 27 20:35 /var/log/munin/munin-cgi-graph.log
-rw-rw-r-- 1 munin munin 0 Apr 27 20:35 /var/log/munin/munin-cgi-html.log
ファイルのアクセス権の解放には、 Munin wiki がspawn-fcgiプロセスの最後に-nを追加し、エラーが発生したstrace -s1024が追加されました
write(2、 "[Thu Apr 27 21:47:35 2017] munin-cgi-html:Ca n't open /var/log/munin/munin-cgi-html.log(Permission denied)at/usr/share/Perl5/vendor_Perl/Log/Log4Perl/Appender/File.pm line 103.\n "、180 [Thu Apr 27 21:47:35 2017] munin-cgi-html:/ var/log/munin/muninを開けません-cgi-html.log(権限が拒否されました)/usr/share/Perl5/vendor_Perl/Log/Log4Perl/Appender/File.pm行103。
私の最後のNginxとspawn-fcgiは以下のように私の変更を加えたものです:
server {
listen $IP;
server_name $Host.example.com;
access_log /var/log/nginx/domlogs/munin-access.log;
error_log /var/log/nginx/domlogs/munin-error.log;
root /var/www/html/munin/;
index index.html;
location / {
auth_basic "Restricted";
# Create the htpasswd file with the htpasswd tool.
auth_basic_user_file /etc/nginx/htpasswd/munin;
}
location ^~ /munin-cgi/munin-cgi-graph/ {
# if ($uri ~ /munin-cgi/munin-cgi-graph/([^/]*)) { set $path $1; }
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/fastcgi-munin-graph.sock;
include fastcgi_params;
}
location ^~ /munin-cgi/munin-cgi-html/ {
# if ($uri ~ /munin-cgi/munin-cgi-html/([^/]*)) { set $path $1; }
fastcgi_split_path_info ^(/munin-cgi/munin-cgi-html)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/munin/fastcgi-munin-html.sock;
include fastcgi_params;
}
}
#! /bin/bash
### BEGIN INIT INFO
# Provides: munin-fastcgi
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts munin-fastcgi
# Description: Spawn Munin FCGI sockets for Web access
### END INIT INFO
#
# munin-fastcgi Startup script for Munin CGI services
#
# chkconfig: - 84 15
# description: Loading Munin CGI services using spawn-cgi
# HTML files and CGI.
#
# Author: Ryan Norbauer
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: David Krmpotic http://davidhq.com
# Modified: Kun Xi http://kunxi.org
# Modified: http://drumcoder.co.uk/
# Modified: http://uname.pingveno.net/
# Modified: the_architecht http://iwbyt.com/
# Modified: Jame Scott - NeCr0mStR
DESC="Munin FCGI for Graph and HTML"
SCRIPTNAME="$(tput setaf 1)Munin-FastCGI$(tput sgr0)"
PATH=/usr/local/bin/:/usr/local/sbin:$PATH
DAEMON=$(which spawn-fcgi)
FCGI_GRAPH_SOCK=/var/run/munin/fastcgi-munin-graph.sock
FCGI_HTML_SOCK=/var/run/munin/fastcgi-munin-html.sock
WWW_USER=www-data
FCGI_USER=www-data
FCGI_GROUP=www-data
FCGI_SPAWN_GRAPH=/var/www/cgi-bin/munin-cgi-graph
FCGI_SPAWN_HTML=/var/www/cgi-bin/munin-cgi-html
PIDFILE_GRAPH=/var/run/munin/fastcgi-munin-graph.pid
PIDFILE_HTML=/var/run/munin/fastcgi-munin-html.pid
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
test -x $FCGI_SPAWN_GRAPH || exit 0
test -x $FCGI_SPAWN_HTML || exit 0
start_graph() {
if [[ $(/bin/ps ax | awk '/munin-cgi-graph$/ {print $1}') ]];then
local RUNNING_PID_GRAPH=$(/bin/ps ax | awk '/munin-cgi-graph$/ {print $1}')
fi
if [[ -s ${PIDFILE_GRAPH} && ${RUNNING_PID_GRAPH} = $(cat ${PIDFILE_GRAPH}) ]];then
echo -e "\nMunin-Graph already running"
Elif [[ -n ${RUNNING_PID_GRAPH} && ${RUNNING_PID_GRAPH} != $(cat ${PIDFILE_GRAPH}) && -S ${FCGI_GRAPH_SOCK} ]];then
echo -e "\nMunin-Graph PID mismatch :: Cleaning up and starting Munin-Graph"
kill -QUIT ${RUNNING_PID_GRAPH}
sleep 1
$DAEMON -s $FCGI_GRAPH_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_GRAPH $FCGI_SPAWN_GRAPH > /dev/null 2>&1
else
$DAEMON -s $FCGI_GRAPH_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_GRAPH $FCGI_SPAWN_GRAPH > /dev/null 2>&1
echo -e "Starting Munin-Graph\n"
fi
}
start_html() {
if [[ $(/bin/ps ax | awk '/munin-cgi-html$/ {print $1}') ]];then
local RUNNING_PID_HTML=$(/bin/ps ax | awk '/munin-cgi-html$/ {print $1}')
fi
if [[ -s ${PIDFILE_HTML} && ${RUNNING_PID_HTML} = $(cat ${PIDFILE_HTML}) ]];then
echo -e "\nMunin-HTML already running"
Elif [[ -n ${RUNNING_PID_HTML} && ${RUNNING_PID_HTML} != $(cat ${PIDFILE_HTML}) && -S ${FCGI_HTML_SOCK} ]];then
echo -e "\nMunin-HTML PID mismatch :: Cleaning up and starting Munin-HTML"
kill -QUIT ${RUNNING_PID_HTML}
sleep 1
$DAEMON -s $FCGI_HTML_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_HTML $FCGI_SPAWN_HTML > /dev/null 2>&1
else
$DAEMON -s $FCGI_HTML_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_HTML $FCGI_SPAWN_HTML > /dev/null 2>&1
echo -e "Starting Munin-HTML\n"
fi
}
stop_graph() {
if [[ $(/bin/ps ax | awk '/munin-cgi-graph$/ {print $1}') ]];then
local RUNNING_PID_GRAPH=$(/bin/ps ax | awk '/munin-cgi-graph$/ {print $1}')
fi
if [[ -s ${PIDFILE_GRAPH} && $(cat ${PIDFILE_GRAPH}) = ${RUNNING_PID_GRAPH} ]];then
kill -QUIT $(cat ${PIDFILE_GRAPH})
echo -e "\nMunin-Graph stopped"
Elif [[ -z ${RUNNING_PID_GRAPH} && -s ${PIDFILE_GRAPH} ]];then
echo -e "\nGraph PID not found :: Cleaning up PID file"
rm ${PIDFILE_GRAPH}
Elif [[ -s ${PIDFILE_GRAPH} && $(cat ${PIDFILE_GRAPH}) != ${RUNNING_PID_GRAPH} ]];then
kill -QUIT ${RUNNING_PID_GRAPH}
rm ${PIDFILE_GRAPH}
echo -e "\nMunin-Graph stopped :: Cleaning up PID file"
else
echo -e "\nNo Munin-Graph process found"
fi
}
stop_html() {
if [[ $(/bin/ps ax | awk '/munin-cgi-html$/ {print $1}') ]];then
local RUNNING_PID_HTML=$(/bin/ps ax | awk '/munin-cgi-html$/ {print $1}')
fi
if [[ -s ${PIDFILE_HTML} && $(cat ${PIDFILE_HTML}) = ${RUNNING_PID_HTML} ]];then
kill -QUIT $(cat ${PIDFILE_HTML})
echo -e "\nMunin-HTML stopped"
Elif [[ -z ${RUNNING_PID_HTML} && -s ${PIDFILE_HTML} ]];then
echo -e "\nHTML PID not found :: Cleaning up PID file"
rm ${PIDFILE_HTML}
Elif [[ -s ${PIDFILE_HTML} && $(cat ${PIDFILE_HTML}) != ${RUNNING_PID_HTML} ]];then
kill -QUIT ${RUNNING_PID_HTML}
rm ${PIDFILE_HTML}
echo -e "\nMunin-HTML stopped :: Cleaning up PID file"
else
echo -e "\nNo Munin-HTML process found"
fi
}
case "$1" in
start)
echo "Starting $DESC: "
start_graph
start_html
;;
start_graph)
echo "Starting Munin-Graph"
start_graph
;;
start_html)
echo "Starting Munin-HTML"
start_html
;;
stop_graph)
echo "Stopping Munin_Graph"
stop_graph
;;
stop_html)
echo "Stopping Munin-HTML"
stop_html
;;
stop)
echo "Stopping $DESC: "
stop_graph
stop_html
;;
restart|reload)
echo "Restarting $DESC: "
stop_html
stop_graph
# One second might not be time enough for a daemon to stop,
# if this happens, d_start will fail (and dpkg will break if
# the package is being upgraded). Change the timeout if needed
# be, or change d_stop to have start-stop-daemon use --retry.
# Notice that using --retry slows down the shutdown process somewhat.
sleep 5
start_graph
start_html
;;
*)
echo "$(tput setaf 2)Usage: $SCRIPTNAME $(tput setaf 7)$(tput setab 0){start_graph|start_html|stop_graph|stop_html|start|stop|restart|reload}$(tput sgr0) " >&2
exit 3
;;
esac
exit $?