mirror of
https://github.com/healthchecks/healthchecks.git
synced 2026-04-25 06:55:53 +03:00
[GH-ISSUE #790] Global integrations #554
Labels
No labels
bug
bug
bug
feature
good-first-issue
new integration
pull-request
question
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/healthchecks#554
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @kiler129 on GitHub (Feb 4, 2023).
Original GitHub issue: https://github.com/healthchecks/healthchecks/issues/790
Overview
While playing with HealthChecks I noticed that integrations need to be set-up per project. When using projects as project-per-site this becomes cumbersome, especially when something needs to change in integrations.
Perfect world solution
It would be great if a concept of "linked"/"global" integrations could be implemented. That way one can setup integration once and share it across projects. I didn't look into the database, but I suspect integrations are linked to the project and projects are owned by users. In such a case introducing global integrations can create a lot of headaches with permissions checking.
Alternative solution
Introducing a concept of a parent project, that only contains list of integrations would probably be easier. Then, every child project with parent project set will execute all integrations from itself AND parent project. The only complexity I see is with transferring ownership: in such case user should probably be asked "do you want to copy parent project integrations?".
WDYT?
@cuu508 commented on GitHub (Feb 21, 2023):
How many projects, and how many integrations per project are you working with?
@kiler129 commented on GitHub (Feb 21, 2023):
Currently evaluating it in my home lab, which uses 3 projects (home, a dedicated server, offsite backup) with 2 integrations each (email + telegram). However, in my enterprise environment if implemented that would be a few dozen of projects with 2-3 integrations each. Treating projects as physical locations offers a nice compartmentalization for the NOC view and brings a nice feature: if an internet connection is down for the site I will see multiple checks failing but all of them will be isolated to a single project. That way I know it's most likely not that the server room burned down (hopefully ;)) but probably the whole location lost internet access.
A sensible scenario with shared integration would be to have:
Now, when the responsibility changes or some infra change is happening I don't need to go to every single project and change the integration - I can go to the parent project/global integrations and simply change it in one place.
@cuu508 commented on GitHub (Feb 22, 2023):
There's one existing feature that may perhaps work for your described use case: in the Account Settings > Email Reports you can enable ongoing hourly or daily email reminders when any checks are down. Unlike the integrations you set up in projects, these reminders are account-wide – you will get notified about checks in any and all projects you have access to. These reminders would arrive with a delay though – after a check goes down, you would get a "x checks are still down" reminder only an hour later.
If all projects have the same or almost the same 2-3 integrations, you could also put the checks in a single project, and compartmentalize them using tags.
Regarding the enterprise environment, are you considering implementing Healthchecks there? I'd be hesitant to add any new features and add complexity, unless there is a concrete and clear need from multiple users. And even then it's often ultimately a "no" – adding a feature that helps 1% of users but makes the service worse (harder to use due to UI clutter, bugs caused by the extra complexity, other potential features blocked by design decisions, ...) for 99% users, it's probably not worth it.