amir20 / dozzle

Realtime log viewer for docker containers.
https://dozzle.dev/
MIT License
6.15k stars 308 forks source link

Duplicate hosts using agent #3089

Closed akalderon closed 3 months ago

akalderon commented 3 months ago

Describe the bug Using agents for multiple hosts that were generated from a template image (Proxmox VMs) yields an error and skips the host. Host Id is the same for all images (different IPs). Agent should use another unique identifier perhaps?

time="2024-07-10T13:35:53Z" level=warning msg="duplicate host ID: 9c57912c-3aaf-4c03-b5b2-7d7b824***, Endpoint: 10.0.40.:7007 found, skipping"

To Reproduce Create two hosts from the same lxc or vm template on proxmox and they would yield this errlr

Expected behavior Agents should differentiate hosts in a different way

If applicable include logs with --level debug and browser logs time="2024-07-10T13:35:53Z" level=warning msg="duplicate host ID: 9c57912c-3aaf-4c03-b5b2-7d7b824***, Endpoint: 10.0.40.:7007 found, skipping"

amir20 commented 3 months ago

This was discussed in https://github.com/amir20/dozzle/issues/3072#issuecomment-2214827959.

I need a unique ID per host. I would expect the ID for Docker System which can be found using docker system info to be unique. This information is saved in /var/lib/docker/engine-id.

Agents should differentiate hosts in a different way

I don't know of a better way. It used to be ip address but internally I don't have access to the IP address.

Agent should use another unique identifier perhaps?

And I need a unique ID that can be found locally.

Closing this since there is a solution. Let me know if you have a better solution for unique id.

amir20 commented 3 months ago

@akalderon Just wondering if you are using Swarm? In Swarm, there is also node-id which might be a better option. So I could do, node-id if there. Machine-id otherwise.

akalderon commented 3 months ago

No. Using plain docker on multiple hosts on top of proxmox for now.
Would have loved it if you left the socket method in tact. As it stands now every time you publish an update I have to upgrade 10 docker containers across ten docker hosts whereas with the socket method I only had the main dozzle container to worry about.