haproxy

package module
v0.0.0-...-6d02238 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2021 License: MIT Imports: 10 Imported by: 0

README

GoDoc codebeat badge

go-haproxy

Go library for interacting with HAProxys stats socket.

Usage

Initialize a client object. Supported address schemas are tcp:// and unix:///

client := &haproxy.HAProxyClient{
  Addr: "tcp://localhost:9999",
}

Fetch results for a built in command(currently supports show stats and show info):

stats, err := client.Stats()
for _, i := range stats {
	fmt.Printf("%s: %s\n", i.SvName, i.Status)
}

Or retrieve the result body from an arbitrary command string:

result, err := h.RunCommand("show info")
fmt.Println(result.String())

Documentation

Overview

Package haproxy provides a minimal client for communicating with, and issuing commands to, HAproxy over a network or file socket.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddServer

func AddServer(h HAProxy, backend string, server string, addr string, port int) (addServerResponse string, err error)

func DelServer

func DelServer(h HAProxy, backend string, server string) (delServerResponse string, err error)

func SetServerState

func SetServerState(h HAProxy, backend string, server string, serverState ServerState) (setServerStateResonse string, err error)

Equivalent to HAProxy "set server <backend>/<server> state [ ready | drain | maint ]" command.

Types

type HAProxy

type HAProxy interface {
	RunCommand(cmd string) (*bytes.Buffer, error)
}

type HAProxyClient

type HAProxyClient struct {
	Addr    string
	Timeout int
	// contains filtered or unexported fields
}

HAProxyClient is the main structure of the library.

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.

type ServerState

type ServerState uint64
const (
	READY ServerState = iota
	DRAIN
	MAINT
)

type ShowBackendResponse

type ShowBackendResponse struct {
	Name string `csv:"# name"`
}

Response from HAProxy "show backend" command.

func ShowBackend

func ShowBackend(h HAProxy) (showBackendResponses []*ShowBackendResponse, err error)

Equivalent to HAProxy "show backend" command.

type ShowInfoResponse

type ShowInfoResponse 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.

func ShowInfo

func ShowInfo(h HAProxy) (*ShowInfoResponse, error)

Equivalent to HAProxy "show info" command.

type ShowServersStateResponse

type ShowServersStateResponse struct {
	BeID                   uint64         `csv:"be_id"`
	BeName                 string         `csv:"be_name"`
	SrvID                  uint64         `csv:"srv_id"`
	SrvName                string         `csv:"srv_name"`
	SrvAddr                string         `csv:"srv_addr"`
	SrvOpState             SrvOpState     `csv:"srv_op_state"`
	SrvAdminState          SrvAdminState  `csv:"srv_admin_state"`
	SrvUweight             uint64         `csv:"srv_uweight"`
	SrvIweight             uint64         `csv:"srv_iweight"`
	SrvTimeSinceLastChange uint64         `csv:"srv_time_since_last_change"`
	SrvCheckStatus         uint64         `csv:"srv_check_status"`
	SrvCheckResult         SrvCheckResult `csv:"srv_check_result"`
	SrvCheckHealth         uint64         `csv:"srv_check_health"`
	SrvCheckState          SrvCheckState  `csv:"srv_check_state"`
	SrvAgentState          SrvAgentState  `csv:"srv_agent_state"`
	BkFForcedID            uint64         `csv:"bk_f_forced_id"`
	SrvFForced_id          uint64         `csv:"srv_f_forced_id"`
	SrvFQDN                string         `csv:"srv_fqdn"`
	SrvPort                uint64         `csv:"srv_port"`
	SrvRecord              string         `csv:"srvrecord"`
	SrvUseSSL              uint64         `csv:"srv_use_ssl"`
	SrvCheckPort           uint64         `csv:"srv_check_port"`
	SrvCheckAddr           string         `csv:"srv_check_addr"`
	SrvAgentAddr           string         `csv:"srv_agent_addr"`
	SrvAgentPort           uint64         `csv:"srv_agent_port"`
}

Response from HAProxy "show servers state" command.

func ShowServersState

func ShowServersState(h HAProxy) (serversState []*ShowServersStateResponse, err error)

Equivalent to HAProxy "show servers state" command.

type ShowStatResponse

type ShowStatResponse 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     uint64 `csv:"check_desc"`
	AgentDesc     uint64 `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.

func ShowStat

func ShowStat(h HAProxy) (stats []*ShowStatResponse, err error)

Equivalent to HAProxy "show stat" command.

type SrvAdminState

type SrvAdminState uint64
const (
	SRV_ADMF_FMAINT SrvAdminState = 0x01
	SRV_ADMF_IMAINT SrvAdminState = 0x02
	SRV_ADMF_CMAINT SrvAdminState = 0x04
	SRV_ADMF_FDRAIN SrvAdminState = 0x08
	SRV_ADMF_IDRAIN SrvAdminState = 0x10
	SRV_ADMF_RMAINT SrvAdminState = 0x20
	SRV_ADMF_HMAINT SrvAdminState = 0x40
)

type SrvAgentState

type SrvAgentState SrvCheckState
const (
	CHK_ST_AGENT SrvAgentState = 0x10
)

type SrvCheckResult

type SrvCheckResult uint64
const (
	CHK_RES_UNKNOWN SrvCheckResult = iota
	CHK_RES_NEUTRAL
	CHK_RES_FAILED
	CHK_RES_PASSED
	CHK_RES_CONDPASS
)

type SrvCheckState

type SrvCheckState uint64
const (
	CHK_ST_INPROGRESS SrvCheckState = 0x01
	CHK_ST_CONFIGURED SrvCheckState = 0x02
	CHK_ST_ENABLED    SrvCheckState = 0x04
	CHK_ST_PAUSED     SrvCheckState = 0x08
)

type SrvOpState

type SrvOpState uint64
const (
	SRV_ST_STOPPED SrvOpState = iota
	SRV_ST_STARTING
	SRV_ST_RUNNING
	SRV_ST_STOPPING
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL