-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add some new labels to every container #4324
Conversation
I get why this would be needed overall but I have a questions:
|
Because environment variables aren't collected by cAdvisor or anything I think. I suppose there's a way to tweak something, but with labels it works straight away. cAdvisor collects them, and I can use them in my PromQL queries ( Prometheus ) |
Is there anything I can do to help move this PR forward or we just need some time? Let me know if anything is needed 🙂 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have been thinking a lot about this, this week and I have some ideas:
coolify.projectName
-> Project Name
coolify.environmentName
-> Environment Name --> Needs to be changed to this form coolify.environment
coolify.resourceName
-> The name of the Application or Service --> For example WordPress or so (stack name of compose)
coolify.containerName
: The name of the container inside the application or inside the WordPress service (for wp it would be MariaDB and WordPress (with uuid ofc). --> Basically, this containerName would be the same as what we store in the COOLIFY_CONTAINER_NAME
env var https://coolify.io/docs/knowledge-base/environment-variables/#coolify_container_name
Does this make sense for your use case, or am I missing something that the service name did and the containerName would not now?
Yes, that won’t be enough. If I understand correctly, If that’s the case, then it’s kind of pointless because the real container name is already exposed and retrievable, as it’s literally the container’s name 😅 This is problematic because every time I restart the containers in a stack, the UUID will change, resulting in a "break" in a Grafana graph. I’ll end up with two separate series, making operations more tedious. This is what I was trying to explain here: #3569
I'm talking about Grafana here, but it'll be the same with any tool. For example, I want to retrieve my logs with Loki? Same problem, I will have two different series/projects on which I have logs : “wordpress-mariadb-234923842” and “wordpress-mariadb-324298234”, making it impossible to retrieve all the logs in a continuous way without hacking something The ideal solution would really be to have a fixed and consistent name. And since we can assign names to services in a Compose stack, I think it makes perfect sense to use that. That’s what we were doing with |
Thank you for the PR and sorry for the long wait time. Everything looks good, so it will be released in the next version. |
Changes
I strongly encourage to read the comment that initiated this PR: #3569 (comment)
TL;DR: The main issue is the difficulty in monitoring due to automatically generated container names. Currently, when I look at my Grafana/cAdvisor dashboard tracking CPU usage for each container managed by Coolify, I only see cuid names , which makes it impossible to identify what each container corresponds to.
So we need a way to have "human-readable" names for each container. This PR addresses the issue by adding three new labels to each container managed by Coolify :
coolify.resourceName
: The name of theApplication
orService
coolify.projectName
: The name of the project where the resource livescoolify.serviceName
: This one might be a bit confusing, and perhaps we can find a better name. If the resource is of typeService
, it will be the sub-service name. If it's of typeApplication
, it will be the application name. This label is necessary because, using my monitoring use case as an example, I need metrics/logs for each of my containers. To differentiate them, I need a unique name. If I'm using aService
, I can't rely oncoolify.resourceName
since all the services in my docker-compose file would have the same value. I hope this explanation makes sense.This is my first contribution to Coolify, and I'm not familiar with PHP either, so feel free to point out any corrections or improvements I should made
( And thanks a lot for making Coolify 💙 )
Issues