Hi.
I want to collect access log by collector that read all logfiles in /var/log path and run as daemonset in a namespace.
I installed traefik as helm chart - GitHub web editor
I add mount to volumes and additionalVolumeMounts in values.yaml.
deployment:
additionalVolumes:
- name: traefik-logs
emptyDir: {}
additionalVolumeMounts:
- name: traefik-logs
mountPath: /var/log
I add filePath in log.general
& log.access
logs:
general:
level: ERROR
filePath: /var/log/traefik.log
access:
filePath: /var/log/traefik-access.log
But, there is any log file in /var/log.
There is no config as parameter on process related to log file.
$ ps aux | grep traefik
1 65532 0:00 traefik traefik --global.checknewversion --global.sendanonymoususage --entrypoints.metrics.address=:9100/tcp --entrypoints.traefik.address=:9000/tcp --entrypoints.web.address=:8000/tcp --entrypoints.websecure.address=:8443/tcp --api.dashboard=true --ping=true --metrics.prometheus=true --metrics.prometheus.entrypoint=metrics --providers.kubernetescrd --providers.kubernetesingress --accesslog=true --accesslog.format=json --accesslog.fields.defaultmode=keep --accesslog.fields.headers.defaultmode=keep
I tested it again to fix mount path to /var/log/traefik
. /var/log/traefik dir is created. Volume seems to be amounted. But traefik filepath config seems to be not working.
Hello @joey-yoonsung
Did you check the path /var/log directly into Traefik container? The logs files should be created and stored inside a container.
@jakubhajek
Yes. there is.
I access the container as shell like bellow
kubectl get pod | grep traefik ✔ 1h 53m 43s ladp-vks-120-dev ⎈ 13:45:38
traefik-7788b7c8c7-x9w24 1/1 Running 0 114m
kubectl exec -it traefik-7788b7c8c7-x9w24 /bin/sh
$ cd var/log
/var/log $ ls -al
total 0
drwxrwsrwx 2 root 65532 6 Apr 12 02:50 .
drwxr-xr-x 1 root root 21 Apr 12 02:50 ..
I tried to set more change of configurations, but there is no different.
filePath
key in logs
, logs.general
, logs.access
seems to be ignored.
Very hard to configure traefik in k8s because the official document doesn't care about config in k8s.
I found it!
filePath
is not working in logs
, logs.general
, logs.access
.
The filepath
can be set by additionalArguments in values.yaml
deployment:
additionalVolumes:
- name: traefik-logs
emptyDir: {}
additionalVolumeMounts:
- name: traefik-logs
mountPath: /var/log/traefik
additionalArguments:
- "--log.filepath=/var/log/traefik/traefik.log"
- "--accesslog.filepath=/var/log/traefik/traefik-access.log"
Then the process run with these parameters.
ps aux | grep traefik
1 65532 0:00 traefik traefik --global.checknewversion --global.sendanonymoususage --entrypoints.metrics.address=:9100/tcp --entrypoints.traefik.address=:9000/tcp --entrypoints.web.address=:8000/tcp --entrypoints.websecure.address=:8443/tcp --api.dashboard=true --ping=true --metrics.prometheus=true --metrics.prometheus.entrypoint=metrics --providers.kubernetescrd --providers.kubernetesingress --accesslog=true --accesslog.format=json --accesslog.fields.defaultmode=keep --accesslog.fields.headers.defaultmode=keep --log.filepath=/var/log/traefik/traefik.log --accesslog.filepath=/var/log/traefik/traefik-access.log
But it has limitations. The stdout that streamed the traefik app log and access log both before don't stream access log anymore.
1 Like
You can have a look at the workshop we have prepared to let Kubernetes users start with Traefik:
1 Like