DBAtlas · 데이터베이스 운영 아틀라스

Prometheus + Grafana로 데이터베이스 모니터링

모니터링난이도: 중급소요 시간: 60–120분

중앙 모니터링 서버(Prometheus, Alertmanager, Grafana)를 설치하고, 모니터링 대상 서버에 node_exporter와 선택한 데이터베이스 exporter를 추가합니다: PostgreSQL, MySQL, Oracle, SQL Server, MongoDB, Redis, Elasticsearch. 최소 권한 모니터링 사용자, systemd 서비스, 기본 alert 규칙, 이메일/webhook 알림, datasource provisioning, 기본 제공 dashboard가 포함됩니다. 데이터베이스 설치 가이드 끝의 '모니터링 연결' 단계의 후속 작업이며, 완료하면 모든 서버의 메트릭을 한 화면에서 보고 문제가 생기면 알림을 보내는 모니터링 체계를 갖추게 됩니다.

구성: 모니터링 서버 1대 + 모니터링 대상 서버

시작하기 전에

  • 모니터링 서버와 모니터링 대상 Linux 서버가 지원되는 운영체제이고 시각이 동기화되어 있습니다(chrony). 시각 차이는 Prometheus에서 "out of bounds" 오류와 잘못된 alert의 원인이 됩니다.
  • 모니터링 서버에 /var/lib/prometheus용 디스크가 충분합니다: 서버 …대 × …일 기준 최소 수 GB. 별도 디스크/LV를 권장합니다. CPU 2개 이상, RAM 4 GB 이상이 필요합니다.
  • 모니터링 서버(…)에서 각 서버로 exporter 포트가 열려 있습니다: 9100(node)…, 9187(PostgreSQL)……, 9104(MySQL)……, 9161(Oracle)……, 9216(MongoDB)……, 9121(Redis)……, 9114(Elasticsearch)……, SQL Server 서버로 ……. 사용자에서 모니터링 서버로 …(Grafana).
  • 서버가 github.com(exporter 및 Prometheus 바이너리)에, 모니터링 서버는 추가로 …rpm.grafana.com…apt.grafana.com…에 HTTPS로 나갈 수 있습니다. 나갈 수 없으면 다른 머신에서 파일을 다운로드해 복사하십시오.
  • PostgreSQL 서버의 pg_hba.conf에 host all all 127.0.0.1/32 scram-sha-256(또는 더 좁은 규칙)이 있습니다. exporter는 로컬에서 TCP와 비밀번호로 접속합니다.
  • 각 데이터베이스에 모니터링 사용자를 만들 수 있는 관리자 계정이 있습니다(PostgreSQL: postgres, MySQL: root, Oracle: SYSDBA, SQL Server: sysadmin, MongoDB: userAdmin, Redis: ACL 권한이 있는 사용자, Elasticsearch: elastic).
  • 모니터링 사용자 비밀번호를 위해 비밀번호 보관소에 항목을 만드십시오. 비밀번호는 단계에서 대화식으로 입력받으며, 해당 exporter 사용자만 읽을 수 있는 파일(0600)에만 기록됩니다.

가이드 단계

  • 준비 — 기본 도구 설치 및 시각 동기화 · 방화벽: exporter 포트를 모니터링 서버에 개방 · 방화벽: Grafana 포트 개방
  • node_exporter(운영체제 메트릭) — node_exporter 다운로드 및 설치 · node_exporter 서비스 정의 · node_exporter 시작
  • PostgreSQL: postgres_exporter — 모니터링 롤 생성(pg_monitor) · 모니터링 롤 비밀번호 설정 · postgres_exporter 다운로드 및 설치 · 연결 설정과 비밀번호 파일 작성 · postgres_exporter 서비스 정의 · postgres_exporter 시작
  • MySQL: mysqld_exporter — 모니터링 사용자와 exporter 자격 증명 파일 생성 · mysqld_exporter 다운로드 및 설치 · mysqld_exporter 서비스 정의 · mysqld_exporter 시작
  • Oracle: oracledb_exporter — 모니터링 사용자 생성 · oracledb_exporter 다운로드 및 설치 · exporter 구성 작성 · oracledb_exporter 서비스 정의 · oracledb_exporter 시작
  • SQL Server: sql_exporter — 모니터링 login 생성(… SQL Server에서) · sql_exporter 다운로드 및 설치 · 대상 구성 작성(…) · sql_exporter 서비스 템플릿 정의 · sql_exporter 시작(…)
  • MongoDB: mongodb_exporter — 모니터링 사용자 생성(mongosh) · mongodb_exporter 다운로드 및 설치 · 자격 증명 파일 작성 · mongodb_exporter 서비스 정의 · mongodb_exporter 시작
  • Redis: redis_exporter — 모니터링 사용자 생성(ACL) · redis_exporter 다운로드 및 설치 · 자격 증명 파일 작성 · redis_exporter 서비스 정의 · redis_exporter 시작
  • Elasticsearch: elasticsearch_exporter — 모니터링 롤과 사용자 생성 · elasticsearch_exporter 다운로드 및 설치 · CA 인증서와 자격 증명 파일 작성 · elasticsearch_exporter 서비스 정의 · elasticsearch_exporter 시작
  • Prometheus — Prometheus 다운로드 및 설치 · Scrape 대상 정의(prometheus.yml) · Alert 규칙 작성 · 구성 검증 · Prometheus 서비스 정의 · Prometheus 시작
  • Alertmanager — Alertmanager 다운로드 및 설치 · 알림 구성 작성 · 구성 검증 · Alertmanager 서비스 정의 · Alertmanager 시작
  • Grafana — Grafana 저장소 정의 · Grafana 저장소 정의 · Grafana 설치 · 보안 설정 · Prometheus datasource 정의(provisioning) · Dashboard provisioning 정의 …
  • 검증 — 모든 대상이 UP인지 확인 · 규칙 로드 확인 · 테스트 alert 전송 · Grafana dashboard 확인
  • 설치 후 작업 — 모니터링 시스템 백업 · 보안 체크리스트 적용
내 환경에 맞춘 단계별 계획 열기 →