Prometheus와 Grafana로 모니터링 구성
모니터링 및 경고 스택은 아래와 같이 메트릭 수집, 저장, 인덱싱, 시각화를 담당하는 여러 구성 요소를 사용합니다.
- Node Exporter → CPU, 메모리, 디스크 등 하드웨어 수준 메트릭을 내보냅니다. cAdvisor → CPU, 메모리, 네트워크 등 컨테이너 수준 메트릭을 내보냅니다. Blackbox Exporter → HTTP 엔드포인트의 상태 코드와 지연 시간 등을 모니터링합니다. Prometheus → 여러 에이전트와 대상에서 메트릭을 수집해 인덱싱하고 저장하며 보존 기간도 관리합니다. Grafana → Prometheus, Loki 등 여러 데이터 소스의 메트릭을 시각화합니다.
참고: Bahmni Observability는 이 구성 요소를 실행하기 위한 Docker Compose 구성만 포함하며 별도의 맞춤 수정은 하지 않습니다. 추가 구성과 확장은 각 구성 요소의 공식 문서를 참조하십시오.
아래 구성은 Linux, 특히 Ubuntu에서 충분히 테스트되었습니다. Windows나 Mac 등 다른 플랫폼에서는 파일 시스템 차이와 제한 때문에 일부 메트릭이 올바르게 수집되지 않을 수 있습니다. 다른 호스트에서는 공식 문서를 참조하여 구성 매개변수를 알맞게 조정하는 것이 좋습니다.
목차
Bahmni 애플리케이션 서버에서 메트릭 에이전트 실행
모니터링 스택 구성의 첫 단계는 CPU, 메모리, 디스크 사용량 등의 메트릭을 내보내는 필수 에이전트를 노드에서 실행하는 것입니다.
1단계: bahmni-observability 저장소 복제
2단계: 에이전트 실행
앞 단계에서 복제한 저장소의 루트로 이동한 뒤 monitoring-metrics 프로필을 시작합니다. .env 파일의 COMPOSE_PROFILES 값을 monitoring-metrics로 변경합니다.
위 명령은 node-exporter와 cAdvisor Docker 이미지를 가져와 서비스를 시작합니다. 서비스가 메트릭을 내보내는 포트는 두 개입니다. 브라우저에서 http://<ip>:8100/metrics로 컨테이너 메트릭을, http://<ip>:9100/metrics로 노드 메트릭을 확인할 수 있습니다.
3단계: 에이전트가 공개하는 포트의 방화벽 규칙
앞서 설명한 것처럼 에이전트는 8100 및 9100 포트에서 메트릭을 공개합니다. 설치 환경에 맞춰 모니터링 서버의 TCP 연결을 허용하는 방화벽 규칙을 추가하십시오. 모니터링 스택을 Bahmni 애플리케이션 서버와 같은 컴퓨터에서 실행한다면 이 단계는 필요 없습니다.
모니터링 서버에서 모니터링 서비스 실행
다음 구성 단계에서는 에이전트에서 메트릭을 수집하고 대시보드로 시각화할 Prometheus와 Grafana 서비스를 실행합니다.
1단계: bahmni-observability 저장소 복제
참고: Bahmni와 같은 서버에서 모니터링 스택을 실행하여 앞 단계에서 이미 저장소를 복제했다면 이 단계를 건너뜁니다.
2단계: 에이전트 정보 구성
에이전트를 실행하는 인스턴스의 IP 주소와 포트를 prometheus.yml 파일에 구성해야 합니다. 이 구성으로 Prometheus가 에이전트에서 메트릭을 수집할 수 있습니다. 추가 구성은 관련 문서를 참조하십시오.
호스트 정보를 구성하려면 에이전트가 실행되는 서버의 IP 주소를 확인해야 합니다. ifconfig 명령으로 IP를 찾을 수 있습니다. 모니터링 스택을 같은 컴퓨터에서 실행한다면 서버에 할당된 로컬 네트워크 IP를 사용합니다. 참고: 방화벽 도구에 FQDN을 구성했다면 서버의 FQDN을 사용할 수도 있습니다.
- 원하는 텍스트 편집기에서 bahmni-observability/config/prometheus.yml 파일을 엽니다. cadvisor 작업의 targets 영역에 '<ip>:8100'을 추가합니다. node 작업의 targets 영역에 '<ip>:9100'을 추가합니다. 참고: target은 여러 호스트를 지정해 하나의 모니터링 스택에서 여러 서버의 메트릭을 관리하고 시각화할 수 있는 YAML 목록입니다. 구성 파일에는 애플리케이션 서버와 모니터링 서버의 정보를 모두 추가해야 합니다. HTTP 엔드포인트를 모니터링하는 blackbox_exporter 작업도 있습니다. 구축 환경에 배포한 애플리케이션을 targets 아래에 지정하십시오. 예시: 구성 파일의 변경사항을 저장합니다. 아래 예시는 Bahmni 애플리케이션 서버 IP가 10.0.1.100이고 모니터링 서버 IP가 10.0.2.100인 구성 파일입니다.
- https://10.0.1.100/openmrs
- https://10.0.1.100/openelis
- http://10.0.1.100:80693단계: 서비스 시작
앞 단계에서 복제한 저장소의 루트로 이동한 뒤 monitoring-metrics 프로필을 시작합니다. .env 파일의 COMPOSE_PROFILES 값을 monitoring-metrics,monitoring으로 변경합니다.
위 명령은 Grafana, Prometheus, 프록시로 사용하는 nginx의 Docker 이미지를 가져옵니다.
몇 분 뒤 http://<ip>:81에서 Grafana에 접근할 수 있습니다(<ip>는 모니터링 서버의 IP). 기본 자격 증명은 admin/admin입니다. 처음 로그인하면 Grafana에서 비밀번호 변경을 요청합니다. admin 사용자에게 강력한 비밀번호를 설정하는 것을 적극 권장합니다. 이후 Grafana에 사용자를 추가할 수 있습니다.
4단계: Grafana 접근에 SSL 추가(선택 사항)
Grafana 접근의 SSL 종료는 프록시 서비스로 처리합니다. 기본 구성에는 이를 위한 nginx가 포함되며 서비스 이름은 monitoring-proxy입니다.
도메인의 SSL 인증서를 생성하거나 발급받습니다. 전체 체인 인증서는 cert.pem, 키는 key.pem 이름으로 모니터링 서버의 디렉터리에 복사합니다.
- .env 파일의 CERTIFICATE_PATH 변수에 디렉터리 경로를 설정합니다. docker-compose.yml의 monitoring-proxy 서비스 volumes 영역에서 CERTIFCATE_PATH 볼륨의 주석을 해제합니다. 텍스트 편집기에서 bahmni-observability/config/default.conf.template 파일을 엽니다. 파일의 지정된 줄에서 주석을 해제합니다. docker-compose.yml의 monitoring-proxy 서비스 ports 영역에서 445 포트 구성의 주석을 해제합니다. docker compose --profile monitoring up -d monitoring-proxy를 실행하여 서비스를 갱신합니다.
#listen 443 ssl default_server;
#ssl_certificate /etc/ssl/certs/cert.pem;
#ssl_certificate_key /etc/ssl/certs/key.pem;
#add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains" always;
#add_header X-XSS-Protection "1; mode=block" always;
#add_header Content-Security-Policy "upgrade-insecure-requests; block-all-mixed-content" always;
#add_header Cross-Origin-Embedder-Policy "require-corp" always;
#add_header Cross-Origin-Opener-Policy "same-origin" always;
#add_header Cross-Origin-Resource-Policy "same-origin" always;
#add_header Referrer-Policy "same-origin" always;
#add_header X-Content-Type-Options "nosniff" always;
#add_header X-Frame-Options "SAMEORIGIN" always;
#add_header X-Permitted-Cross-Domain-Policies "none" always;이제 https://<ip>:445에서 Grafana에 접근할 수 있습니다.
Grafana에 대시보드 가져오기
Grafana에서는 커뮤니티 대시보드를 자신의 Grafana 인스턴스로 가져올 수 있습니다. 가져올 수 있는 Grafana 대시보드가 많이 있으며 직접 맞춤 대시보드를 만들 수도 있습니다. 다음은 기본 제공되는 세 가지 exporter에 권장하는 대시보드입니다.
- Node Exporter Full → 1860, cAdvisor Exporter → 14282, Blackbox Exporter Minimal View → 20168
대시보드를 가져오려면 Dashboards → New → Import → ID 입력 → Prometheus Datasource 선택 → Load 순서로 이동합니다. 자세한 단계는 관련 문서를 참조하십시오.
가져오기가 끝나면 대시보드에서 여러 노드 및 컨테이너 메트릭을 시각화할 수 있습니다.
대시보드 화면 예시

컨테이너 수준 메트릭을 표시하는 cAdvisor 대시보드

Bahmni Wiki · CC BY-SA 4.0