Documentation
¶
Overview ¶
Package haproxy provides a minimal client for communicating with, and issuing commands to, HAproxy over a network or file socket.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HAProxyClient ¶
HAProxyClient is the main structure of the library.
func (*HAProxyClient) Info ¶
func (h *HAProxyClient) Info() (*Info, error)
Equivalent to HAProxy "show info" command.
Example ¶
client := &haproxy.HAProxyClient{ Addr: "unix:///var/run/haproxy.sock", } info, err := client.Info() if err != nil { fmt.Println(err) return } fmt.Printf("%s version %s\n", info.Name, info.Version)
Output: HAProxy version 1.6.3
func (*HAProxyClient) RunCommand ¶
func (h *HAProxyClient) RunCommand(cmd string) (*bytes.Buffer, error)
RunCommand is the entrypoint to the client. Sends an arbitray command string to HAProxy.
Example ¶
client := &haproxy.HAProxyClient{ Addr: "unix:///var/run/haproxy.sock", } result, err := client.RunCommand("show info") if err != nil { fmt.Println(err) return } fmt.Println(result.String())
Output:
func (*HAProxyClient) Stats ¶
func (h *HAProxyClient) Stats() (stats []*Stat, err error)
Equivalent to HAProxy "show stat" command.
Example ¶
client := &haproxy.HAProxyClient{ Addr: "unix:///var/run/haproxy.sock", } stats, err := client.Stats() if err != nil { fmt.Println(err) return } for _, s := range stats { fmt.Printf("%s: %s\n", s.SvName, s.Status) }
Output: static: DOWN app1: UP app2: UP ...
type Info ¶
type Info struct { Name string `kv:"Name"` Version string `kv:"Version"` ReleaseDate string `kv:"Release_date"` Nbthread uint64 `kv:"Nbthread"` Nbproc uint64 `kv:"Nbproc"` ProcessNum uint64 `kv:"Process_num"` Pid uint64 `kv:"Pid"` Uptime string `kv:"Uptime"` UptimeSec uint64 `kv:"Uptime_sec"` MemMaxMB uint64 `kv:"Memmax_MB"` PoolAllocMB uint64 `kv:"PoolAlloc_MB"` PoolUsedMB uint64 `kv:"PoolUsed_MB"` PoolFailed uint64 `kv:"PoolFailed"` UlimitN uint64 `kv:"Ulimit-n"` Maxsock uint64 `kv:"Maxsock"` Maxconn uint64 `kv:"Maxconn"` HardMaxconn uint64 `kv:"Hard_maxconn"` CurrConns uint64 `kv:"CurrConns"` CumConns uint64 `kv:"CumConns"` CumReq uint64 `kv:"CumReq"` MaxSslConns uint64 `kv:"MaxSslConns"` CurrSslConns uint64 `kv:"CurrSslConns"` CumSslConns uint64 `kv:"CumSslConns"` Maxpipes uint64 `kv:"Maxpipes"` PipesUsed uint64 `kv:"PipesUsed"` PipesFree uint64 `kv:"PipesFree"` ConnRate uint64 `kv:"ConnRate"` ConnRateLimit uint64 `kv:"ConnRateLimit"` MaxConnRate uint64 `kv:"MaxConnRate"` SessRate uint64 `kv:"SessRate"` SessRateLimit uint64 `kv:"SessRateLimit"` MaxSessRate uint64 `kv:"MaxSessRate"` SslRate uint64 `kv:"SslRate"` SslRateLimit uint64 `kv:"SslRateLimit"` MaxSslRate uint64 `kv:"MaxSslRate"` SslFrontendKeyRate uint64 `kv:"SslFrontendKeyRate"` SslFrontendMaxKeyRate uint64 `kv:"SslFrontendMaxKeyRate"` SslFrontendSessionReusePct uint64 `kv:"SslFrontendSessionReuse_pct"` SslBackendKeyRate uint64 `kv:"SslBackendKeyRate"` SslBackendMaxKeyRate uint64 `kv:"SslBackendMaxKeyRate"` SslCacheLookups uint64 `kv:"SslCacheLookups"` SslCacheMisses uint64 `kv:"SslCacheMisses"` CompressBpsIn uint64 `kv:"CompressBpsIn"` CompressBpsOut uint64 `kv:"CompressBpsOut"` CompressBpsRateLim uint64 `kv:"CompressBpsRateLim"` //ZlibMemUsage uint64 `kv:"ZlibMemUsage"` //MaxZlibMemUsage uint64 `kv:"MaxZlibMemUsage"` Tasks uint64 `kv:"Tasks"` RunQueue uint64 `kv:"Run_queue"` IdlePct uint64 `kv:"Idle_pct"` Node string `kv:"node"` Stopping uint64 `kv:"Stopping"` Jobs uint64 `kv:"Jobs"` UnstoppableJobs uint64 `kv:"Unstoppable Jobs"` Listeners uint64 `kv:"Listeners"` ActivePeers uint64 `kv:"ActivePeers"` ConnectedPeers uint64 `kv:"ConnectedPeers"` DroppedLogs uint64 `kv:"DroppedLogs"` BusyPolling uint64 `kv:"BusyPolling"` FailedResolutions uint64 `kv:"FailedResolutions"` TotalBytesOut uint64 `kv:"TotalBytesOut"` BytesOutRate uint64 `kv:"BytesOutRate"` DebugCommandsIssued uint64 `kv:"DebugCommandsIssued"` }
Response from HAProxy "show info" command.
type Stat ¶
type Stat struct { PxName string `csv:"# pxname"` SvName string `csv:"svname"` Qcur uint64 `csv:"qcur"` Qmax uint64 `csv:"qmax"` Scur uint64 `csv:"scur"` Smax uint64 `csv:"smax"` Slim uint64 `csv:"slim"` Stot uint64 `csv:"stot"` Bin uint64 `csv:"bin"` Bout uint64 `csv:"bout"` Dreq uint64 `csv:"dreq"` Dresp uint64 `csv:"dresp"` Ereq uint64 `csv:"ereq"` Econ uint64 `csv:"econ"` Eresp uint64 `csv:"eresp"` Wretr uint64 `csv:"wretr"` Wredis uint64 `csv:"wredis"` Status string `csv:"status"` Weight uint64 `csv:"weight"` Act uint64 `csv:"act"` Bck uint64 `csv:"bck"` ChkFail uint64 `csv:"chkfail"` ChkDown uint64 `csv:"chkdown"` Lastchg uint64 `csv:"lastchg"` Downtime uint64 `csv:"downtime"` Qlimit uint64 `csv:"qlimit"` Pid uint64 `csv:"pid"` Iid uint64 `csv:"iid"` Sid uint64 `csv:"sid"` Throttle uint64 `csv:"throttle"` Lbtot uint64 `csv:"lbtot"` Tracked uint64 `csv:"tracked"` Type uint64 `csv:"type"` Rate uint64 `csv:"rate"` RateLim uint64 `csv:"rate_lim"` RateMax uint64 `csv:"rate_max"` CheckStatus string `csv:"check_status"` CheckCode uint64 `csv:"check_code"` CheckDuration uint64 `csv:"check_duration"` Hrsp1xx uint64 `csv:"hrsp_1xx"` Hrsp2xx uint64 `csv:"hrsp_2xx"` Hrsp3xx uint64 `csv:"hrsp_3xx"` Hrsp4xx uint64 `csv:"hrsp_4xx"` Hrsp5xx uint64 `csv:"hrsp_5xx"` HrspOther uint64 `csv:"hrsp_other"` Hanafail uint64 `csv:"hanafail"` ReqRate uint64 `csv:"req_rate"` ReqRateMax uint64 `csv:"req_rate_max"` ReqTot uint64 `csv:"req_tot"` CliAbrt uint64 `csv:"cli_abrt"` SrvAbrt uint64 `csv:"srv_abrt"` CompIn uint64 `csv:"comp_in"` CompOut uint64 `csv:"comp_out"` CompByp uint64 `csv:"comp_byp"` CompRsp uint64 `csv:"comp_rsp"` LastSess int64 `csv:"lastsess"` LastChk string `csv:"last_chk"` LastAgt uint64 `csv:"last_agt"` Qtime uint64 `csv:"qtime"` Ctime uint64 `csv:"ctime"` Rtime uint64 `csv:"rtime"` Ttime uint64 `csv:"ttime"` AgentStatus uint64 `csv:"agent_status"` AgentCode uint64 `csv:"agent_code"` AgentDuration uint64 `csv:"agent_duration"` CheckDesc string `csv:"check_desc"` AgentDesc string `csv:"agent_desc"` CheckRise uint64 `csv:"check_rise"` CheckFall uint64 `csv:"check_fall"` CheckHealth uint64 `csv:"check_health"` AgentRise uint64 `csv:"agent_rise"` AgentFall uint64 `csv:"agent_fall"` AgentHealth uint64 `csv:"agent_health"` Addr string `csv:"addr"` Cookie uint64 `csv:"cookie"` Mode string `csv:"mode"` Algo string `csv:"algo"` ConnRate uint64 `csv:"conn_rate"` ConnRateMax uint64 `csv:"conn_rate_max"` ConnTot uint64 `csv:"conn_tot"` Intercepted uint64 `csv:"intercepted"` Dcon uint64 `csv:"dcon"` Dses uint64 `csv:"dses"` Wrew uint64 `csv:"wrew"` Connect uint64 `csv:"connect"` Reuse uint64 `csv:"reuse"` CacheLookups uint64 `csv:"cache_lookups"` CacheHits uint64 `csv:"cache_hits"` SrvIcur uint64 `csv:"srv_icur"` SrcIlim uint64 `csv:"src_ilim"` QtimeMax uint64 `csv:"qtime_max"` CtimeMax uint64 `csv:"ctime_max"` RtimeMax uint64 `csv:"rtime_max"` TtimeMax uint64 `csv:"ttime_max"` Eint uint64 `csv:"eint"` IdleConnCur uint64 `csv:"idle_conn_cur"` SafeConnCur uint64 `csv:"safe_conn_cur"` UsedConnCur uint64 `csv:"used_conn_cur"` NeedConnEst uint64 `csv:"need_conn_est"` }
Response from HAProxy "show stat" command.
Click to show internal directories.
Click to hide internal directories.