2.5. OpenShift에서 Fuse 애플리케이션을 모니터링하도록 Prometheus 구성
2.5.1. Prometheus 정보
Prometheus 는 Red Hat OpenShift 환경에 배포된 서비스를 모니터링하는 데 사용할 수 있는 오픈 소스 시스템 및 서비스 모니터링 및 경고 툴킷입니다. Prometheus는 지정된 간격으로 구성된 서비스에서 지표를 수집 및 저장하고, 규칙 표현식을 평가하고, 결과를 표시하며, 지정된 조건이 true인 경우 경고를 트리거할 수 있습니다.
Prometheus에 대한 Red Hat 지원은 Red Hat 제품 설명서에 제공된 설정 및 구성 권장 사항으로 제한됩니다.
OpenShift 서비스를 모니터링하려면 Prometheus 형식에 끝점을 노출하도록 각 서비스를 구성해야 합니다. 이 끝점은 메트릭 목록과 메트릭의 현재 값을 제공하는 HTTP 인터페이스입니다. Prometheus는 각 대상 정의 끝점을 주기적으로 스크랩하고 수집된 데이터를 데이터베이스에 씁니다. Prometheus는 현재 실행 중인 세션에 대해서만 데이터를 수집하는 것이 아니라 장기간에 걸쳐 데이터를 수집합니다. Prometheus는 데이터에 대한 쿼리를 그래픽으로 시각화하고 실행할 수 있도록 데이터를 저장합니다.
2.5.1.1. Prometheus 쿼리
Prometheus 웹 인터페이스에서 PromQL(Prometheus Query Language) 에서 쿼리를 작성하여 수집된 데이터를 선택하고 집계할 수 있습니다.
예를 들어 다음 쿼리를 사용하여 지표 이름으로 http_requests_total
이 있는 모든 시계열 데이터에 대해 Prometheus가 지난 5분 내에 기록한 모든 값을 선택할 수 있습니다.
http_requests_total[5m]
쿼리 결과를 추가로 정의하거나 필터링하려면 메트릭에 레이블( key:value
쌍)을 지정합니다. 예를 들어 다음 쿼리를 사용하여 메트릭 이름 http_requests_total
및 integration
으로 설정된 작업 레이블이 있는 모든 시계열 데이터에 대해 Prometheus가 지난 5분 내에 기록한 모든 값을 선택할 수 있습니다.
http_requests_total{job="integration"}[5m]
2.5.1.2. Prometheus 데이터를 표시하는 옵션
Prometheus가 쿼리 결과를 처리하는 방법을 지정할 수 있습니다.
- Prometheus 데이터를 Prometheus의 표현식 브라우저에서 표 형식으로 표시합니다.
- Prometheus HTTP API 를 통해 외부 시스템에서 Prometheus 데이터를 사용합니다.
그래프에 Prometheus 데이터를 표시합니다.
Prometheus는 수집하는 데이터의 기본 그래픽 보기를 제공합니다. Prometheus 데이터를 볼 수 있는 보다 강력한 그래픽 대시보드를 선호하는 경우 Grafana를 사용하는 것이 좋습니다.
참고Grafana는 커뮤니티에서 지원하는 기능입니다. Red Hat 제품을 모니터링하기 위해 Grafana를 배포하는 것은 Red Hat 프로덕션 SLA(서비스 수준 계약)에서 지원되지 않습니다.
PromQL 언어를 사용하여 Prometheus의 Alertmanager 툴에서 경고를 구성할 수도 있습니다.
2.5.2. Prometheus 설정
Prometheus를 설정하려면 클러스터에 Prometheus Operator 사용자 정의 리소스 정의를 설치한 다음 Fuse 애플리케이션이 포함된 OpenShift 프로젝트에 Prometheus를 추가합니다.
사전 요구 사항
-
OpenShift 클러스터에 대한
클러스터 관리자
액세스 권한이 있어야 합니다. - OpenShift의 Fuse에 설명된 대로 OpenShift 이미지 및 템플릿에 Fuse를 설치하여 OpenShift 클러스터를 준비했습니다.
- 클러스터에서 OpenShift 프로젝트를 생성하고 Fuse 애플리케이션을 추가했습니다.
프로세스
관리자 권한으로 OpenShift에 로그인합니다.
oc login -u system:admin
Prometheus Operator를 실행하는 데 필요한 사용자 정의 리소스 정의를 설치합니다.
oc create -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-780019-redhat-00005/openshift3/fuse-prometheus-crd.yml
이제 클러스터의 모든 네임스페이스에서 Prometheus Operator를 사용할 수 있습니다.
다음 명령 구문을 사용하여 Prometheus Operator를 네임스페이스에 설치합니다.
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-780019-redhat-00005/openshift3/fuse-prometheus-operator.yml -p NAMESPACE=<YOUR NAMESPACE> | oc create -f -
예를 들어 myproject 라는 프로젝트(네임스페이스)에 이 명령을 사용합니다.
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-780019-redhat-00005/openshift3/fuse-prometheus-operator.yml -p NAMESPACE=myproject | oc create -f -
참고Prometheus Operator를 네임스페이스에 처음 설치하는 경우 Prometheus 리소스 Pod를 시작하는 데 몇 분이 걸릴 수 있습니다. 결과적으로 클러스터의 다른 네임스페이스에 설치하면 Prometheus 리소스 Pod가 훨씬 빨라집니다.
다음 명령 구문을 사용하여 프로젝트의 Fuse 애플리케이션을 모니터링하도록 Prometheus Operator에 지시합니다.
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-780019-redhat-00005/openshift3/fuse-servicemonitor.yml -p NAMESPACE=<YOUR NAMESPACE> -p FUSE_SERVICE_NAME=<YOUR FUSE SERVICE> | oc apply -f -
예를 들어, myfuseapp:이라는 Fuse 애플리케이션을 포함하는 myproject 라는 OpenShift 프로젝트(네임스페이스)에 이 명령을 사용합니다.
oc process -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-780019-redhat-00005/openshift3/fuse-servicemonitor.yml -p NAMESPACE=myproject -p FUSE_SERVICE_NAME=myfuseapp | oc apply -f -
Prometheus 대시보드를 열려면 다음을 수행합니다.
- OpenShift 콘솔에 로그인합니다.
- Prometheus를 추가한 프로젝트를 엽니다.
왼쪽 창에서 Applications > Routes 를 선택합니다.
Prometheus Hostname URL을 클릭하여 새 브라우저 탭 또는 창에서 Prometheus 대시보드를 엽니다.
- Prometheus를 시작하는 방법에 대한 자세한 내용은 https://prometheus.io/docs/prometheus/latest/getting_started/로 이동하십시오.
2.5.3. OpenShift 환경 변수
애플리케이션의 Prometheus 인스턴스를 구성하려면 표 2.2. “Prometheus 환경 변수” 에 나열된 OpenShift 환경 변수를 설정할 수 있습니다.
환경 변수 | 설명 | 기본 |
---|---|---|
| 바인딩할 호스트 주소입니다. |
|
| 설정된 경우 Prometheus 활성화를 비활성화합니다(빈 값 선택). | Prometheus가 활성화되어 있습니다. |
| 사용할 포트입니다. |
|
| 파일(경로 포함)을 Prometheus 구성 파일로 사용합니다. | Camel 메트릭이 포함된 /opt/prometheus/prometheus-config.yml 파일입니다. |
| Cryostat 내보내기 구성에 추가할 추가 옵션입니다. | 해당 없음 |
추가 리소스
Pod의 환경 변수 설정에 대한 자세한 내용은 OpenShift 개발자 가이드 (https://access.redhat.com/documentation/en-us/openshift_container_platform/3.11/html/developer_guide/)를 참조하십시오.
2.5.4. Prometheus가 모니터링하고 수집하는 메트릭 제어
기본적으로 Prometheus는 Camel에서 노출하는 모든 가능한 메트릭을 포함하는 구성 파일( https://raw.githubusercontent.com/jboss-fuse/application-templates/master/prometheus/prometheus-config.yml
)을 사용합니다.
Prometheus가 모니터링 및 수집하려는 애플리케이션 내에 사용자 지정 메트릭이 있는 경우(예: 애플리케이션 프로세스에서 처리하는 주문 수) 고유한 구성 파일을 사용할 수 있습니다. 식별할 수 있는 지표는 Cryostat에서 제공되는 지표로 제한됩니다.
프로세스
사용자 지정 구성 파일을 사용하여 기본 Prometheus 구성에서 다루지 않는 빈을 노출하려면 다음 단계를 따르십시오.
사용자 정의 Prometheus 구성 파일을 생성합니다. 기본 파일(
prometheus-config.yml
https://raw.githubusercontent.com/jboss-fuse/application-templates/master/prometheus/prometheus-config.yml)의 콘텐츠를 형식 가이드로 사용할 수 있습니다.사용자 지정 구성 파일에 임의의 이름을 사용할 수 있습니다(예:
my-prometheus-config.yml
).-
prometheus 구성 파일(예:
my-prometheus-config.yml
)을 애플리케이션의src/main/fabric8-includes
디렉터리에 추가합니다. 애플리케이션 내에
src/main/fabric8/deployment.xml
파일을 생성하고 해당 값이 구성 파일로 설정된 AB_JMX_EXPORTER_CONFIG 환경 변수에 대한 항목을 추가합니다. 예를 들면 다음과 같습니다.spec: template: spec: containers: - resources: requests: cpu: "0.2" limits: cpu: "1.0" env: - name: SPRING_APPLICATION_JSON value: '{"server":{"tomcat":{"max-threads":1}}}' - name: AB_JMX_EXPORTER_CONFIG value: "my-prometheus-config.yml"
이 환경 변수는 Pod 수준에서 애플리케이션에 적용됩니다.
- 애플리케이션을 다시 빌드하고 배포합니다.