munin plugin for nginx

basti black.fledermaus at arcor.de
Tue Jun 18 14:29:11 UTC 2013


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
>
>
>> ...
>> ## 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:
>>>>>> 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?
>>>>> 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.
>>> 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
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx



More information about the nginx mailing list