NAME Net::HAProxy - control HAProxy through a socket VERSION version 0.001 SYNOPSIS use Try::Tiny; use Net::HAProxy; my $haproxy = Net::HAProxy->new( socket => '/var/run/haproxy-services.sock', timeout => 1 # default ); # dump statistics print Dumper $haproxy->stats; # specify which statistics to list print $haproxy->stats({ iid => 2, sid => 1, type => -1}); # info about haproxy status print Dumper $haproxy->info; try { $haproxy->enable_server('pxname', 'svname'); } catch { print "Couldn't enable server: $_\n"; }; try { $haproxy->disable_server('pxname', 'svname'); } catch { print "Couldn't disable server: $_\n"; }; try { $haproxy->set_weight('pxname', 'svname', 50); } catch { print "Couldn't set weighting: $_\n"; }; METHODS stats Arguments: ({ iid => -1, sid => -1, type => -1}) sid => service id, -1 for all services (default). iid => unique proxy id, -1 for all proxies (default). type => 1 for frontends, 2 for backends, 4 for servers, -1 for all (default) these values can be ORed, for example: 1 + 2 = 3 -> frontend + backend. 1 + 2 + 4 = 7 -> frontend + backend + server. Returns: array of hashes, keys described below field descriptions This field documentation was borrowed from the HAProxy 1.4 docs http://haproxy.1wt.eu/download/1.4/doc/configuration.txt If your using an earlier version of HAProxy this should still work, please check the docs for the right field descriptions http://haproxy.1wt.eu/download/1.3/doc/configuration.txt act: server is active (server), number of active servers (backend) bck: server is backup (server), number of backup servers (backend) bin: bytes in bout: bytes out check_code: layer5-7 code, if available check_duration: time in ms took to finish last health check check_status: status of last health check, one of: UNK -> unknown INI -> initializing SOCKERR -> socket error L4OK -> check passed on layer 4, no upper layers testing enabled L4TMOUT -> layer 1-4 timeout L4CON -> layer 1-4 connection problem, for example "Connection refused" (tcp rst) or "No route to host" (icmp) L6OK -> check passed on layer 6 L6TOUT -> layer 6 (SSL) timeout L6RSP -> layer 6 invalid response - protocol error L7OK -> check passed on layer 7 L7OKC -> check conditionally passed on layer 7, for example 404 with disable-on-404 L7TOUT -> layer 7 (HTTP/SMTP) timeout L7RSP -> layer 7 invalid response - protocol error L7STS -> layer 7 response error, for example HTTP 5xx chkdown: number of UP->DOWN transitions chkfail: number of failed checks cli_abrt: number of data transfers aborted by the client downtime: total downtime (in seconds) dreq: denied requests dresp: denied responses econ: connection errors ereq: request errors eresp: response errors (among which srv_abrt) hanafail: failed health checks details hrsp_1xx: http responses with 1xx code hrsp_2xx: http responses with 2xx code hrsp_3xx: http responses with 3xx code hrsp_4xx: http responses with 4xx code hrsp_5xx: http responses with 5xx code hrsp_other: http responses with other codes (protocol error) iid: unique proxy id lastchg: last status change (in seconds) lbtot: total number of times a server was selected pid: process id (0 for first instance, 1 for second, ...) pxname: proxy name qcur: current queued requests qlimit: queue limit qmax: max queued requests rate_lim: limit on new sessions per second rate_max: max number of new sessions per second rate: number of sessions per second over last elapsed second req_rate: HTTP requests per second over last elapsed second req_rate_max: max number of HTTP requests per second observed req_tot: total number of HTTP requests received scur: current sessions sid: service id (unique inside a proxy) slim: sessions limit smax: max sessions srv_abrt: number of data transfers aborted by the server (inc. in eresp) status: status (UP/DOWN/NOLB/MAINT/MAINT(via)...) stot: total sessions svname: service name (FRONTEND for frontend, BACKEND for backend, any name for server) throttle: warm up status tracked: id of proxy/server if tracking is enabled type (0=frontend, 1=backend, 2=server, 3=socket) weight: server weight (server), total weight (backend) wredis: redispatches (warning) wretr: retries (warning) info returns a hash set_weight Arguments: proxy name (pxname), service name (svname), integer (0-100) Dies on invalid proxy / service name / weighting enable_server Arguments: proxy name (pxname), service name (svname) Dies on invalid proxy / service name. disable_server Arguments: proxy name (pxname), service name (svname) Dies on invalid proxy / service name. errors (EXPERIMENTAL) list errors, currently returns raw response sessions (EXPERIMENTAL) show current sessions currently returns raw response AUTHOR robin edwards COPYRIGHT AND LICENSE This software is copyright (c) 2011 by robin edwards. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.