Hi.

I have a feature request: from system administrator point of view it would be 
nice to have counters for each type of error log message.

For example right now nginx error.log consists of myriad of different error 
message formats:
        open() “%s” failed
        directory index of “%s” is forbidden
        SSL_write() failed
        SSL_do_handshake()
        zero size but in output chain
        client intended to send too large body

To plot that stuff on a dashboard sysadmin needs to increase error_log 
verbosity, write custom daemon that tails it and then manually write parser for 
every “interesting” log entry.
It would be nice if `ngx_log_error()` did all that work for us.

So that one could just specify following config:
        location /error_status {
                error_status_format csv;
                error_status;
        }
and then following command…
        $ curl localhost/error_status
...would return:
        core.zero_size_buf,2
        http.module.autoindex.open.failed,3
        http.core.directory_listing_forbidden,5
        http.core.body_too_large,7
        ssl.alerts.downstream.recv.certificate_expired,11
        ssl.alerts.downstream.sent.close_notify,13
        ssl.write.failed,17
        ssl.handshake.failed,19

Apache Traffic Server for example has an abstraction for error stats so we 
quickly implemented statistics for various TLS alerts[1] received from 
clients/upstreams (after that rolling out of preferred ciphersuite list changes 
and openssl upgrades became basically painless).

FreeBSD for example has a nice kernel API for counters: counter(9)[2]. Similar 
approach can be applied to nginx: with each worker maintaining it’s counters in 
separate part of shared memory, so updates to them can be lockless (and even 
non-atomic because there is no preemption inside one worker).

So questions are:
* Would Nginx Inc. be interested in adding such functionality?
* How much it interferes with Nginx Plus selling points? If somebody else 
writes that code, will it be possible to "upstream” it?


[1] https://issues.apache.org/jira/browse/TS-3007
[2] 
https://www.freebsd.org/cgi/man.cgi?query=counter&apropos=0&sektion=9&manpath=FreeBSD+11-current&format=html

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to