coroot-pg-agent를 프로메테우스와 통합하는 방법
postgres 메트릭을 prometheus에 연결하는 것은 매우 흥미로운 작업이며 특정 도구/라이브러리를 사용할 수 있습니다.
이러한 라이브러리는 prometheus에 대한 경고 규칙을 모니터링하고 작성하는 데 유용합니다.
오늘 우리는 coroot-pg-agent에 대해 더 많이 논의할 것입니다.
coroot-pg-agent는 docker를 사용하여 실행할 수 있습니다. 자세한 내용은 여기에서 찾을 수 있습니다.( https://github.com/coroot/coroot-pg-agent )
공식 postgresql에서 : https://www.postgresql.org/about/news/coroot-pg-agent-an-open-source-postgres-exporter-for-prometheus-2488/
이제 prometheus와 함께 coroot-pg-agent를 실행하는 동안 염두에 두어야 할 몇 가지 사항이 있습니다.
도커를 통해 다음 명령을 사용하여 사용자 지정 포트에서 실행할 수 있습니다.
docker run --name coroot-pg-agent \
--env DSN="postgresql://<USER>:<PASSWORD>@<HOST>:5432/postgres?connect_timeout=1&statement_timeout=30000" \
--env LISTEN="0.0.0.0:<custom_port_for_pg_agent>" \
-p <custom_port_for_pg_agent>:<custom_port_for_pg_agent> \
ghcr.io/coroot/coroot-pg-agent
--env PG_SCRAPE_INTERVAL을 사용하여 scrape-interval을 전달할 수도 있습니다.
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다. 여기서 custom_port_for_pg_agent는 3000입니다.
I0823 21:00:58.259629 1 main.go:35] static labels: map[]
I0823 21:00:58.273610 1 main.go:41] listening on: 0.0.0.0:3000
global:
scrape_interval: 5m
scrape_timeout: 3m
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: coroot-pg-agent
static_configs:
- targets: ["<localhost-ip>:<custom_port_for_pg_agent>"]
필요에 따라 스크랩 간격과 시간 초과를 항상 변경할 수 있으며 로컬에서 테스트했기 때문에 이와 같이 유지했습니다.
yml 이상에서 편집하는 동안 scrape_interval은 항상 scrape_timeout보다 커야 합니다.
docker를 사용하여 prometheus를 실행하려면 docker에서 prometheus의 공식 이미지를 사용하는 다음 명령을 사용할 수 있습니다.
docker run \
-p 9090:9090 \
-v ~/pro/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
위의 명령을 실행하면 다음과 같은 출력이 표시됩니다.
ts=2022-08-23T21:02:26.203Z caller=main.go:495 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2022-08-23T21:02:26.203Z caller=main.go:539 level=info msg="Starting Prometheus Server" mode=server version="(version=2.38.0, branch=HEAD, revision=818d6e60888b2a3ea363aee8a9828c7bafd73699)"
ts=2022-08-23T21:02:26.203Z caller=main.go:544 level=info build_context="(go=go1.18.5, user=root@e6b781f65453, date=20220816-13:29:14)"
ts=2022-08-23T21:02:26.204Z caller=main.go:545 level=info host_details="(Linux 5.10.47-linuxkit #1 SMP PREEMPT Sat Jul 3 21:50:16 UTC 2021 aarch64 87decec12cad (none))"
ts=2022-08-23T21:02:26.204Z caller=main.go:546 level=info fd_limits="(soft=1048576, hard=1048576)"
ts=2022-08-23T21:02:26.204Z caller=main.go:547 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2022-08-23T21:02:26.205Z caller=web.go:553 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2022-08-23T21:02:26.205Z caller=main.go:976 level=info msg="Starting TSDB ..."
ts=2022-08-23T21:02:26.206Z caller=tls_config.go:195 level=info component=web msg="TLS is disabled." http2=false
ts=2022-08-23T21:02:26.207Z caller=head.go:495 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2022-08-23T21:02:26.207Z caller=head.go:538 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=10.125µs
ts=2022-08-23T21:02:26.207Z caller=head.go:544 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2022-08-23T21:02:26.207Z caller=head.go:615 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
ts=2022-08-23T21:02:26.207Z caller=head.go:621 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=21.416µs wal_replay_duration=117.958µs total_replay_duration=159.167µs
ts=2022-08-23T21:02:26.208Z caller=main.go:997 level=info fs_type=EXT4_SUPER_MAGIC
ts=2022-08-23T21:02:26.208Z caller=main.go:1000 level=info msg="TSDB started"
ts=2022-08-23T21:02:26.208Z caller=main.go:1181 level=info msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
ts=2022-08-23T21:02:26.210Z caller=main.go:1218 level=info msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml totalDuration=2.047292ms db_storage=750ns remote_storage=1.709µs web_handler=292ns query_engine=583ns scrape=341.75µs scrape_sd=16.708µs notify=542ns notify_sd=792ns rules=1µs tracing=9.625µs
ts=2022-08-23T21:02:26.210Z caller=main.go:961 level=info msg="Server is ready to receive web requests."
ts=2022-08-23T21:02:26.210Z caller=manager.go:941 level=info component="rule manager" msg="Starting rule manager..."
우리는 브라우저를 치고 다음과 같은 화면을 볼 수 있습니다
이제 방문할 수 있는 대상을 보기 위해Targets
목표가 설정되면 다음과 같이 상태가 변경된 것을 볼 수 있습니다.
graph을 방문할 수 있으며 여기에서 검색 표시줄을 누르면 자동 제안이 계속 켜져 있으므로 다음과 같이 볼 수 있습니다.
Reference
이 문제에 관하여(coroot-pg-agent를 프로메테우스와 통합하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gauravdagde/how-to-integrate-coroot-pg-agent-with-prometheus-2i48텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)