Munin plugin for nginx

I’m having some trouble getting the nginx plugin working for munin.
I’ve added the following to nginx config and restarted:

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

I’ve added the following munin config:

[nginx*]
env.url http://localhost/nginx_status

Unfortunately I still get:

munin-run nginx_request

request.value U

munin-run nginx_status

total.value U
reading.value U
writing.value U
waiting.value U

If I remove the allow/deny, I can browse to /nginx_status and I get:

Active connections: 13
server accepts handled requests
15 15 16
Reading: 0 Writing: 1 Waiting: 12

What could be the problem?

  • Grant

----- Original Message -----

I’ve added the following munin config:
reading.value U
What could be the problem?
the munin plugin is broken or not getting the status information.

Try stracing the munin-run, network capature or turning on the access
logs on /nginx_status just to be sure.


Daniel Black, Engineer @ Open Query (http://openquery.com)
Remote expertise & maintenance for MySQL/MariaDB server environments.

Perhaps munin connects over ipv6? Can you allow ::1?

I’ve added the following munin config:
reading.value U
What could be the problem?
listen 127.0.0.1:80 default;
deny all;
Active connections: 1

then

munin-run nginx_status

should run just fine.

You fixed it! Reducing it to the simplest config that still works, I
found that the location /nginx_status block doesn’t work with munin
inside of any other server block. It only works inside its own server
block like so:

server {
location ~ ^/nginx_status$ {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}

Is this a munin bug?

Thank you!

  • Grant

On Mon, 2013-06-17 at 16:34 +1000, Daniel Black wrote:

}

munin-run nginx_status

Reading: 0 Writing: 1 Waiting: 12

What could be the problem?

the munin plugin is broken or not getting the status information.

Try stracing the munin-run, network capature or turning on the access logs on
/nginx_status just to be sure.

Well, I run it all over the place with no problem. I usually set it up
only on localhost

server {
listen 127.0.0.1:80 default;
server_name localhost;
root /var/www;

    access_log  /var/log/nginx/localhost.access.log;
    error_log  /var/log/nginx/localhost.error.log;

    location ~ /nginx_status {
            stub_status on;
            access_log   off;
            allow 127.0.0.1;
            deny all;
    }

}

( in /etc/nginx/conf.d/stub, or /etc/nginx/sites-available/stub,
symlinked to …/sites-enabled/stub depending on preference ) and restart
nginx.

Then test this bit works…

$ wget -O - http://localhost/nginx_status 2> /dev/null
Active connections: 1
server accepts handled requests
67892 67892 70215
Reading: 0 Writing: 1 Waiting: 0

Some os’s seem to like

[nginx*]
env.url http://localhost/nginx_status

added to /etc/munin/plugin-conf.d/munin_node

then

munin-run nginx_status

should run just fine.

Steve


Steve H. BSc(Hons) MNZCS

Linkedin: http://www.linkedin.com/in/steveholdoway
Skype: sholdowa

My config looks like:

/etc/munin/plugin-conf.d/munin-node


[nginx_*]
user root

/etc/nginx/sites-enabled/default

munin nginx status (request/ connections handeled)

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

This runs for me very well, so try to edit your
/etc/munin/plugin-conf.d/munin-node.
You can also Debug by

munin-configure --suggest

Am 18.06.2013 15:42, schrieb Grant:

Replace

[nginx*]
env.url http://localhost/nginx_status

with
[nginx_*]
user root

my nginx default file

egrep -v “(^$|^#)” /etc/nginx/sites-enabled/default
server {
listen 80; ## listen for ipv4
listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www;
index index.html index.htm;
}
location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}
location /images {
root /usr/share;
autoindex on;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

    #error_page  404  /404.html;
    # redirect server error pages to the static page /50x.html
    #
    #error_page   500 502 503 504  /50x.html;
    #location = /50x.html {
    #       root   /var/www/nginx-default;
    #}
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
            #proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 

127.0.0.1:9000
#
#location ~ .php$ {
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME
/scripts$fastcgi_script_name;
#includefastcgi_params;
#}
# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /.ht {
#deny all;
#}
}

Am 18.06.2013 16:10, schrieb Grant:

My config looks like:

/etc/munin/plugin-conf.d/munin-node


[nginx_*]
user root

/etc/nginx/sites-enabled/default

I don’t have /etc/nginx/sites-enabled/ at all. What kind of stuff is
in the default file? I’m on Gentoo.

  • Grant

Replace

[nginx*]
env.url http://localhost/nginx_status

with
[nginx_*]
user root

Thanks!

  • Grant