How to prevent alloy of complaining about docker containers whithout logging driver configured?

Hi,

i am currently setup alloy to sent all logs from docker to grafana cloud.
On the server there are multiple containers which use there own logging and there the logging driver of docker is disabled for them. This leads to a lot of error messages within alloy. Any idea how to prevent this?

Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.56491181Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/d1174ff66a6fed87ff0e0bec15b269ab1be6d05907b1244688bc727ad31eb5d8 container=d1174ff66a6fed87ff0e0bec15b269ab1be6d05907b1244688bc727ad31eb5d8 err="Error response from daemon: configured logging driver does not support reading"
Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.56517114Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/c68b0ec27f98d4a382344ac864ea2aa2bf29e65ec766c872517418395fd062e2 container=c68b0ec27f98d4a382344ac864ea2aa2bf29e65ec766c872517418395fd062e2 err="Error response from daemon: configured logging driver does not support reading"
Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.565200014Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/220290fffafaa87d158e5bae6902e4234535432cbf04092144c4adf3191dd004 container=220290fffafaa87d158e5bae6902e4234535432cbf04092144c4adf3191dd004 err="Error response from daemon: configured logging driver does not support reading"
Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.565352852Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/107f7f5b6111487a44d5c72ba7a58ee74f851a3cf1bb544a3ca1358010a07f0d container=107f7f5b6111487a44d5c72ba7a58ee74f851a3cf1bb544a3ca1358010a07f0d err="Error response from daemon: configured logging driver does not support reading"
Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.565643413Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/827bd724d40b07a2b04302616ec3776d8bc3d9251d1a564cb24645470aaafde9 container=827bd724d40b07a2b04302616ec3776d8bc3d9251d1a564cb24645470aaafde9 err="Error response from daemon: configured logging driver does not support reading"
Jun 30 09:05:02 dmz alloy[574700]: ts=2024-06-30T07:05:02.567034025Z level=error msg="could not fetch logs for container" component_path=/ component_id=loki.source.docker.logs_integrations_docker target=docker/c4ea2b1f0857807a640ad9e4c4c32c5131dbebe32a721aa6f7cf25d50db3f2a8 container=c4ea2b1f0857807a640ad9e4c4c32c5131dbebe32a721aa6f7cf25d50db3f2a8 err="Error response from daemon: configured logging driver does not support reading"

Here the relevant part of my alloy config

discovery.docker "logs_integrations_docker" {
    host             = "unix:///var/run/docker.sock"
    refresh_interval = "5s"
}
discovery.relabel "logs_integrations_docker" {
    targets = 
    rule {
        target_label = "job"
        replacement  = "integrations/docker"

    rule {
        target_label = "instance"
        replacement  = constants.hostname

    rule {
        source_labels = ["__meta_docker_container_name"]
        regex         = "/(.*)"
        target_label  = "container"

    rule {
        source_labels = ["__meta_docker_container_log_stream"]
        target_label  = "stream"
    }
}
loki.source.docker "logs_integrations_docker" {
    host             = "unix:///var/run/docker.sock"
    targets          = discovery.docker.logs_integrations_docker.targets
    forward_to       = [loki.write.grafana_cloud_loki.receiver]
    relabel_rules    = discovery.relabel.logs_integrations_docker.rules
    refresh_interval = "5s"
}

loki.write "grafana_cloud_loki" {
    endpoint {
      url = "{{ vault_grafana_cloud_loki_url }}"

      basic_auth {
        username = "{{ vault_grafana_cloud_loki_user }}"
        password = "{{ vault_grafana_cloud_loki_passwd }}"
      }
    }
  }

I would use filter block to discover only containers, which should be processed by Alloy

Thx, thats really an option. Perhaps i can use a label to filter all containers which should be logged via alloy. Just have to figure out the right syntax.

1 Like