mono-infrastructure/architecture/monitoring/prometheus_mvp.py

63 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python
from diagrams import Diagram, Cluster, Edge
from diagrams.aws.compute import EC2
from diagrams.aws.general import General
from diagrams.aws.network import ELB
from diagrams.onprem.compute import Server
from diagrams.onprem.iac import Ansible
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.saas.alerting import Pushover
from diagrams.saas.chat import Slack
graph_attr = {
}
node_attr = {
}
with Diagram("Prometheus MVP",
show=False,
direction="TB",
outformat="png",
graph_attr=graph_attr,
node_attr=node_attr):
with Cluster("Rocky VPC"):
with Cluster("AWS services"):
aws_group = [
EC2("service01"),
EC2("service02"),
]
with Cluster("metrics host"):
metrics = Prometheus("metrics")
alertmanager = Prometheus("alertmanager")
dashboard = Grafana("monitoring")
metrics << dashboard
metrics >> alertmanager
Ansible("ansible") >> metrics
metrics >> Edge(style="dashed",
label="ec2 read permissions") >> General("AWS API")
alertmanager >> Edge(style="dashed",
label="non-critical") >> Slack("rocky-alerts")
alertmanager >> Edge(style="dashed",
label="critical") >> Pushover("tbd")
ELB("metrics.rockylinux.org") >> Edge(label="TCP3000") >> dashboard
with Cluster("Cloudvider"):
cloudvider_group = [
Server("server01"),
Server("server02"),
]
with Cluster("Spry Servers"):
spry_group = [
Server("server01"),
Server("server02"),
]
metrics >> aws_group
metrics >> spry_group
metrics >> cloudvider_group