Experiment in consolidating status notifications from third parties.
In my work in infrastructure I often have to keep track of the status of many third party serivces. This can be especially painful in an outage situation where I much to check multiple dashboards to get a full picture of what may be happening.
This project is an experiment to consolidate multiple dashboards into a single page that can be easily checked.
This is also to exercise my skills in FastAPI and teach myself htmx.
Using go-task you can run the following commands:
task: Show all the tasks available via the Taskfile.yaml
task compose:devStart Docker Compose services in development modetask compose:downStop Docker Compose servicestask compose:logsView Docker Compose logstask compose:upStart Docker Compose servicestask docker:buildBuild the production Docker image for running the applicationtask docker:build-testBuild the testing Docker image for unit testingtask docker:runRun Docker containertask docker:testRun unit tests inside the testing Docker container
Once the container is running, you can view the application at http://localhost:8000
-
Copy
.env.exampleto.envand edit any values as needed -
config.yamllists the services to be checked. For example:
services:
- name: "GitHub Status"
type: "rss"
config:
name: "GitHub"
feed_url: "https://www.githubstatus.com/history.rss"
timeout: 30
polling_interval: 300At the moment, only RSS is supported
flowchart TB
subgraph Entry_Points
EP[Entry Points Registry]
NS[status-tiles.plugins Namespace]
EP -->|Defines| NS
end
subgraph Plugin_Loading
DM[Driver Manager]
BP[BaseMonitor Plugin Interface]
PC[Plugin Contract]
CH["check() Method"]
VC["validate_config() Method"]
DM -->|Loads| BP
BP -->|Validates| PC
PC -->|Must Implement| CH
PC -->|Must Implement| VC
end
subgraph Available_Plugins
HTTP[HTTP Monitor]
TCP[TCP Monitor]
RSS[RSS Monitor]
BP -->|Instantiates| HTTP
BP -->|Instantiates| TCP
BP -->|Instantiates| RSS
end
subgraph Monitor_Creation
CR[Create Monitor Request]
MT[Monitor Type]
MI[Monitor Instance]
CR -->|Specifies| MT
MT -->|Passed to| DM
DM -->|Creates Instance| MI
end
subgraph Execution
SCH[Scheduler]
SR[Status Result]
SCH -->|Triggers| MI
MI -->|Executes| CH
CH -->|Returns| SR
end
subgraph Configuration
PY[pyproject.toml]
CFG[Monitor Config]
PY -->|Registers| EP
CFG -->|Validated by| VC
end