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
Dumper
$haproxy
->stats;
# specify which statistics to list
$haproxy
->stats({
iid
=> 2,
sid
=> 1,
type
=> -1});
# info about haproxy status
Dumper
$haproxy
->info;
try
{
$haproxy
->enable_server(
'pxname'
,
'svname'
);
}
catch
{
"Couldn't enable server: $_\n"
;
};
try
{
$haproxy
->disable_server(
'pxname'
,
'svname'
);
}
catch
{
"Couldn't disable server: $_\n"
;
};
try
{
$haproxy
->set_weight(
'pxname'
,
'svname'
, 50);
}
catch
{
"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 <robin.ge@gmail.com>
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.