8

I've tried multiple web tutorials for enabling HAProxy stats (just google haproxy statistics and try the top 10 links) but I believe these are for older HAProxy versions. I'm running 1.7 on Ubuntu 16.04 LTS.

Here's my /etc/haproxy/haproxy.cfg file (this includes instructions given by Datadog on enabling stats).

If I remove the listen.... block, it starts fine. When it's there I get the following error:

sudo service haproxy stop
sudo service haproxy start
Job for haproxy.service failed because the control process exited with error code. See "systemctl status haproxy.service" and "journalctl -xe" for details.

Both journalctl and systemctl outputs show "Service started too quickly error

haproxy.service - HAProxy Load Balancer
Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Sun 2016-07-31 11:24:06 BST; 1min 19s ago
Docs: man:haproxy(1)
    file:/usr/share/doc/haproxy/configuration.txt.gz
Process: 1969 ExecReload=/bin/kill -USR2 $MAINPID (code=exited, status=0/SUCCESS)
Process: 2388 ExecReload=/usr/sbin/haproxy -c -f ${CONFIG} (code=exited, status=1/FAILURE)
Process: 2973 ExecStart=/usr/sbin/haproxy-systemd-wrapper -f ${CONFIG} -p /run/haproxy.pid $EXTRAOPTS (code=exited, status=0/SUCCESS)
Process: 3511 ExecStartPre=/usr/sbin/haproxy -f ${CONFIG} -c -q (code=exited, status=1/FAILURE)
Main PID: 2973 (code=exited, status=0/SUCCESS)

Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: haproxy.service: Control process exited, code=exited status=1
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: Failed to start HAProxy Load Balancer.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: haproxy.service: Unit entered failed state.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: haproxy.service: Failed with result 'exit-code'.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: haproxy.service: Service hold-off time over, scheduling restart.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: Stopped HAProxy Load Balancer.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: haproxy.service: Start request repeated too quickly.
Jul 31 11:24:06 loadbalancervm-VirtualBox systemd[1]: Failed to start HAProxy Load Balancer.

haproxy.cfg file

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend LOAD_BALANCER_TIER
    bind *:80
    default_backend WEB_SERVER_TIER

backend WEB_SERVER_TIER
    balance roundrobin
    mode http
    server WebServer1 192.168.1.9:80 check
    server WebServer2 192.168.1.11:80 check

listen stats :9000
    mode http
    stats enable
    stats hide-version
    stats realm HAproxy-Statistics
    stats uri /haproxy_stats
    stats auth admin:password

Note that all indented lines are using tabs, not spaces. Between items are using spaces.

Any ideas?

11

You're correct about older versions. Binding to a port on the line where the proxy (frontend or listen) declaration begins has not been valid since it was removed in HAProxy 1.5.

This is the correct form:

listen stats
    bind :9000

Note that you are already doing this in your frontend declarations. A listen is essentially a combined frontend and backend.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.