[MAJOR] proto_uxst rework -> SNMP support
Currently there is a ~16KB limit for a data size passed via unix socket.
It is caused by a trivial bug ttat is going to fixed soon, however
in most cases there is no need to dump a full stats.
This patch makes possible to select a scope of dumped data by extending
current "show stat" to "show stat [<iid> <type> <sid>]":
- iid is a proxy id, -1 to dump all proxies
- type selects type of dumpable objects: 1 for frontend, 2 for backend, 4 for
server, -1 for all types. Values can be ORed, for example:
1+2=3 -> frontend+backend.
1+2+4=7 -> frontend+backend+server.
- sid is a service id, -1 to dump everything from the selected proxy.
To do this I implemented a new session flag (SN_STAT_BOUND), added three
variables in data_ctx.stats (iid, type, sid), modified dumpstats.c and
completely revorked the process_uxst_stats: now it waits for a "\n"
terminated string, splits args and uses them. BTW: It should be quite easy
to add new commands, for example to enable/disable servers, the only problem
I can see is a not very lucky config name (*stats* socket). :|
During the work I also fixed two bug:
- s->flags were not initialized for proto_uxst
- missing comma if throttling not enabled (caused by a stupid change in
"Implement persistent id for proxies and servers")
Other changes:
- No more magic type valuse, use STATS_TYPE_FE/STATS_TYPE_BE/STATS_TYPE_SV
- Don't memset full s->data_ctx (it was clearing s->data_ctx.stats.{iid/type/sid},
instead initialize stats.sv & stats.sv_st (stats.px and stats.px_st were already
initialized)
With all that changes it was extremely easy to write a short perl plugin
for a perl-enabled net-snmp (also included in this patch).
29385 is my PEN (Private Enterprise Number) and I'm willing to donate
the SNMPv2-SMI::enterprises.29385.106.* OIDs for HAProxy if there
is nothing assigned already.
diff --git a/doc/configuration.txt b/doc/configuration.txt
index a2c97e3..11360ba 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -4035,10 +4035,10 @@
8. bin: bytes in
9. bout: bytes out
10. dreq: denied requests
- 11. dresp: denied responces
+ 11. dresp: denied responses
12. ereq: request errors
13. econ: connection errors
- 14. eresp: responce errors
+ 14. eresp: response errors
15. wretr: retries (warning)
16. wredis: redispatches (warning)
17. status: status (UP/DOWN/...)
@@ -4058,6 +4058,19 @@
31. tracked: id of proxy/server if tracking is enabled
32. type (0=frontend, 1=backend, 2=server)
+2.8) Unix Socket commands
+
+ - "show stat [<iid> <type> <sid>]": dump statistics in the cvs format. By
+ passing id, type and sid it is possible to dump only selected items:
+ - iid is a proxy id, -1 to dump everything
+ - type selects type of dumpable objects: 1 for frontend, 2 for backend, 4 for
+ server, -1 for everything. Values can be ORed, for example:
+ 1+2=3 -> frontend+backend.
+ 1+2+4=7 -> frontend+backend+server.
+ - sid is a service id, -1 to dump everything from the selected proxy.
+
+ - "show info": dump info about current haproxy status.
+
/*
* Local variables:
* fill-column: 79