Frontend OperationsΒΆ
A quick way to check if a certain frontend exists
>>> frontends = hap.frontends()
>>> if 'frontend2_proc34' in frontends:
... print('have it')
...
have it
>>> if 'frontend2_proc34foo' in frontends:
... print('have it')
...
>>>
Change maximum connections to all frontends
>>> frontends = hap.frontends()
>>> for f in frontends:
... print(f.maxconn, f.name)
... f.setmaxconn(10000)
... print(f.maxconn, f.name)
... print('---------------')
...
3000 haproxy-stats2
True
10000 haproxy-stats2
---------------
6000 frontend1_proc34
True
20000 frontend1_proc34
---------------
6000 frontend2_proc34
True
20000 frontend2_proc34
---------------
3000 frontend_proc2
True
10000 frontend_proc2
---------------
3000 haproxy-stats
True
10000 haproxy-stats
---------------
3000 haproxy-stats3
True
10000 haproxy-stats3
---------------
3000 haproxy-stats4
True
10000 haproxy-stats4
---------------
3000 frontend_proc1
True
10000 frontend_proc1
---------------
Do the same only on specific frontend
>>> frontend = hap.frontend('frontend1_proc34')
>>> frontend.maxconn
20000
>>> frontend.setmaxconn(50000)
True
>>> frontend.maxconn
100000
Disable and enable a frontend
>>> frontend = hap.frontend('frontend1_proc34')
>>> frontend.status
'OPEN'
>>> frontend.disable()
True
>>> frontend.status
'STOP'
>>> frontend.enable()
True
>>> frontend.status
'OPEN'
Shutdown a frontend
>>> frontend.shutdown()
True
Warning
HAProxy removes from the running configuration the frontend, so further operations on the frontend will return an error.
>>> frontend.status
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/..ages/haproxyadmin/frontend.py", line 243, in status
'status')
File "/...ages/haproxyadmin/utils.py", line 168, in cmd_across_all_procs
(getattr(obj, 'process_nb'), getattr(obj, method)(*arg))
File "/...ages/haproxyadmin/internal.py", line 210, in metric
getattr(self.hap_process.frontends_stats()[self.name], name))
KeyError: 'frontend1_proc34'
Retrieve various statistics
>>> frontend = hap.frontend('frontend2_proc34')
>>> for m in FRONTEND_METRICS:
... print("name {} value {}".format(m, frontend.metric(m)))
...
name bin value 380
name bout value 1065
name comp_byp value 0
name comp_in value 0
name comp_out value 0
name comp_rsp value 0
name dreq value 0
name dresp value 0
name ereq value 0
name hrsp_1xx value 0
name hrsp_2xx value 0
name hrsp_3xx value 0
name hrsp_4xx value 0
name hrsp_5xx value 5
name hrsp_other value 0
name rate value 0
name rate_lim value 200000
name rate_max value 2
name req_rate value 0
name req_rate_max value 2
name req_tot value 5
name scur value 0
name slim value 20000
name smax value 3
name stot value 5
>>>
>>> frontend.process_nb
[4, 3]
>>> frontend.requests_per_process()
[(4, 2), (3, 3)]
>>> frontend.requests
5
>>>
Note
requests
returns HTTP requests that are processed by the frontend.
If the frontend is in TCP mode the number will be always 0 and stot
metric should be used to retrieve the number of TCP requests processsed.
Read Frontend
class for more information.