Kubernetes 환경의 모니터링 및 중앙 로그 설치
소개
현재 Bahmni는 모니터링과 관측성에 다음 도구를 사용합니다.
1. 모니터링 및 알림: https://prometheus.io/ Prometheus: Prometheus는 오픈 소스 시스템 모니터링 및 알림 도구 모음입니다. Prometheus는 메트릭을 시계열 데이터로 수집하고 저장합니다. 즉, 메트릭 정보는 기록된 타임스탬프 및 레이블이라는 선택적 키-값 쌍과 함께 저장됩니다.
2. 중앙 집중식 로깅: https://grafana.com/oss/loki/ 이 구성은 Promtail, Loki 및 https://grafana.com/ 로 이루어집니다. Grafana: Grafana는 여러 플랫폼에서 사용할 수 있는 오픈 소스 분석 및 대화형 시각화 웹 애플리케이션입니다. 지원되는 데이터 원본에 연결하면 웹에서 차트, 그래프 및 알림을 제공합니다. Loki: Loki는 Prometheus에서 영감을 받은 수평 확장형 고가용성 멀티 테넌트 로그 집계 시스템입니다. 비용 효율이 높고 운영하기 쉽게 설계되었습니다. 로그 내용은 인덱싱하지 않고 각 로그 스트림의 레이블 집합을 인덱싱합니다.
Bahmni 설정
Bahmni는 공급자(Prometheus/Grafana)가 게시하고 유지 관리하는 최신 공식 helm-charts를 사용해 모니터링과 관측성을 관리합니다. Bahmni에는 즉시 사용할 수 있도록 구성된 대시보드와 메트릭이 포함되어 있습니다.
- 모니터링에는 Prometheus, Grafana 및 Loki를 결합한 스택인 kube-prometheus-stack을 사용합니다. 이 스택은 Kubernetes 매니페스트, Grafana 대시보드, Prometheus 규칙, 문서 및 스크립트를 결합하여 Prometheus Operator로 손쉽게 운영할 수 있는 종단 간 Kubernetes 클러스터 모니터링을 제공합니다.
- 중앙 집중식 로깅은 로그 수집기인 Promtail, 로그 저장 및 인덱싱을 담당하는 Loki, 시각화를 담당하는 Grafana로 구성된 Loki 스택을 사용합니다. Loki에 관한 자세한 내용은 여기를 참조하십시오.
현재 모든 네임스페이스의 Kubernetes 구성 요소 로그와 애플리케이션 로그를 Loki에서 확인할 수 있습니다.
모니터링 및 로깅 설치
GitHub Actions 사용
helm-umbrella-charts 저장소를 포크하고 GitHub Actions 워크플로를 실행하여 인프라를 프로비저닝할 수 있습니다.
1. GitHub Actions Secrets에 AWS 보안 정보 추가
워크플로가 AWS에 인증하도록 AWS 보안 정보를 GitHub Actions Secrets에 추가합니다.
BAHMNI_AWS_ID → 프로비저닝한 사용자의 Access Key ID
BAHMNI_AWS_SECRET → 사용자의 Secret Access Key
BAHMNI_INFRA_ADMIN_ROLE → BahmniInfraAdminRoleForIAMUsers의 Role ARN
BAHMNI_AWS_REGION → AWS 리전
HOSTED_ZONE_ID → hosted zone은 DNS 레코드를 담는 컨테이너입니다.
2️. 파이프라인 실행
Monitoring을 배포하는 전용 파이프라인이 있습니다.
a) Monitoring and Logging 배포: 이 파이프라인은 helm-charts를 사용해 모니터링 및 로깅 리소스를 프로비저닝합니다.
Grafana 로그인 단계
- Bahmni-Lite Monitoring 대시보드로 이동합니다.
- Sign in with Github을 클릭합니다.
- GitHub 인증을 허용하도록 Bahmni Github을 승인합니다. 이제 로그인되었습니다.
Grafana 대시보드 보기
- 대시보드를 보려면 아래 표시를 클릭합니다.

- Dashboards 검색 화면이 열립니다.

3. 보려는 대시보드를 클릭합니다.
Grafana 대시보드와 사용법을 더 자세히 이해하려면 공식 문서를 참조하십시오.
로그 확인 단계
1. 로그인한 후 Grafana의 Explore로 이동합니다.

2. Explore 페이지에서 데이터 원본을 Loki로 설정합니다.

3. Log Browser를 사용해 로그를 확인할 앱과 네임스페이스를 선택합니다. 직접 LogQL 쿼리를 작성할 수도 있습니다.
4. 필요한 로그를 보려면 레이블을 필터링합니다. 특정 네임스페이스, 인스턴스, 컨테이너, 애플리케이션 등을 검색할 수 있습니다.

5. 필터 레이블을 선택한 뒤 로그를 확인할 구성요소를 선택할 수 있습니다. 예 1: app 레이블을 선택하고 select value를 누르면 로그가 있는 모든 앱이 표시됩니다.

예 2: namespace 레이블을 선택하고 select value를 누르면 로그가 있는 모든 네임스페이스가 표시됩니다.

다른 레이블도 같은 방식으로 사용할 수 있습니다.
시연 동영상
모니터링 및 중앙 로그 사용법을 자세히 설명하는 YouTube 시연입니다. 로그인 절차와 로그 조회 방법을 설명하며 과거 주간 PAT 회의에서 진행한 시연입니다.
재생 시간: 20분
예시
| Name | Query | |
|---|---|---|
| 1 | QA server monitoring link | https://monitoring-lite.mybahmni.in/goto/OYnNoCKVz?orgId=1 |
| 2 | QA server bahmni-web logs | (app: bahmni-web, namespace: qa) |
| 3 | QA server openmrs logs | (app: openmrs, namespace: qa) |
| 4 | All POST requests logs to QA server | |
| 5 | All OpenMRS Admin UI login requests on QA server |
{namespace="ingress-nginx"} |= `POST` |= `qa.lite.mybahmni` != `monitoring.lite`{namespace="ingress-nginx"} |= `POST` |= `qa.lite.mybahmni` != `monitoring.lite` |= `/openmrs/ms/legacyui/loginServlet`참고: Grafana 대시보드 접근에 문제가 있으면 Infra 팀(Slack: #bahmni-infra)에 문의하십시오.
Bahmni Wiki · CC BY-SA 4.0