ใปใซใใในใใฎ Postgres ใฎใใผใฟใใผในใขใใฟใชใณใฐใฎ่จญๅฎ
ใใผใฟใใผในใขใใฟใชใณใฐใฏใใฏใจใชใกใใชใฏในใใฏใจใชใตใณใใซใๅฎ่ก่จ็ปใใใผใฟใใผในใฎ็ถๆ
ใใใงใคใซใชใผใใผใใคใใณใใๅ
ฌ้ใใใใจใงใPostgres ใใผใฟใใผในใ่ฉณ็ดฐใซๅฏ่ฆๅใใพใใ
Agent ใฏใ่ชญใฟๅใๅฐ็จใฎใฆใผใถใผใจใใฆใญใฐใคใณใใใใจใงใใผใฟใใผในใใ็ดๆฅใใฌใกใใชใผใๅ้ใใพใใPostgres ใใผใฟใใผในใงใใผใฟใใผในใขใใฟใชใณใฐใๆๅนใซใใใซใฏใไปฅไธใฎ่จญๅฎใ่กใฃใฆใใ ใใใ
- ใใผใฟใใผในใฎใใฉใกใผใฟใผใๆงๆใใ
- Agent ใซใใผใฟใใผในใธใฎใขใฏใปในใไปไธใใ
- Agent ใใคใณในใใผใซใใ
ใฏใใใซ
- ใตใใผใๅฏพ่ฑกใฎ PostgreSQL ใใผใธใงใณ
- 9.6ใ10ใ11ใ12ใ13ใ14ใ15ใ16
- ๅๆๆกไปถ
- Postgres ใฎ่ฟฝๅ ๆไพใขใธใฅใผใซใใคใณในใใผใซใใใฆใใๅฟ
่ฆใใใใพใใใปใจใใฉใฎใคใณในใใผใซใงใฏใใใใฏใใใฉใซใใงๅซใพใใฆใใพใใใใใพใไธ่ฌ็ใงใชใใคใณในใใผใซใงใฏใใไฝฟใใฎใใผใธใงใณใฎ
postgresql-contrib
ใใใฑใผใธใฎ่ฟฝๅ ใคใณในใใผใซใๅฟ
่ฆใซใชใๅ ดๅใใใใพใใ - ใตใใผใๅฏพ่ฑกใฎ Agent ใใผใธใงใณ
- 7.36.1+
- ใใใฉใผใใณในใธใฎๅฝฑ้ฟ
- ใใผใฟใใผในใขใใฟใชใณใฐใฎใใใฉใซใใฎ Agent ใณใณใใฃใฎใฅใฌใผใทใงใณใฏไฟๅฎ็ใงใใใๅ้้้ใใฏใจใชใฎใตใณใใชใณใฐใฌใผใใชใฉใฎ่จญๅฎใ่ชฟๆดใใใใจใงใใใใใผใบใซๅใฃใใใฎใซใใใใจใใงใใพใใใฏใผใฏใญใผใใฎๅคงๅใซใใใฆใAgent ใฏใใผใฟใใผในไธใฎใฏใจใชๅฎ่กๆ้ใฎ 1 % ๆชๆบใใใใณ CPU ใฎ 1 % ๆชๆบใๅ ใใฆใใพใใ
ใใผใฟใใผในใขใใฟใชใณใฐใฏใใใผในใจใชใ Agent ไธใฎใคใณใใฐใฌใผใทใงใณใจใใฆๅไฝใใพใ (ใใณใใใผใฏใๅ็
งใใฆใใ ใใ)ใ - ใใญใญใทใใญใผใใใฉใณใตใผใใณใใฏใทใงใณใใผใฉใผ
- Datadog Agent ใฏใ็ฃ่ฆๅฏพ่ฑกใฎใในใใซ็ดๆฅๆฅ็ถใใๅฟ
่ฆใใใใพใใใปใซใใในใๅใฎใใผใฟใใผในใฎๅ ดๅใฏใ
127.0.0.1
ใพใใฏใฝใฑใใใๆจๅฅจใใใพใใAgent ใฏใใใญใญใทใใญใผใใใฉใณใตใผใใพใใฏ pgbouncer
ใชใฉใฎใณใใฏใทใงใณใใผใฉใผใไปใใฆใใผใฟใใผในใซๆฅ็ถใในใใงใฏใใใพใใใAgent ใๅฎ่กไธญใซ็ฐใชใใในใใซๆฅ็ถใใใจ (ใใงใคใซใชใผใใผใใญใผใใใฉใณใทใณใฐใชใฉใฎๅ ดๅ)ใAgent ใฏ 2 ใคใฎใในใ้ใง็ตฑ่จๆ
ๅ ฑใฎๅทฎใ่จ็ฎใใไธๆญฃ็ขบใชใกใใชใฏในใ็ๆใใพใใ - ใใผใฟใปใญใฅใชใใฃใธใฎ้
ๆ
ฎ
- Agent ใใๅฎขๆงใฎใใผใฟใใผในใใใฉใฎใใใชใใผใฟใๅ้ใใใใใพใใใฎใใผใฟใฎๅฎๅ
จๆงใใฉใฎใใใซ็ขบไฟใใฆใใใใซใคใใฆใฏใๆฉๅฏๆ
ๅ ฑใๅ็
งใใฆใใ ใใใ
Postgres ่จญๅฎใๆงๆใใ
postgresql.conf
ใซไปฅไธใฎใใฉใกใผใฟใผใๆงๆใใใตใผใใผใๅ่ตทๅใใใจ่จญๅฎใๆๅนใซใชใใพใใใใใใฎใใฉใกใผใฟใผใฎ่ฉณ็ดฐใซใคใใฆใฏใPostgres ใใญใฅใกใณใใๅ็
งใใฆใใ ใใใ
ใใฉใกใผใฟใผ | ๅค | ่ชฌๆ |
---|
shared_preload_libraries | pg_stat_statements | postgresql.queries.* ใกใใชใฏในใซๅฏพใใฆๅฟ
่ฆใงใใpg_stat_statements ๆกๅผตๆฉ่ฝใไฝฟ็จใใฆใใฏใจใชใกใใชใฏในใฎๅ้ใๅฏ่ฝใซใใพใใ |
track_activity_query_size | 4096 | ใใๅคงใใชใฏใจใชใๅ้ใใใใใซๅฟ
่ฆใงใใpg_stat_activity ใฎ SQL ใใญในใใฎใตใคใบใๆกๅคงใใพใใ ใใใฉใซใๅคใฎใพใพใ ใจใ1024 ๆๅญใ่ถ
ใใใฏใจใชใฏๅ้ใใใพใใใ |
pg_stat_statements.track | ALL | ใชใใทใงใณใงใใในใใขใใใญใทใผใธใฃใ้ขๆฐๅ
ใฎในใใผใใกใณใใ่ฟฝ่ทกใใใใจใใงใใพใใ |
pg_stat_statements.max | 10000 | ใชใใทใงใณใงใใpg_stat_statements ใง่ฟฝ่ทกใใๆญฃ่ฆๅใใใใฏใจใชใฎๆฐใๅขใใใพใใใใฎ่จญๅฎใฏใๅคใใฎ็ฐใชใใฏใฉใคใขใณใใใใใพใใพใช็จฎ้กใฎใฏใจใชใ้ไฟกใใใๅคงๅฎน้ใฎใใผใฟใใผในใซๆจๅฅจใใใพใใ |
pg_stat_statements.track_utility | off | ใชใใทใงใณใPREPARE ใ EXPLAIN ใจใใฃใใฆใผใใฃใชใใฃใณใใณใใ็กๅนใซใใพใใใใฎๅคใ off ใซ่จญๅฎใใใจใSELECTใUPDATEใDELETE ใฎใใใชใฏใจใชใฎใฟใ่ฟฝ่ทกใใใพใใ |
track_io_timing | on | ใชใใทใงใณใใฏใจใชใฎใใญใใฏใฎ่ชญใฟๅใใใใณๆธใ่พผใฟๆ้ใฎๅ้ใๆๅนใซใใพใใ |
Agent ใซใขใฏใปในใไปไธใใ
Datadog Agent ใ็ตฑ่จใใฏใจใชใๅ้ใใใใใซใฏใใใผใฟใใผใน ใตใผใใผใธใฎ่ชญใฟๅใๅฐ็จใฎใขใฏใปในใๅฟ
่ฆใจใชใใพใใ
Postgres ใ่ค่ฃฝใใใฆใใๅ ดๅใไปฅไธใฎ SQL ใณใใณใใฏใฏใฉในใฟใผๅ
ใฎใใฉใคใใชใใผใฟใใผในใตใผใใผ (ใฉใคใฟใผ) ใงๅฎ่กใใๅฟ
่ฆใใใใพใใAgent ใๆฅ็ถใใใใผใฟใใผในใตใผใใผไธใฎ PostgreSQL ใใผใฟใใผในใ้ธๆใใพใใAgent ใฏใใฉใฎใใผใฟใใผในใซๆฅ็ถใใฆใใใผใฟใใผในใตใผใใผไธใฎใในใฆใฎใใผใฟใใผในใใใใฌใกใใชใผใๅ้ใใใใจใใงใใใใใใใใฉใซใใฎ postgres
ใใผใฟใใผในใไฝฟ็จใใใใจใใๅงใใใพใใ[ใใฎใใผใฟใใผในใซๅฏพใใฆใๅบๆใฎใใผใฟใซๅฏพใใใซในใฟใ ใฏใจใช]ใ Agentใงๅฎ่กใใๅฟ
่ฆใใใๅ ดๅใฎใฟๅฅใฎใใผใฟใใผในใ้ธๆใใฆใใ ใใ6ใ
้ธๆใใใใผใฟใใผในใซใในใผใใผใฆใผใถใผ (ใพใใฏๅๅใชๆจฉ้ใๆใคไปใฎใฆใผใถใผ) ใจใใฆๆฅ็ถใใพใใไพใใฐใ้ธๆใใใใผใฟใใผในใ postgres
ใงใใๅ ดๅใฏใๆฌกใฎใใใซๅฎ่กใใฆ psql ใไฝฟ็จใใ postgres
ใฆใผใถใผใจใใฆๆฅ็ถใใพใใ
psql -h mydb.example.com -d postgres -U postgres
datadog
ใฆใผใถใผใไฝๆใใพใใ
CREATE USER datadog WITH password '<PASSWORD>';
datadog
ใฆใผใถใผใซ้ข้ฃใใผใใซใธใฎๆจฉ้ใไปไธใใพใใ
ALTER ROLE datadog INHERIT;
ใในใฆใฎใใผใฟใใผในใซไปฅไธใฎในใญใผใใไฝๆใใพใใ
CREATE SCHEMA datadog;
GRANT USAGE ON SCHEMA datadog TO datadog;
GRANT USAGE ON SCHEMA public TO datadog;
GRANT pg_monitor TO datadog;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
ใในใฆใฎใใผใฟใใผในใซไปฅไธใฎในใญใผใใไฝๆใใพใใ
CREATE SCHEMA datadog;
GRANT USAGE ON SCHEMA datadog TO datadog;
GRANT USAGE ON SCHEMA public TO datadog;
GRANT pg_monitor TO datadog;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
ใในใฆใฎใใผใฟใใผในใซไปฅไธใฎในใญใผใใไฝๆใใพใใ
CREATE SCHEMA datadog;
GRANT USAGE ON SCHEMA datadog TO datadog;
GRANT USAGE ON SCHEMA public TO datadog;
GRANT SELECT ON pg_stat_database TO datadog;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
ใในใฆใฎใใผใฟใใผในใซ้ขๆฐใไฝๆใใฆใAgent ใ pg_stat_activity
ใใใณ pg_stat_statements
ใฎๅ
จใณใณใใณใใ่ชญใฟ่พผใใใใใซใใพใใ
CREATE OR REPLACE FUNCTION datadog.pg_stat_activity() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
SECURITY DEFINER;
CREATE OR REPLACE FUNCTION datadog.pg_stat_statements() RETURNS SETOF pg_stat_statements AS
$$ SELECT * FROM pg_stat_statements; $$
LANGUAGE sql
SECURITY DEFINER;
่ฟฝๅ ใฎใใผใใซใใฏใจใชใใๅฟ
่ฆใใใใใผใฟๅ้ใพใใฏใซในใฟใ ใกใใชใฏในใฎๅ ดๅใฏใใใใใฎใใผใใซใฎ
SELECT
ๆจฉ้ใ
datadog
ใฆใผใถใผใซไปไธใใๅฟ
่ฆใใใใใใใใพใใใไพ:
grant SELECT on <TABLE_NAME> to datadog;
่ฉณ็ดฐใฏ
PostgreSQL ใซในใฟใ ใกใใชใฏในใฎๅ้ใๅ็
งใใฆใใ ใใใ
Agent ใๅฎ่ก่จ็ปใๅ้ใงใใใใใซใใในใฆใฎใใผใฟใใผในใซ้ขๆฐใไฝๆใใพใใ
CREATE OR REPLACE FUNCTION datadog.explain_statement(
l_query TEXT,
OUT explain JSON
)
RETURNS SETOF JSON AS
$$
DECLARE
curs REFCURSOR;
plan JSON;
BEGIN
OPEN curs FOR EXECUTE pg_catalog.concat('EXPLAIN (FORMAT JSON) ', l_query);
FETCH curs INTO plan;
CLOSE curs;
RETURN QUERY SELECT plan;
END;
$$
LANGUAGE 'plpgsql'
RETURNS NULL ON NULL INPUT
SECURITY DEFINER;
ใในใฏใผใใๅฎๅ
จใซไฟ็ฎก
Store your password using secret management software such as Vault. You can then reference this password as ENC[<SECRET_NAME>]
in your Agent configuration files: for example, ENC[datadog_user_database_password]
. See Secrets Management for more information.
The examples on this page use datadog_user_database_password
to refer to the name of the secret where your password is stored. It is possible to reference your password in plain text, but this is not recommended.
ๆค่จผใใ
ๆจฉ้ใๆญฃใใใใจใ็ขบ่ชใใใใใซใไปฅไธใฎใณใใณใใๅฎ่กใใฆใAgent ใฆใผใถใผใใใผใฟใใผในใซๆฅ็ถใใฆใณใขใใผใใซใ่ชญใฟๅใใใจใใงใใใใจใ็ขบ่ชใใพใใ
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_database limit 1;" \
&& echo -e "\e[0;32mPostgres connection - OK\e[0m" \
|| echo -e "\e[0;31mCannot connect to Postgres\e[0m"
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_activity limit 1;" \
&& echo -e "\e[0;32mPostgres pg_stat_activity read OK\e[0m" \
|| echo -e "\e[0;31mCannot read from pg_stat_activity\e[0m"
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_statements limit 1;" \
&& echo -e "\e[0;32mPostgres pg_stat_statements read OK\e[0m" \
|| echo -e "\e[0;31mCannot read from pg_stat_statements\e[0m"
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_database limit 1;" \
&& echo -e "\e[0;32mPostgres connection - OK\e[0m" \
|| echo -e "\e[0;31mCannot connect to Postgres\e[0m"
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_activity limit 1;" \
&& echo -e "\e[0;32mPostgres pg_stat_activity read OK\e[0m" \
|| echo -e "\e[0;31mCannot read from pg_stat_activity\e[0m"
psql -h localhost -U datadog postgres -A \
-c "select * from pg_stat_statements limit 1;" \
&& echo -e "\e[0;32mPostgres pg_stat_statements read OK\e[0m" \
|| echo -e "\e[0;31mCannot read from pg_stat_statements\e[0m"
ใในใฏใผใใฎๅ
ฅๅใๆฑใใใใๅ ดๅใฏใdatadog
ใฆใผใถใผใไฝๆใใใจใใซๅ
ฅๅใใใในใฏใผใใไฝฟ็จใใฆใใ ใใใ
Agent ใฎใคใณในใใผใซ
Datadog Agent ใใคใณในใใผใซใใใจใPostgres ใงใฎใใผใฟใใผในใขใใฟใชใณใฐใซๅฟ
่ฆใช Postgres ใใงใใฏใใคใณในใใผใซใใใพใใPostgres ใใผใฟใใผในใในใใฎ Agent ใใพใ ใคใณในใใผใซใใฆใใชใๅ ดๅใฏใAgent ใฎใคใณในใใผใซๆ้ ใๅ็
งใใฆใใ ใใใ
- Agent ใฎ
conf.d/postgres.d/conf.yaml
ใใกใคใซใ็ทจ้ใใฆใhost
/ port
ใๆๅฎใใ็ฃ่ฆใใใในใใ่จญๅฎใใพใใไฝฟ็จๅฏ่ฝใชใในใฆใฎใณใณใใฃใฎใฅใฌใผใทใงใณใชใใทใงใณใซใคใใฆใฏใใตใณใใซ postgres.d/conf.yaml ใๅ็
งใใฆใใ ใใใ
init_config:
instances:
- dbm: true
host: localhost
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
## ใชใใทใงใณ: `custom_queries` ใซๅฟ
่ฆใชๅ ดๅใฏใๅฅใฎใใผใฟใใผในใซๆฅ็ถใใพใ
# dbname: '<DB_NAME>'
init_config:
instances:
- dbm: true
host: localhost
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
pg_stat_statements_view: datadog.pg_stat_statements()
pg_stat_activity_view: datadog.pg_stat_activity()
## ใชใใทใงใณ: `custom_queries` ใซๅฟ
่ฆใชๅ ดๅใฏใๅฅใฎใใผใฟใใผในใซๆฅ็ถใใพใ
# dbname: '<DB_NAME>'
ๆณจ: ใในใฏใผใใซ็นๆฎๆๅญใๅซใพใใๅ ดๅใฏใๅไธๅผ็จ็ฌฆใงๅฒใใงใใ ใใใ
- Agent ใๅ่ตทๅใใพใใ
ใญใฐใฎๅ้ (ใชใใทใงใณ)
PostgreSQL ใฎใใใฉใซใใฎใญใฐใฏ stderr
ใซ่จ้ฒใใใใญใฐใซ่ฉณ็ดฐใชๆ
ๅ ฑใฏๅซใพใใพใใใใญใฐ่กใฎใใฌใใฃใใฏในใซๆๅฎใใใ่ฉณ็ดฐใ่ฟฝๅ ใใฆใใกใคใซใซ่จ้ฒใใใใจใใๅงใใใพใใ่ฉณ็ดฐใซใคใใฆใฏใใใฎใใใใฏใซ้ขใใ PostgreSQL ใใญใฅใกใณใใๅ็
งใใฆใใ ใใใ
ใญใฎใณใฐใฏใใกใคใซ /etc/postgresql/<ใใผใธใงใณ>/main/postgresql.conf
ๅ
ใงๆงๆใใใพใใในใใผใใกใณใๅบๅใๅซใ้ๅธธใฎใญใฐ็ตๆใฎๅ ดๅใใญใฐใปใฏใทใงใณใฎๆฌกใฎใใฉใกใผใฟใผใฎใณใกใณใใๅคใใพใใ
logging_collector = on
log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA
log_filename = 'pg.log' # log file name, can include pattern
log_statement = 'all' # log all queries
#log_duration = on
log_line_prefix= '%m [%p] %d %a %u %h %c '
log_file_mode = 0644
## For Windows
#log_destination = 'eventlog'
่ฉณ็ดฐใชๆ้ใกใใชใฏในใๅ้ใใDatadog ใคใณใฟใผใใงใผในใงๆค็ดขๅฏ่ฝใซใใใซใฏใในใใผใใกใณใ่ชไฝใไฝฟ็จใใฆใคใณใฉใคใณใงๆงๆใใๅฟ
่ฆใใใใพใใไธ่จใฎไพใจๆจๅฅจใณใณใใฃใฎใฅใฌใผใทใงใณใจใฎ้ใใซใคใใฆใฏใไปฅไธใๅ็
งใใฆใใ ใใใใพใใlog_statement
ใชใใทใงใณใจ log_duration
ใชใใทใงใณใฎไธกๆนใใณใกใณใใขใฆใใใใฆใใใฎใงๆณจๆใใฆใใ ใใใใใฎใใใใฏใซ้ขใใ่ญฐ่ซใฏใใกใใใ่ฆงใใ ใใใ
ใใฎๆงๆใฏใในใฆใฎในใใผใใกใณใใใญใฐใใพใใใๅบๅใ็นๅฎใฎๆ้ใๆใคใใฎใซๆธใใใซใฏใlog_min_duration_statement
ใฎๅคใ็ฎ็ใฎๆๅฐๆ้๏ผใใช็งๅไฝ๏ผใซ่จญๅฎใใพใ๏ผๅฎๅ
จใช SQL ในใใผใใกใณใใฎใญใฐ่จ้ฒใ็ต็นใฎใใฉใคใใทใผ่ฆไปถใซๆบๆ ใใฆใใใใจใ็ขบ่ชใใฆใใ ใใ๏ผใ
log_min_duration_statement = 0 # -1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# statements running at least this number
# of milliseconds
#log_statement = 'all'
#log_duration = on
Datadog Agent ใงใใญใฐใฎๅ้ใฏใใใฉใซใใง็กๅนใซใชใฃใฆใใพใใไปฅไธใฎใใใซใdatadog.yaml
ใใกใคใซใงใใใๆๅนใซใใพใใ
PostgreSQL ใฎใญใฐใฎๅ้ใ้ๅงใใใซใฏใๆฌกใฎๆงๆใใญใใฏใ conf.d/postgres.d/conf.yaml
ใใกใคใซใซ่ฟฝๅ ใใ็ทจ้ใใพใใ
logs:
- type: file
path: "<LOG_FILE_PATH>"
source: postgresql
service: "<SERVICE_NAME>"
#To handle multi line that starts with yyyy-mm-dd use the following pattern
#log_processing_rules:
# - type: multi_line
# pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
# name: new_log_start_with_date
service
ใใฉใกใผใฟใผใจ path
ใใฉใกใผใฟใผใฎๅคใๅคๆดใใ็ฐๅขใซๅใใใฆๆงๆใใฆใใ ใใใไฝฟ็จๅฏ่ฝใชใในใฆใฎๆงๆใชใใทใงใณใฎ่ฉณ็ดฐใซใคใใฆใฏใใตใณใใซ postgres.d/conf.yaml ใๅ็
งใใฆใใ ใใใ
Agent ใๅ่ตทๅใใพใใ
UpdateAzureIntegration
Agent ใฎ status ใตใใณใใณใใๅฎ่กใใChecks ใปใฏใทใงใณใง postgres
ใๆขใใพใใใพใใฏใใใผใฟใใผในใฎใใผใธใๅ็
งใใฆใใ ใใใ
Agent ใฎๆงๆไพ
One agent connecting to multiple hosts
It is common to configure a single Agent host to connect to multiple remote database instances (see Agent installation architectures for DBM). To connect to multiple hosts, create an entry for each host in the Postgres integration config.
Datadog recommends using one Agent to monitor no more than 30 database instances.
Benchmarks show that one Agent running on a t4g.medium EC2 instance (2 CPUs and 4GB of RAM) can successfully monitor 30 RDS db.t3.medium instances (2 CPUs and 4GB of RAM).
init_config:
instances:
- dbm: true
host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
- dbm: true
host: example-serviceโreplica-1.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
- dbm: true
host: example-serviceโreplica-2.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
[...]
Monitoring multiple databases on a database host
Use the database_autodiscovery
option to permit the Agent to discover all databases on your host to monitor. You can specify include
or exclude
fields to narrow the scope of databases discovered. See the sample postgres.d/conf.yaml for more details.
init_config:
instances:
- dbm: true
host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
database_autodiscovery:
enabled: true
# Optionally, set the include field to specify
# a set of databases you are interested in discovering
include:
- mydb.*
- example.*
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
Running custom queries
To collect custom metrics, use the custom_queries
option. See the sample postgres.d/conf.yaml for more details.
init_config:
instances:
- dbm: true
host: localhost
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
custom_queries:
- metric_prefix: employee
query: SELECT age, salary, hours_worked, name FROM hr.employees;
columns:
- name: custom.employee_age
type: gauge
- name: custom.employee_salary
type: gauge
- name: custom.employee_hours
type: count
- name: name
type: tag
tags:
- 'table:employees'
Monitoring relation metrics for multiple databases
In order to collect relation metrics (such as postgresql.seq_scans
, postgresql.dead_rows
, postgresql.index_rows_read
, and postgresql.table_size
), the Agent must be configured to connect to each database (by default, the Agent only connects to the postgres
database).
Specify a single โDBMโ instance to collect DBM telemetry from all databases. Use the database_autodiscovery
option to avoid specifying each database name.
init_config:
instances:
# This instance is the "DBM" instance. It will connect to the
# all logical databases, and send DBM telemetry from all databases
- dbm: true
host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
database_autodiscovery:
enabled: true
exclude:
- ^users$
- ^inventory$
relations:
- relation_regex: .*
# This instance only collects data from the `users` database
# and collects relation metrics from tables prefixed by "2022_"
- host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
dbname: users
dbstrict: true
relations:
- relation_regex: 2022_.*
relkind:
- r
- i
# This instance only collects data from the `inventory` database
# and collects relation metrics only from the specified tables
- host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
dbname: inventory
dbstrict: true
relations:
- relation_name: products
- relation_name: external_seller_products
Collecting schemas
To enable this feature, use the collect_schemas
option. You must also configure the Agent to connect to each logical database.
Use the database_autodiscovery
option to avoid specifying each logical database. See the sample postgres.d/conf.yaml for more details.
init_config:
# This instance only collects data from the `users` database
# and collects relation metrics only from the specified tables
instances:
- dbm: true
host: example-service-primary.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
dbname: users
dbstrict: true
collect_schemas:
enabled: true
relations:
- products
- external_seller_products
# This instance detects every logical database automatically
# and collects relation metrics from every table
- dbm: true
host: example-serviceโreplica-1.example-host.com
port: 5432
username: datadog
password: 'ENC[datadog_user_database_password]'
database_autodiscovery:
enabled: true
collect_schemas:
enabled: true
relations:
- relation_regex: .*
Working with hosts through a proxy
If the Agent must connect through a proxy such as the Cloud SQL Auth proxy, all telemetry is tagged with the hostname of the proxy rather than the database instance. Use the reported_hostname
option to set a custom override of the hostname detected by the Agent.
init_config:
instances:
- dbm: true
host: localhost
port: 5000
username: datadog
password: 'ENC[datadog_user_database_password]'
reported_hostname: example-service-primary
- dbm: true
host: localhost
port: 5001
username: datadog
password: 'ENC[datadog_user_database_password]'
reported_hostname: example-service-replica-1
ใใฉใใซใทใฅใผใใฃใณใฐ
ใคใณใใฐใฌใผใทใงใณใจ Agent ใๆ้ ้ใใซใคใณในใใผใซใป่จญๅฎใใฆใๆๅพ
้ใใซๅไฝใใชใๅ ดๅใฏใใใฉใใซใทใฅใผใใฃใณใฐใๅ็
งใใฆใใ ใใใ
ๅ่่ณๆ
ใๅฝนใซ็ซใคใใญใฅใกใณใใใชใณใฏใ่จไบ: