Files
neon/compute/etc
Alexey Kondratov 4b77807de9 fix(compute/sql_exporter): Ignore invalid DBs when collecting size (#11097)
## Problem

Original Slack discussion:
https://neondb.slack.com/archives/C04DGM6SMTM/p1739915430147169

TL;DR in Postgres, it's totally normal to have 'invalid' DBs (state
after the interrupted `DROP DATABASE`). Yet, some of our metrics
collected with `sql_exporter` try to get the size of such invalid DBs.

Typical log lines:
```
time=2025-03-05T16:30:32.368Z level=ERROR source=promhttp.go:52 msg="Error gathering metrics" error="[from Gatherer #1] [collector=neon_collector,query=pg_stats_userdb] pq: [NEON_SMGR] [reqid 0] could not read db size of db 173228 from page server at lsn 0/44A0E8C0"
time=2025-03-05T16:30:32.369Z level=ERROR source=promhttp.go:52 msg="Error gathering metrics" error="[from Gatherer #1] [collector=neon_collector,query=db_total_size] pq: [NEON_SMGR] [reqid 0] could not read db size of db 173228 from page server at lsn 0/44A0E8C0"
```

## Summary of changes

Ignore invalid DBs in these two metrics -- `pg_stats_userdb` and
`db_total_size`
2025-03-06 15:32:17 +00:00
..

Compute Configuration

These files are the configuration files for various other pieces of software that will be running in the compute alongside Postgres.

sql_exporter

Adding a sql_exporter Metric

We use sql_exporter to export various metrics from Postgres. In order to add a metric, you will need to create two files: a libsonnet and a sql file. You will then import the libsonnet file in one of the collector files, and the sql file will be imported in the libsonnet file.

In the event your statistic is an LSN, you may want to cast it to a float8 because Prometheus only supports floats. It's probably fine because float8 can store integers from -2^53 to +2^53 exactly.