Datadog documentation shows a code sample to monitor one postgres DB on Heroku at https://docs.datadoghq.com/agent/basic_agent_usage/heroku/ ```sh if [ -n "$DATABASE_URL" ]; then POSTGREGEX='^postgres://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)$' if [[ $DATABASE_URL =~ $POSTGREGEX ]]; then sed -i "s//${BASH_REMATCH[3]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" sed -i "s//${BASH_REMATCH[1]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" sed -i "s//${BASH_REMATCH[2]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" sed -i "s//${BASH_REMATCH[4]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" sed -i "s//${BASH_REMATCH[5]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" fi fi ``` with ```yaml init_config: instances: - host: port: username: password: dbname: ssl: True ``` Here is an updated version to monitor all DBs associated to an application. ```sh # datadog/prerun.sh # ... monitor_database() { POSTGREGEX='^postgres://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)$' YAML_FILE="$DD_CONF_DIR/conf.d/postgres.d/conf.yaml" DB_URL=$1 if [[ $DB_URL =~ $POSTGREGEX ]]; then echo " - host: ${BASH_REMATCH[3]}" >> $YAML_FILE echo " port: ${BASH_REMATCH[4]}" >> $YAML_FILE echo " username: ${BASH_REMATCH[1]}" >> $YAML_FILE echo " password: ${BASH_REMATCH[2]}" >> $YAML_FILE echo " dbname: ${BASH_REMATCH[5]}" >> $YAML_FILE echo " ssl: True" >> $YAML_FILE fi } # Update the Postgres configuration defined at datadog/conf.d/postgres.yaml # using the Heroku application environment variable. # Note: During the dyno start up, the YAML file will be copied to # $DD_CONF_DIR/conf.d/postgres.d/conf.yaml env | while IFS= read -r line; do ENV_VAR_NAME=${line%%=*} ENV_VAR_VALUE=${line#*=} if [[ $ENV_VAR_NAME =~ 'HEROKU_POSTGRESQL_' ]]; then monitor_database $ENV_VAR_VALUE fi fi done # ... ``` ```yaml # datadog/conf.d/postgres.yaml init_config: # `datadog/prerun.sh` will inject instances below on boot instances: