diff --git a/promtail/Dockerfile b/promtail/Dockerfile new file mode 100644 index 0000000..6d04db2 --- /dev/null +++ b/promtail/Dockerfile @@ -0,0 +1,5 @@ +FROM grafana/promtail:main + +COPY ./config.yml /etc/promtail/config.yaml + +ENTRYPOINT ["promtail", "--config.file=/etc/promtail/config.yaml", "--config.expand-env=true"] diff --git a/promtail/README.md b/promtail/README.md new file mode 100644 index 0000000..f7e9169 --- /dev/null +++ b/promtail/README.md @@ -0,0 +1,29 @@ +# Promtail + +## Usage + +Run using docker: + +```sh +docker run -v /var/run/docker.sock:/var/run/docker.sock \ + -e LOKI_PUSH_URL="/loki/api/v1/push" \ + -e LOKI_PUSH_USER="" \ + -e LOKI_PUSH_PASSW="" \ + -e DOCKER_HOST="/var/run/docker.sock" \ + -e INSTANCE_NAME="HelloWorld" \ + scalableminds/promtail +``` + +This will scrape all containers with label `gather.logs=true`. + +## Configuration + +Environment Variables: + +| Name | Description | +|------|-------------| +| `LOKI_PUSH_URL` | URL to push to (e.g. `/loki/api/v1/push`) | +| `LOKI_PUSH_USER` | User for Basic Auth | +| `LOKI_PUSH_PASSW` | Password for Basic Auth | +| `DOCKER_HOST` | Path to docker host (e.g. `unix:///var/run/docker.sock`) | +| `INSTANCE_NAME` | Name of the instance | diff --git a/promtail/config.yml b/promtail/config.yml new file mode 100644 index 0000000..7b4ae0a --- /dev/null +++ b/promtail/config.yml @@ -0,0 +1,22 @@ +server: + disable: true +clients: +- url: ${LOKI_PUSH_URL} + basic_auth: + username: ${LOKI_PUSH_USER} + password: ${LOKI_PUSH_PASSW} +scrape_configs: +- job_name: docker + docker_sd_configs: + - host: ${DOCKER_HOST} + relabel_configs: + - source_labels: ['__meta_docker_container_name'] + regex: '/(.*)' + target_label: 'container' + - source_labels: ['__meta_docker_container_label_gather_logs'] + regex: 'true' + action: 'keep' + - source_labels: ['__meta_docker_container_label_gather_logs'] + regex: '.*' + target_label: 'instance' + replacement: ${INSTANCE_NAME}