Skip to content

Commit b5ac9ea

Browse files
authored
[+] improve pgwatch-demo Docker image (#643)
[+] 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
1 parent df1f14a commit b5ac9ea

File tree

5 files changed

+13
-35
lines changed

5 files changed

+13
-35
lines changed

docker/bootstrap/init_dbs.sh

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
11
#!/bin/bash
22

3-
psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
4-
CREATE EXTENSION pg_qualstats;
5-
CREATE EXTENSION plpython3u;
6-
CREATE EXTENSION pg_stat_statements;
7-
GRANT EXECUTE ON FUNCTION pg_stat_file(text) TO pgwatch;
8-
GRANT EXECUTE ON FUNCTION pg_stat_file(text, boolean) TO pgwatch;
9-
EOSQL
10-
11-
psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
12-
BEGIN;
13-
CREATE OR REPLACE FUNCTION get_load_average(OUT load_1min float, OUT load_5min float, OUT load_15min float) AS
14-
'
15-
from os import getloadavg
16-
la = getloadavg()
17-
return [la[0], la[1], la[2]]
18-
' LANGUAGE plpython3u VOLATILE;
19-
GRANT EXECUTE ON FUNCTION get_load_average() TO pgwatch;
20-
COMMENT ON FUNCTION get_load_average() is 'created for pgwatch';
21-
COMMIT;
22-
EOSQL
3+
/pgwatch/pgwatch metric print-init full | psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch"

docker/bootstrap/init_test_monitored_db.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ if [ -n "$PW_TESTDB" ] ; then
44
echo "adding test monitored database..."
55
psql -v ON_ERROR_STOP=1 --username "postgres" --dbname "pgwatch" <<-EOSQL
66
INSERT INTO pgwatch.source (name, preset_config, config, connstr)
7-
SELECT 'test', 'exhaustive', null, 'postgresql://pgwatch:pgwatchadmin@localhost:5432/pgwatch'
7+
SELECT 'test', 'full', null, 'postgresql://pgwatch:pgwatchadmin@localhost:5432/pgwatch'
88
WHERE NOT EXISTS (SELECT * FROM pgwatch.source WHERE name = 'test');
99
EOSQL
1010
fi

docker/demo/Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ RUN cd /pgwatch && CGO_ENABLED=0 go build -ldflags "-X 'main.commit=${GIT_HASH}'
2121
# ----------------------------------------------------------------
2222
# 3. Build the final image
2323
# ----------------------------------------------------------------
24-
FROM postgres:16-bullseye AS releaser
24+
FROM postgres:17-bullseye AS releaser
2525

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

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

5455

5556
# Set up supervisord [https://docs.docker.com/engine/admin/using_supervisord/]

docker/demo/grafana.ini

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@ protocol = http
33
cert_file = /pgwatch/persistent-config/self-signed-ssl.pem
44
cert_key = /pgwatch/persistent-config/self-signed-ssl.key
55

6-
[database]
7-
type = postgres
8-
host = 127.0.0.1:5432
9-
name = pgwatch_grafana
10-
user = pgwatch
11-
password = pgwatchadmin
12-
136
[security]
147
admin_user = admin
158
admin_password = pgwatchadmin
@@ -26,3 +19,6 @@ default_home_dashboard_path = /var/lib/grafana/dashboards/1-global-db-overview.j
2619

2720
[metrics]
2821
enabled = false
22+
23+
[plugins]
24+
preinstall = marcusolsson-treemap-panel

docker/demo/supervisord.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ stdout_logfile_maxbytes=0
3535
redirect_stderr=true
3636

3737
[program:pgwatch]
38-
command=/pgwatch/pgwatch --log-file=/var/log/pgwatch/pgwatch.log --log-level=debug
38+
command=/pgwatch/pgwatch --log-file=/var/log/pgwatch/pgwatch.log
3939
startsecs=5
4040
priority=300
4141
autostart=false

0 commit comments

Comments
 (0)