2024-03-23 11:39:28 +05:30
|
|
|
### Collect Postgres Logs
|
|
|
|
|
|
2024-03-27 20:03:27 +05:30
|
|
|
You can configure Postgres logs collection by providing the required collector config to your collector.
|
|
|
|
|
|
2024-03-23 11:39:28 +05:30
|
|
|
#### Create collector config file
|
|
|
|
|
|
|
|
|
|
Save the following config for collecting postgres logs in a file named `postgres-logs-collection-config.yaml`
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
receivers:
|
|
|
|
|
filelog/postgresql:
|
|
|
|
|
include: ["${env:POSTGRESQL_LOG_FILE}"]
|
|
|
|
|
operators:
|
|
|
|
|
# Parse default postgresql text log format.
|
|
|
|
|
# `log_line_prefix` postgres setting defaults to '%m [%p] ' which logs the timestamp and the process ID
|
|
|
|
|
# See https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-LINE-PREFIX for more details
|
|
|
|
|
- type: regex_parser
|
|
|
|
|
if: body matches '^(?P<ts>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.?[0-9]*? [A-Z]*) \\[(?P<pid>[0-9]+)\\] (?P<log_level>[A-Z]*). (?P<message>.*)$'
|
|
|
|
|
parse_from: body
|
|
|
|
|
regex: '^(?P<ts>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.?[0-9]*? [A-Z]*) \[(?P<pid>[0-9]+)\] (?P<log_level>[A-Z]*). (?P<message>.*)$'
|
|
|
|
|
timestamp:
|
|
|
|
|
parse_from: attributes.ts
|
|
|
|
|
layout: '%Y-%m-%d %H:%M:%S %Z'
|
|
|
|
|
severity:
|
|
|
|
|
parse_from: attributes.log_level
|
|
|
|
|
mapping:
|
|
|
|
|
debug:
|
|
|
|
|
- DEBUG1
|
|
|
|
|
- DEBUG2
|
|
|
|
|
- DEBUG3
|
|
|
|
|
- DEBUG4
|
|
|
|
|
- DEBUG5
|
|
|
|
|
info:
|
|
|
|
|
- INFO
|
|
|
|
|
- LOG
|
|
|
|
|
- NOTICE
|
|
|
|
|
- DETAIL
|
2024-03-28 19:57:07 +05:30
|
|
|
warn: WARNING
|
2024-03-23 11:39:28 +05:30
|
|
|
error: ERROR
|
|
|
|
|
fatal:
|
|
|
|
|
- FATAL
|
|
|
|
|
- PANIC
|
|
|
|
|
on_error: send
|
|
|
|
|
- type: move
|
|
|
|
|
if: attributes.message != nil
|
|
|
|
|
from: attributes.message
|
|
|
|
|
to: body
|
|
|
|
|
- type: remove
|
|
|
|
|
if: attributes.log_level != nil
|
|
|
|
|
field: attributes.log_level
|
|
|
|
|
- type: remove
|
|
|
|
|
if: attributes.ts != nil
|
|
|
|
|
field: attributes.ts
|
|
|
|
|
- type: add
|
|
|
|
|
field: attributes.source
|
|
|
|
|
value: postgres
|
|
|
|
|
|
|
|
|
|
processors:
|
|
|
|
|
batch:
|
|
|
|
|
send_batch_size: 10000
|
|
|
|
|
send_batch_max_size: 11000
|
|
|
|
|
timeout: 10s
|
|
|
|
|
|
|
|
|
|
exporters:
|
|
|
|
|
# export to SigNoz cloud
|
|
|
|
|
otlp/postgres-logs:
|
|
|
|
|
endpoint: "${env:OTLP_DESTINATION_ENDPOINT}"
|
|
|
|
|
tls:
|
|
|
|
|
insecure: false
|
|
|
|
|
headers:
|
|
|
|
|
"signoz-access-token": "${env:SIGNOZ_INGESTION_KEY}"
|
|
|
|
|
|
|
|
|
|
# export to local collector
|
2024-03-27 20:03:27 +05:30
|
|
|
# otlp/postgres-logs:
|
2024-03-23 11:39:28 +05:30
|
|
|
# endpoint: "localhost:4317"
|
|
|
|
|
# tls:
|
|
|
|
|
# insecure: true
|
|
|
|
|
|
|
|
|
|
service:
|
|
|
|
|
pipelines:
|
2024-03-27 20:03:27 +05:30
|
|
|
logs/postgresql:
|
2024-03-23 11:39:28 +05:30
|
|
|
receivers: [filelog/postgresql]
|
|
|
|
|
processors: [batch]
|
|
|
|
|
exporters: [otlp/postgresql-logs]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Set Environment Variables
|
|
|
|
|
|
|
|
|
|
Set the following environment variables in your otel-collector environment:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
|
|
# path of Postgres server log file. must be accessible by the otel collector
|
2024-04-01 12:06:08 +05:30
|
|
|
# typically found in /usr/local/var/log/postgresql on macOS
|
|
|
|
|
# running `SELECT pg_current_logfile();` can also give you the location of postgresql log file
|
|
|
|
|
export POSTGRESQL_LOG_FILE=/var/log/postgresql/postgresql.log
|
2024-03-23 11:39:28 +05:30
|
|
|
|
|
|
|
|
# region specific SigNoz cloud ingestion endpoint
|
|
|
|
|
export OTLP_DESTINATION_ENDPOINT="ingest.us.signoz.cloud:443"
|
|
|
|
|
|
|
|
|
|
# your SigNoz ingestion key
|
|
|
|
|
export SIGNOZ_INGESTION_KEY="signoz-ingestion-key"
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Use collector config file
|
|
|
|
|
|
|
|
|
|
Make the collector config file available to your otel collector and use it by adding the following flag to the command for running your collector
|
|
|
|
|
```bash
|
|
|
|
|
--config postgres-logs-collection-config.yaml
|
|
|
|
|
```
|
|
|
|
|
Note: the collector can use multiple config files, specified by multiple occurrences of the --config flag.
|
|
|
|
|
|