我无法使Munindynamic缩放工作。 我确定这个问题与Nginxconfiguration有关。 任何生成缩放图的尝试都会在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 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 $networking
#必需的 - 停止:$ remote_fs $networking
#默认开始:2 3 4 5
#默认停止:0 1 6
#简短说明:启动munin-fastcgi
#描述:孵化穆宁FCGIsocketsnetworking访问
### END INIT INFO
#
#munin-fastcgi Munin CGI服务的启动脚本
#
#chkconfig: - 84 15
#description:使用spawn-cgi加载Munin CGI服务
#HTML文件和CGI。
#
#作者:Ryan Norbauer
#修改:Geoffrey Grosenbach http://topfunky.com
#修改:David Krmpotic http://davidhq.com
#修改:昆玺http://kunxi.org
#修改:http://drumcoder.co.uk/
#修改:http://uname.pingveno.net/
#修改:the_architecht http://iwbyt.com/
PATH =在/ usr / local / bin目录/:在/ usr / local / sbin中:$ PATH
DAEMON = $(其中spawn-fcgi)
FCGI_GRAPH_SOCK =的/ var /运行/穆宁/ fastcgi的-穆宁-graph.sock
FCGI_HTML_SOCK =的/ var /运行/穆宁/ fastcgi的-穆宁-html.sock
WWW_USER = WWW的数据
FCGI_USER = WWW的数据
FCGI_GROUP = WWW的数据
FCGI_SPAWN_GRAPH = / usr / lib中/穆宁/ CGI /穆宁-CGI-图表
FCGI_SPAWN_HTML = / usr / lib中/穆宁/ CGI /穆宁-CGI-HTML
PIDFILE_GRAPH =在/ var /运行/穆宁/ fastcgi-munin-graph.pid
PIDFILE_HTML =在/ var /运行/穆宁/ fastcgi-munin-html.pid
DESC =“graphics和HTML的Munin FCGI”
#如果软件包已被删除,请格外退出。
testing-x $ DAEMON || 退出0
testing-x $ FCGI_SPAWN_GRAPH || 退出0
testing-x $ FCGI_SPAWN_HTML || 退出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 || 回声“图已经运行”
$ DAEMON -s $ FCGI_HTML_SOCK -U $ WWW_USER -u $ FCGI_USER -g $ FCGI_GROUP -P $ PIDFILE_HTML $ FCGI_SPAWN_HTML 2> / dev / null || 回声“HTML已经运行”
}
停止() {
kill -QUIT`cat $ PIDFILE_GRAPH` || 回声“图表不能运行”
kill -QUIT`cat $ PIDFILE_HTML` || 回声“HTML不运行”
}
重新开始() {
kill -HUP`cat $ PIDFILE_GRAPH` || 回声“无法重新加载graphics”
kill -HUP`cat $ PIDFILE_HTML` || 回声“无法重新加载HTML”
}
在“1美元”的情况下
开始)
回声“起始$ DESC:”
开始
;;
停止)
回声“停止$ DESC:”
停止
;;
重新启动|重装)
回声“重新启动$ DESC:”
停止
#一秒可能不够时间守护进程停止,
#如果发生这种情况,d_start将会失败(如果.dpkg将会中断
#包正在升级)。 如果需要更改超时
#be,或者改变d_stop让start-stop-daemon使用--retry。
#请注意,使用--retry会减慢关机过程。
睡1
开始
;;
*)
echo“用法:$ SCRIPTNAME {start | stop | restart | reload}”>&2
出口3
;;
ESAC
退出$?
将上面的权限755安装在/etc/init.d/munin-fcgi下
/etc/nginx/conf.d/example.com.conf ,将其添加到server { }块中。 您可以更改允许您安装的ip块。 我在本地服务器上做了这个,并希望munin图只能在本地使用。
位置/ munin {
#别名/ var / cache / munin / www;
index index.html;
#include /etc/nginx/php.conf;
#access_log off;
允许127.0.0.1;
允许192.168.0.0/16;
否认一切;
}
位置^〜/ 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;
包括fastcgi_params;
}
位置^〜/ 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;
包括fastcgi_params;
}
/etc/init.d/munin-fcgi start并重新加载nginx,那么你很好。 ps我没有连接munin的html文件夹到我的虚拟主机的文件夹: 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开头,nginxconfiguration看起来就是正确的。 我没有看到/data/munin/...是从哪里来的。
尝试在可以监视浏览器发送的请求(fiddler,chrome开发工具)的环境中运行并查看实际发送的内容。
你确定你正在编辑dynazoom的正确副本吗? 尝试做一个微不足道的可见变化来validation这一点。
我有与munin 2.0.21的Ubuntu 12.04类似的问题。
检查dynazoom在哪里试图findmunin-cgi-graph。
Munin的wiki说你应该configuration你的nginx fcgi-graph
location ^~ /cgi-bin/munin-cgi-graph/
在我的情况下,当我用Chrome开发人员工具(networking选项卡)检查页面时,发现dynazoom试图从/ munin-cgi / munin-cgi-graph /不从/ cgi-bin / munin-cgi-图/ /它得到404 erorr而不是graphics
所以我只是改变了这个位置在nginxconfiguration:
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的信息是非常宝贵的,但至less对我来说是一个缺失的东西。
在这里使用CentOS 6.8:
–
1)更改了CGI文件的path,这些path可以通过locatefind:
/var/www/cgi-bin/munin-cgi-graph /var/www/cgi-bin/munin-cgi-html
我必须在启动脚本中逐行进行比较,并打破守护进程的开始行,以查看哪些错误让我追踪文件path差异。
–
2)日志的权限被设置为“munin”用户,导致了一个沉默的错误的种类。 为了解决这个问题,我把www-data用户添加到了munin组和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维基在spawn-fcgi进程开始和strace -s1024结尾添加了-n,这给出了错误
write(2,[Thu Apr 27 21:47:35 2017] munin-cgi-html:无法在/ usr / share /下打开/var/log/munin/munin-cgi-html.log(Permission denied) 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(Permission denied)at /usr/share/perl5/vendor_perl/Log/Log4perl/Appender/File.pm line 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 $?