marathon-lb输出代理的访问日志

marathon-lb输出代理的访问日志

之前运行marathon-lb没有打印lb的代理日志,在容器中是能看到marathon-lb获取marathon信息的日志。如果想查看访问量、代理状态、代理的具体的URL等信息的话,还是没办法的。

当然marathon-lb是有接口可以看到一些访问量、访问状态统计的信息的。 可以用:

1
http://marathon-lb-ip:9090/haproxy?stats

但是这个接口没有访问的具体信息,有问题很难排查。

还有什么接口, 你可以查看我之前写的文章

https://sukbeta.github.io/marathon-lb-configure-nginx/

所以,下面我们来说说这么收集marathon-lb的日志。

marathon-lb的配置

进入容器修改配置

1
docker exec -it container-id /bin/bash

这里没有vi 什么的,可以用sed修改 config.py

我的配置是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
......
global
daemon
log /dev/log local1 debug
spread-checks 5
max-spread-checks 15000
maxconn 500000
.....
.....
defaults
load-server-state-from-file global
log global
mode http
option httplog
option dontlognull
retries 3
backlog 10000
maxconn 500000
timeout connect 10s
timeout client 300s
timeout server 300s
timeout tunnel 3600s
timeout http-keep-alive 1s
timeout http-request 15s
timeout queue 300s
timeout tarpit 60s
......

重新 commit 一下容器

1
docker commit -m "logdebug" 9c1c65028b12 marathon-lb-debuglog-v1:v1.11.1

启动容器配置

首先,marathon-lb启动容器的时候需要挂在主机的/dev/log设备。lb是把日子好打到系统上的。

marathon-lb 的json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
"id": "/marathon-lb/marathon-lb-mesos-slave02",
"cmd": null,
"cpus": 1,
"mem": 128,
"disk": 0,
"instances": 0,
"constraints": [
[
"hostname",
"CLUSTER",
"mesos-slave02"
]
],
"container": {
"type": "DOCKER",
"volumes": [
{
"containerPath": "/dev/log",
"hostPath": "/dev/log",
"mode": "RW"
}
],
"docker": {
"image": "marathon-lb-debuglog-v1:v1.11.1",
"network": "HOST",
"portMappings": [],
"privileged": true,
"parameters": [],
"forcePullImage": false
}
},
"env": {
"TZ": "Asia/Shanghai"
},
"args": [
"sse",
"-m",
"http://192.168.1.10:8080",
"--group",
"marathon-group"
],
"upgradeStrategy": {
"minimumHealthCapacity": 0,
"maximumOverCapacity": 0
}
}

这是就可以在系统中看到marthon的日志了

1
2
3
journalctl -f

Jan 10 16:01:29 mesos-slave02.host-mtime.com haproxy[33023]: 192.168.2.2:54544 [10/Jan/2019:08:01:29.742] marathon-lb/marathon-lb-mesos-slave01_host-mtime_com_192_168_1_101_31942 0/0/0/0/0 200 225 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"

系统配置

系统需要用rsyslog服务来讲haproxy的日志打到指定的文件中

配置 rsyslog的haproxy配置文件

vim /etc/rsyslog.d/haproxy.conf

1
local1.*  /home/haproxy/haproxy.log
  • 因为haproxy的log里配置的 local1 接口,所以这里接受 local1的所有日志

vim /etc/rsyslog.conf

1
2
3
4
5
6
7
8
9
......
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
.....

vim /etc/sysconfig/rsyslog

1
SYSLOGD_OPTIONS="-r -m 0"

重启 rsyslog 服务

1
systemctl restart rsyslog

如果没有日志的话,重启一下marathon-lb的容器就可以啦。

如果感觉文航还可以的话,请帮忙点点下面的广告! 谢谢!

感谢您的支持!