Skip to content

Commit

Permalink
initial attempt to add grafana with postgres data source
Browse files Browse the repository at this point in the history
  • Loading branch information
mdr223 committed Nov 10, 2023
1 parent f161fbd commit cc9b666
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/dev-ci-cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ jobs:
touch ${{ github.workspace }}/deploy/dev/secrets/pg_password.txt
echo "${{ secrets.DEV_PG_PASSWORD }}" >> ${{ github.workspace }}/deploy/dev/secrets/pg_password.txt
chmod 400 ${{ github.workspace }}/deploy/dev/secrets/pg_password.txt
touch ${{ github.workspace }}/deploy/dev/secrets/grafana_password.txt
echo "${{ secrets.DEV_GRAFANA_PASSWORD }}" >> ${{ github.workspace }}/deploy/dev/secrets/grafana_password.txt
chmod 400 ${{ github.workspace }}/deploy/dev/secrets/grafana_password.txt
# create env file to set tag(s) for docker-compose
- name: Create Env File
Expand Down
19 changes: 19 additions & 0 deletions deploy/dev/dev-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,30 @@ services:
timeout: 5s
retries: 5

grafana-dev:
image: grafana-dev:${TAG}
build:
context: ../..
dockerfile: deploy/dockerfiles/Dockerfile-grafana
depends_on:
postgres-dev:
condition: service_healthy
ports:
- 3000:3000 # host:container
volumes:
- grafana-storage:/var/lib/grafana
logging:
options:
max-size: 10m
restart: always

volumes:
a2rchi-dev-data:
external: true
a2rchi-dev-pg-data:
external: true
a2rchi-dev-grafana-data:
external: true

secrets:
imap_user:
Expand Down
13 changes: 13 additions & 0 deletions deploy/dev/dev-init.sql
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
-- create grafana user if it does not exist
DO
$do$
BEGIN
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = 'grafana') THEN
CREATE USER grafana WITH PASSWORD 'GRAFANA_PASSWORD';
GRANT USAGE ON SCHEMA public TO grafana;
GRANT SELECT ON public.timing TO grafana;
END IF;
END
$do$;

-- create tables
CREATE TABLE IF NOT EXISTS conversations (
conversation_id INTEGER NOT NULL,
message_id SERIAL,
Expand Down
13 changes: 13 additions & 0 deletions deploy/dev/dev-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,19 @@ if [[ $exists != 'a2rchi-dev-pg-data' ]]; then
docker volume create --name a2rchi-dev-pg-data
fi

# create volume if it doesn't already exist for grafana data
exists=`docker volume ls | awk '{print $2}' | grep a2rchi-dev-grafana-data`
if [[ $exists != 'a2rchi-dev-grafana-data' ]]; then
docker volume create --name a2rchi-dev-grafana-data
fi

# fill-in variables in grafana files
export grafanapass=`cat A2rchi-dev/deploy/dev/secrets/grafana_password.txt`
sed -i 's/GRAFANA_PASSWORD/'"${grafanapass}"'/g' A2rchi-dev/deploy/grafana/datasources.yaml
sed -i 's/GRAFANA_PASSWORD/'"${grafanapass}"'/g' A2rchi-dev/deploy/dev/dev-init.sql
sed -i 's/RUNTIME_ENV/dev/g' A2rchi-dev/deploy/grafana/datasources.yaml
unset grafanapass

# build base image; try to reuse previously built image
cd A2rchi-dev/deploy/dev/
docker build -f ../dockerfiles/Dockerfile-base -t a2rchi-base:BASE_TAG ../..
Expand Down
4 changes: 4 additions & 0 deletions deploy/dockerfiles/Dockerfile-grafana
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# syntax=docker/dockerfile:1
FROM grafana/grafana-enterprise:10.2.0
RUN mkdir -p /etc/grafana/provisioning/datasources
COPY deploy/grafana/datasources.yaml /etc/grafana/provisioning/datasources/
18 changes: 18 additions & 0 deletions deploy/grafana/datasources.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: 1

datasources:
- name: Postgres
type: postgres
url: postgres-RUNTIME_ENV:5432 # templated by dockerfile
user: grafana
secureJsonData:
password: 'GRAFANA_PASSWORD'
jsonData:
database: a2rchi-db
sslmode: 'disable' # disable/require/verify-ca/verify-full
maxOpenConns: 100 # Grafana v5.4+
maxIdleConns: 100 # Grafana v5.4+
maxIdleConnsAuto: true # Grafana v9.5.1+
connMaxLifetime: 14400 # Grafana v5.4+
postgresVersion: 1000 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10; 1000 refers to >= v10
timescaledb: false

0 comments on commit cc9b666

Please sign in to comment.