Skip to content

Commit

Permalink
[+] improve pgwatch-demo Docker image (#643)
Browse files Browse the repository at this point in the history
[+] improve `pgwatch-demo` Docker image
[+] bump PostgreSQL to v17
[*] make Grafana use standard storage instead of Postgres
[*] use `full` preset for demo source instead of `exhaustive`
[+] use `pgwatch metric print-init` to prepare test monitoring source
[*] use normal log level
[+] bump Grafana to v10.4.7
[+] preinstall `marcusolsson-treemap-panel` Grafana plugin
  • Loading branch information
pashagolub authored Feb 13, 2025
1 parent df1f14a commit b5ac9ea
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 35 deletions.
21 changes: 1 addition & 20 deletions docker/bootstrap/init_dbs.sh
Original file line number Diff line number Diff line change
@@ -1,22 +1,3 @@
#!/bin/bash

psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
CREATE EXTENSION pg_qualstats;
CREATE EXTENSION plpython3u;
CREATE EXTENSION pg_stat_statements;
GRANT EXECUTE ON FUNCTION pg_stat_file(text) TO pgwatch;
GRANT EXECUTE ON FUNCTION pg_stat_file(text, boolean) TO pgwatch;
EOSQL

psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
BEGIN;
CREATE OR REPLACE FUNCTION get_load_average(OUT load_1min float, OUT load_5min float, OUT load_15min float) AS
'
from os import getloadavg
la = getloadavg()
return [la[0], la[1], la[2]]
' LANGUAGE plpython3u VOLATILE;
GRANT EXECUTE ON FUNCTION get_load_average() TO pgwatch;
COMMENT ON FUNCTION get_load_average() is 'created for pgwatch';
COMMIT;
EOSQL
/pgwatch/pgwatch metric print-init full | psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch"
2 changes: 1 addition & 1 deletion docker/bootstrap/init_test_monitored_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ if [ -n "$PW_TESTDB" ] ; then
echo "adding test monitored database..."
psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
INSERT INTO pgwatch.source (name, preset_config, config, connstr)
SELECT 'test', 'exhaustive', null, 'postgresql://pgwatch:pgwatchadmin@localhost:5432/pgwatch'
SELECT 'test', 'full', null, 'postgresql://pgwatch:pgwatchadmin@localhost:5432/pgwatch'
WHERE NOT EXISTS (SELECT * FROM pgwatch.source WHERE name = 'test');
EOSQL
fi
13 changes: 7 additions & 6 deletions docker/demo/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ RUN cd /pgwatch && CGO_ENABLED=0 go build -ldflags "-X 'main.commit=${GIT_HASH}'
# ----------------------------------------------------------------
# 3. Build the final image
# ----------------------------------------------------------------
FROM postgres:16-bullseye AS releaser
FROM postgres:17-bullseye AS releaser

# Copy over the compiled gatherer
COPY --from=builder /pgwatch/pgwatch /pgwatch/
Expand All @@ -37,19 +37,20 @@ RUN apt-get update \
&& curl -L "https://www.postgresql.org/media/keys/ACCC4CF8.asc" | apt-key add - \
&& apt-get update \
&& apt-get -qy install \
timescaledb-2-postgresql-16 postgresql-plpython3-16 postgresql-16-pg-qualstats \
timescaledb-2-postgresql-17 postgresql-plpython3-17 postgresql-17-pg-qualstats \
supervisor python3-psutil libfontconfig1 \
&& apt-get purge -y --auto-remove \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install Grafana
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \
&& curl "https://dl.grafana.com/oss/release/grafana_10.3.3_${arch}.deb" --output grafana.deb \
&& dpkg -i grafana.deb && rm grafana.deb
&& curl "https://dl.grafana.com/oss/release/grafana_10.4.7_${arch}.deb" --output grafana.deb \
&& dpkg -i grafana.deb && rm grafana.deb \
&& grafana-cli plugins install marcusolsson-treemap-panel
COPY docker/demo/grafana.ini /etc/grafana/grafana.ini
COPY grafana/postgres_datasource.yml /etc/grafana/provisioning/datasources/pg_ds.yml
COPY grafana/postgres_dashboard.yml /etc/grafana/provisioning/dashboards/pg_db.yml
ADD grafana/postgres/v10/ /var/lib/grafana/dashboards/
COPY grafana/dashboards.yml /etc/grafana/provisioning/dashboards/pg_db.yml
COPY grafana/postgres/v10/ /var/lib/grafana/dashboards/


# Set up supervisord [https://docs.docker.com/engine/admin/using_supervisord/]
Expand Down
10 changes: 3 additions & 7 deletions docker/demo/grafana.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,6 @@ protocol = http
cert_file = /pgwatch/persistent-config/self-signed-ssl.pem
cert_key = /pgwatch/persistent-config/self-signed-ssl.key

[database]
type = postgres
host = 127.0.0.1:5432
name = pgwatch_grafana
user = pgwatch
password = pgwatchadmin

[security]
admin_user = admin
admin_password = pgwatchadmin
Expand All @@ -26,3 +19,6 @@ default_home_dashboard_path = /var/lib/grafana/dashboards/1-global-db-overview.j

[metrics]
enabled = false

[plugins]
preinstall = marcusolsson-treemap-panel
2 changes: 1 addition & 1 deletion docker/demo/supervisord.conf
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ stdout_logfile_maxbytes=0
redirect_stderr=true

[program:pgwatch]
command=/pgwatch/pgwatch --log-file=/var/log/pgwatch/pgwatch.log --log-level=debug
command=/pgwatch/pgwatch --log-file=/var/log/pgwatch/pgwatch.log
startsecs=5
priority=300
autostart=false
Expand Down

0 comments on commit b5ac9ea

Please sign in to comment.