카테고리 없음
06. Postgresql 모니터링방법
잘나가는전산쟁이
2026. 8. 5. 02:22
728x90
반응형
PostgreSQL 대상 Zabbix Agent 모니터링
- 본 문서는 Zabbix에서 PostgreSQL 또는 compatible DB를 Agent 기반으로 모니터링하는 절차를 설명한다.
- 최신 권장 방식은 Zabbix agent 2와 PostgreSQL plugin, 그리고 Template DB PostgreSQL by Zabbix agent 2 계열 템플릿을 사용하는 방법이다.
- 구버전 또는 기존 운영 환경에서는 Template DB PostgreSQL by Zabbix agent와 UserParameter 기반 설정도 사용할 수 있다.
구성 개요
{width=700px}
- Zabbix Server 또는 Proxy: 수집 데이터 저장, 트리거 평가, 알림 처리 담당.
- PostgreSQL 서버: 대상 DBMS 서버.
- Zabbix Agent 2: PostgreSQL plugin을 통해 DB 상태를 수집하는 컴포넌트.
- 통신 포트:
- Zabbix Server/Proxy -> Agent: 10050/tcp, Passive check.
- Agent -> Zabbix Server/Proxy: 10051/tcp, Active check.
- Agent -> PostgreSQL: 5432/tcp.
권장 방식
- 공식 통합 문서는 PostgreSQL 모니터링에 agent 2와 plugin 사용을 안내한다.
- Agent 2는 PostgreSQL plugin을 통해 연결 정보와 쿼리 결과를 수집할 수 있다.
- 실무에서는 OS 모니터링 템플릿과 DB 모니터링 템플릿을 같은 Host에 함께 연결하는 방식이 일반적이다.
사전 준비
- 대상 서버에는 PostgreSQL이 정상 구동 중이어야 한다.
- 대상 서버에는 zabbix-agent2가 설치되어 있어야 한다.
- Zabbix Web UI에서 Host가 생성되어 있어야 하며, Agent interface가 등록되어 있어야 한다.
- PostgreSQL 접속용 전용 모니터링 계정을 별도로 생성하는 것이 권장된다.
PostgreSQL 모니터링 계정 생성
- 공식 문서는 zbx_monitor 계정을 생성해 모니터링에 필요한 권한을 부여하는 방식을 사용한다.
- 예시는 다음과 같다.
sql
CREATE USER zbx_monitor WITH PASSWORD 'StrongPassword';
GRANT CONNECT ON DATABASE postgres TO zbx_monitor;
- 환경에 따라 추가 권한이 필요할 수 있으나, 기본 원칙은 최소 권한으로 시작하는 것이다.
- 인증 방식은 pg_hba.conf에서 허용해야 하며, 로컬 TCP 연결 예시는 아래와 같다.
conf
host all zbx_monitor 127.0.0.1/32 md5
host all zbx_monitor ::1/128 scram-sha-256
Agent 2 설치
- Rocky Linux 계열 예시는 다음과 같다.
- 운영체제에 맞는 공식 저장소 패키지를 사용한다.
rpm -Uvh https://repo.zabbix.com/zabbix/7.4/release/rhel/9/noarch/zabbix-release-latest.el9.noarch.rpm
dnf clean all
dnf install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
- 설치 후 Agent 2 서비스를 활성화한다.
systemctl enable --now zabbix-agent2
PostgreSQL 접속 정보 설정
Zabbix 공식 문서는 사용자 매크로 방식으로 DB 접속 정보를 설정한다.
주요 매크로는 아래와 같다.
- {$PG.HOST}
- {$PG.PORT}
- {$PG.USER}
- {$PG.PASSWORD}
일반적인 로컬 접속 예시는 다음과 같다.
{$PG.HOST}=127.0.0.1
{$PG.PORT}=5432
{$PG.USER}=zbx_monitor
{$PG.PASSWORD}=StrongPassword
- PostgreSQL이 원격 서버라면 {$PG.HOST}에 실제 DB 주소를 넣고, 포트가 다르면 {$PG.PORT}를 수정한다.
Web UI 등록
- Zabbix Web UI에서 대상 Host를 생성하거나 기존 Host를 연다.
- Templates에서 PostgreSQL by Zabbix agent 2 계열 템플릿을 연결한다.
- Macros 탭에서 위의 PostgreSQL 접속 매크로를 설정한다.
- 저장 후 Latest data에서 PostgreSQL 관련 항목이 수집되는지 확인한다.
수집 항목 예시
- PostgreSQL availability
- Version
- Uptime
- Connections
- Transactions per second
- Replication 상태
- Database size
- Cache hit ratio
- WAL 또는 관련 상태값, 구성에 따라 다름
Passive / Active 선택
- OS Agent 통신은 Passive 또는 Active 중 하나 또는 둘 다 사용할 수 있다.
- PostgreSQL 메트릭 자체는 Agent 2가 DB에 직접 접속해 가져오므로, 핵심은 Agent <-> Zabbix 경로와 Agent -> PostgreSQL 경로가 모두 정상이어야 한다.
- 대규모 환경에서는 Agent 쪽은 Active check 중심으로 운영하고, DB 접속은 로컬 또는 근접 네트워크로 제한하는 구성이 안정적이다.
방화벽 및 접근 제어
- Zabbix Agent 포트는 기존 Agent 운영 정책과 동일하게 적용한다.
- Passive: 10050/tcp
- Active: 10051/tcp
- PostgreSQL은 기본적으로 5432/tcp를 사용한다.
- 가능하면 Agent와 PostgreSQL을 같은 서버에 두고 127.0.0.1로 접속하게 구성하는 편이 보안상 유리하다.
대용량 운영 추천값
- 대규모 DB 서버 환경에서는 Agent 2 + Active check + Proxy 조합이 확장성 측면에서 유리하다.
- PostgreSQL 템플릿은 먼저 기본값으로 시작하고, 불필요한 항목은 운영 중 점진적으로 줄이는 것이 좋다.
- 추천 시작 기준은 아래와 같다.
| 항목 | 추천값 |
|---|---|
| Agent 방식 | Zabbix agent 2 |
| 템플릿 | PostgreSQL by Zabbix agent 2 |
| OS 수집 방식 | Active 우선, Passive 보조 |
| DB 접속 경로 | 가능하면 localhost |
| 계정 권한 | 모니터링 최소 권한만 부여 |
| Host 그룹 | Database 계열로 분리 |
| Proxy 사용 | DB 서버가 많거나 망이 분리된 경우 적극 검토 |
구버전 방식
- 구버전 템플릿을 사용할 경우 template_db_postgresql.conf 파일을 Agent 설정 디렉터리에 배치하고, PostgreSQL 접속 정보를 별도 파일로 관리하는 방식이 사용된다.
- 기존 환경이 이미 UserParameter 기반으로 운영 중이라면 즉시 교체하기보다 Agent 2 방식 전환 계획을 별도로 잡는 것이 현실적이다.
점검 항목
- zabbix-agent2 서비스가 정상 실행 중인지 확인한다.
- Agent에서 PostgreSQL 5432 접속이 가능한지 확인한다.
- Web UI 매크로 값이 정확한지 확인한다.
- Latest data에서 PostgreSQL 관련 항목이 들어오는지 확인한다.
- 계정 권한 부족, 잘못된 DSN/Host, Hostname 불일치는 가장 흔한 원인이므로 우선 점검한다.
운영 팁
- OS 템플릿과 PostgreSQL 템플릿을 같은 Host에 함께 연결하면 운영이 단순해진다.
- DB 서버가 많아질수록 Host group, Template, Macro 값을 표준화하는 것이 중요하다.
- 계정 비밀번호는 템플릿 하드코딩보다 Host macro 또는 Vault 연계 방식으로 관리하는 편이 안전하다.
- 복제 환경에서는 replication 관련 상태값까지 함께 확인하도록 템플릿 적용 범위를 검토하는 것이 좋다.
728x90
반응형