Skip to content

Commit 2ca805b

Browse files
authored
Merge pull request #215 from pacospace/add-metrics
Add metrics about pg dump creation status
2 parents aaab8b4 + ea55c20 commit 2ca805b

File tree

1 file changed

+39
-27
lines changed

1 file changed

+39
-27
lines changed

app.py

+39-27
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
_LOGGER = logging.getLogger("thoth.graph_backup_job")
3232
__version__ = "0.8.12"
3333
__component_version__ = f"{__version__}+thoth_storage.{__storages__version__}"
34+
COMPONENT_NAME = "graph-backup-job"
35+
3436
KNOWLEDGE_GRAPH_HOST = os.getenv("KNOWLEDGE_GRAPH_HOST", "localhost")
3537
KNOWLEDGE_GRAPH_PORT = os.getenv("KNOWLEDGE_GRAPH_PORT", "5432")
3638
KNOWLEDGE_GRAPH_USER = os.getenv("KNOWLEDGE_GRAPH_USER", "postgres")
@@ -49,27 +51,22 @@
4951
registry=prometheus_registry,
5052
)
5153

54+
_METRIC_PG_DUMP_STATUS = Gauge(
55+
"thoth_graph_backup_job",
56+
"Thoth Graph Backup Job save status",
57+
["env", "version"],
58+
registry=prometheus_registry,
59+
)
60+
5261

5362
def _send_metrics():
5463
"""Send metrics to pushgateway."""
55-
pushgateway_url = THOTH_METRICS_PUSHGATEWAY_URL
56-
deployment_name = THOTH_DEPLOYMENT_NAME
57-
58-
component_name = "graph-backup-job"
59-
60-
if deployment_name:
61-
database_schema_revision_script.labels(
62-
component_name, GraphDatabase().get_script_alembic_version_head(), deployment_name
63-
).inc()
64-
else:
65-
_LOGGER.warning("THOTH_DEPLOYMENT_NAME env variable is not set.")
66-
67-
if pushgateway_url and deployment_name:
64+
if THOTH_METRICS_PUSHGATEWAY_URL and THOTH_DEPLOYMENT_NAME:
6865
try:
69-
_LOGGER.debug(f"Submitting metrics to Prometheus pushgateway {pushgateway_url}")
66+
_LOGGER.debug(f"Submitting metrics to Prometheus pushgateway {THOTH_METRICS_PUSHGATEWAY_URL}")
7067
push_to_gateway(
71-
pushgateway_url,
72-
job=component_name,
68+
THOTH_METRICS_PUSHGATEWAY_URL,
69+
job=COMPONENT_NAME,
7370
registry=prometheus_registry,
7471
)
7572
except Exception as e:
@@ -83,22 +80,37 @@ def main():
8380
"""Perform graph backup job."""
8481
_LOGGER.debug("Debug mode is on.")
8582

86-
_send_metrics()
83+
if THOTH_DEPLOYMENT_NAME:
84+
database_schema_revision_script.labels(
85+
COMPONENT_NAME, GraphDatabase().get_script_alembic_version_head(), THOTH_DEPLOYMENT_NAME
86+
).inc()
87+
else:
88+
_LOGGER.warning("THOTH_DEPLOYMENT_NAME env variable is not set.")
8789

8890
adapter = GraphBackupStore()
8991
adapter.connect()
9092

9193
_LOGGER.info("Starting creation of the database dump")
92-
run_command(
93-
f"pg_dump -h {KNOWLEDGE_GRAPH_HOST} -p {KNOWLEDGE_GRAPH_PORT} "
94-
f"-U {KNOWLEDGE_GRAPH_USER} -d {KNOWLEDGE_GRAPH_DATABASE} -f pg_dump.sql",
95-
env={"PGPASSWORD": os.getenv("KNOWLEDGE_GRAPH_PASSWORD", "postgres")},
96-
timeout=None,
97-
)
98-
_LOGGER.info("Uploading the database dump")
99-
object_id = adapter.store_dump("pg_dump.sql")
100-
_LOGGER.info("The database dump is available at %s/%s", adapter.prefix, object_id)
101-
_LOGGER.info("Graph backup task is done.")
94+
try:
95+
run_command(
96+
f"pg_dump -h {KNOWLEDGE_GRAPH_HOST} -p {KNOWLEDGE_GRAPH_PORT} "
97+
f"-U {KNOWLEDGE_GRAPH_USER} -d {KNOWLEDGE_GRAPH_DATABASE} -f pg_dump.sql",
98+
env={"PGPASSWORD": os.getenv("KNOWLEDGE_GRAPH_PASSWORD", "postgres")},
99+
timeout=None,
100+
)
101+
_LOGGER.info("Uploading the database dump")
102+
103+
object_id = adapter.store_dump("pg_dump.sql")
104+
_LOGGER.info("The database dump is available at %s/%s", adapter.prefix, object_id)
105+
_LOGGER.info("Graph backup task is done.")
106+
107+
_METRIC_PG_DUMP_STATUS.labels(THOTH_DEPLOYMENT_NAME, __component_version__).set(0)
108+
109+
except Exception as e:
110+
_METRIC_PG_DUMP_STATUS.labels(THOTH_DEPLOYMENT_NAME, __component_version__).set(1)
111+
_LOGGER.exception(f"Error saving the pg dump {e}.")
112+
finally:
113+
_send_metrics()
102114

103115

104116
if __name__ == "__main__":

0 commit comments

Comments
 (0)