Zabbix-Prometheus를 통합하여 Zabbix 대시보드 구성
카카오클라우드 Monitoring 서비스의 Metric Export 엔드포인트를 활용하여 데이터를 수집하고, Zabbix와 Prometheus의 통합을 통해 모니터링 대시보드를 구성하는 방법을 안내합니다.
- 예상 소요 시간: 30분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
kr-central-2의 퍼블릭 IP가 적용된 VM
또는 인터넷 게이트웨이가 연동된 kr-central-2의 VPC에 생성된 VM
의 요청에 대해서만 서비스를 제공합니다.
시나리오 소개
이 시나리오에서는 카카오클라우드의 Monitoring 서비스에서 제공하는 Metric Export 기능을 활용하여, Prometheus와 Zabbix를 통합한 모니터링 대시보드를 구성하는 방법을 설명합니다. 이를 통해 클라우드 자원의 성능, 가용성, 리소스 사용량을 실시간으로 확인하고, 복잡한 환경에서도 손쉽게 관리할 수 있는 모니터링 체계를 구축할 수 있습니다. 주요 단계는 다음과 같습니다.
- Zabbix 서버 설치 및 액세스 키 준비
- Prometheus Metric Export API를 통한 클라우드 메트릭 수집
- Zabbix와 Prometheus 메트릭 연동 및 Template 구성
- Zabbix 대시보드에서 메트릭 시각화 및 모니터링 설정
시작하기 전에
이 튜토리얼을 시작하기 위해 Zabbix Server 4.0 이상 버전을 설치합니다. 이는 Metric Export 엔드포인트와의 연결을 위해 필수적입니다.
API 엔드포인트
카카오클라우드 Prometheus Metric Export 엔드포인트(kr-central-2)는 다음과 같습니다.
https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus
API 목록
카카오클라우드의 Monitoring 서비스에서는 Monitoring Metric Export를 위해 다음의 API를 제공합니다. 각 API는 Prometheus HTTP API와 호환됩니다.
항목 | 설명 |
---|---|
/metric/grafana/:id/prometheus/api/v1/series | 특정 Label Set와 일치하는 시계열 목록을 반환합니다. |
/metric/grafana/:id/prometheus/api/v1/query_range | 일정 기간의 쿼리 결과를 반환합니다. |
/metric/grafana/:id/prometheus/api/v1/query | 단일 시점에 대한 쿼리 결과를 반환합니다. |
/metric/grafana/:id/prometheus/api/v1/metadata | 메트릭에 대한 메타데이터를 반환합니다. |
/metric/grafana/:id/prometheus/api/v1/labels | 레이블 이름 목록을 반환합니다. |
/metric/grafana/:id/prometheus/api/v1/label/:labelName/values | 제공된 레이블 이름에 대한 레이블 값 목록을 반환합니다. |
Export 지원 메트릭 항목
Metric Export 기능을 이용하여 카카오클라우드 Monitoring 서비스에서 제공하는 사용자 프로젝트 내의 모든 메트릭을 확인할 수 있습니다. 지원하는 메트릭 항목은 모니터링 메트릭 > 주요 메트릭을 참고하시기 바랍니다.
API 사용 예제
Metric Export 메타데이터 조회
메트릭에 대한 메타데이터를 반환합니다.
Request
curl -X GET https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/metadata \
-H "Credential-ID: {ACCESS_KEY_ID}" \
-H "Credential-Secret: {ACCESS_KEY_SECRET}" \
-H "service-type: {SERVICE_TYPE}"
API 호출 방식
메서드 | 요청 URL |
---|---|
GET | https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/metadata |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
project_id | String | 필수 | 카카오클라우드의 프로젝트 ID |
Request Header
항목 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Credential-ID | String | 필수 | 액세스 키 ID |
Credential-Secret | String | 필수 | 보안 액세스 키 |
service-type | String | 필수 | 해당 데이터 소스로 조회할 서비스 유형을 입력 - 지원 서비스 (입력 값) ㄴ Virtual Machine, GPU, Bare metal Server (입력값: server ㄴ Mysql (입력값: mysql )ㄴ Redis (입력값: redis )ㄴ Load Balancing (입력값: lb ) |
Response
{
"status":"success",
"data":{
"lb_bytes_in_persec":[
{
"type":"gauge",
"help":"인바운드 트래픽",
"unit":"bytes/s(IEC)"
}
],
"lb_bytes_out_persec":[
{
"type":"gauge",
"help":"아웃바운드 트래픽",
"unit":"bytes/s(IEC)"
}
]...
}
}
Metric Export Query 조회
단일 시점에 대한 쿼리 결과를 반환합니다.
Request
curl -X POST https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/query \
-H "Credential-ID: {ACCESS_KEY_ID}" \
-H "Credential-Secret: {ACCESS_KEY_SECRET}" \
-H "service-type: {SERVICE_TYPE}" \
-d "query={조회할 metric}"
API 호출 방식
메서드 | 요청 URL |
---|---|
POST | https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/query |
Path | 유형 | 필수 여부 | 설명 |
---|---|---|---|
project_id | String | 필수 | 카카오클라우드의 프로젝트 ID |
Request Header
Header | 유형 | 필수 여부 | 설명 |
---|---|---|---|
Credential-ID | String | 필수 | 액세스 키 ID |
Credential-Secret | String | 필수 | 보안 액세스 키 |
service-type | String | 필수 | 해당 데이터 소스로 조회할 서비스 유형을 입력 - 지원 서비스 (입력 값) ㄴ Virtual Machine, GPU, Bare metal Server (입력값: server )ㄴ Mysql (입력값: mysql )ㄴ Redis (입력값: redis )ㄴ Load Balancing (입력값: lb ) |
Request Body
항목 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
query | String | 필수 | 조회할 메트릭 |
Response
{
"status":"success",
"data":{
"resultType":"vector",
"result":[
{
"metric":{
"__name__":"lb_bytes_in_persec",
"lb_id":"c9d6eefe-b100-4663-8114-6fdc7f9d53c9",
"lb_type":"Network",
"listener_id":"9bf3d454-dfbd-4861-bd59-729f12886e35"
},
"value":[
1702557658,
"0"
]
},
}
}
Zabbix-Prometheus 연동
카카오클라우드의 Monitoring Metric Export 엔드포인트를 이용하여 Zabbix 대시보드를 구성합니다.
템플릿 생성
-
Zabbix에서 Data collection > Template groups로 이동 후, 우측 상단의 [Create template group] 버튼을 클릭하여 Zabbix Templates group을 생성합니다.
항목 내용 Group name (예시) kakaocloud Templates group 생성
-
Data collection > Templates로 이동 후, [Create template] 버튼을 클릭합니다.
Templates 생성
-
앞서 생성한 Template group을 선택 후, [Add] 버튼을 클릭합니다.
Template group 선택
템플릿의 아이템 생성
-
Name란에 생성한 Template 명을 입력한 후 Item 항목을 클릭합니다.
Items로 이동
-
[Create Item] 버튼을 클릭하여 앞서 생성한 Templates의 아이템을 생성합니다.
Template의 아이템 생성
-
각 항목에 다음의 정보를 입력 후, [Add] 버튼을 클릭합니다.
정보 입력
속성 내용 Name 아이템의 이름 Type HTTP agent
선택Key 아이템의 Key Type of information Numeric
선택
⚠️ 테스트 시에는Text
유형으로 변경 필요URL https://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/query
Request type POST
Request body query={조회 metric}
Headers - Credential-ID
:{ACCESS_KEY_ID}
-Credential-Secret
:{ACCESS_KEY_SECRET}
-service-type
:{SERVICE_TYPE}
Update interval 메트릭 데이터를 가져올 주기 -
테스트를 수행합니다. 이 과정은 필수 과정은 아니지만, 메트릭 값이 정상적으로 들어오는지 확인하기 위해 테스트를 수행하는 것을 권장합니다.
주의테스트 시에는 Item탭의 Type of information 항목을 임시적으로
Text
유형으로 변경해야 테스트가 가능합니다. 테스트를 완료하고 아이템을 최종 저장 시에는 다시Numeric
유형으로 변경하시기 바랍니다.-
[Test]와 [Get value and test] 버튼을 순차적으로 클릭하여 정상적으로 메트릭 값을 가져오는지 확인합니다.
메트릭 값 확인
-
Preprocessing steps의 add를 선택합니다. Preprocessing 탭의 Preprocessing steps에서 추출할 메트릭 값을 설정합니다.
추출할 메트릭 값 설정
항목 설정값 Name JSONPath Parameters 메트릭 데이터에서 해당 값 지정
예시: $.data.result[12].value[1]
- LB가 3개인 경우, [0, 1, 2]가 존재. 즉, result[2] 입력 가능Type of information Numeric
선택
⚠️ 테스트 시에는Text
유형으로 변경 필요-
[Test] 버튼을 클릭하고 Value에 메트릭 값을 입력합니다. 그 후, [Get value and test] 버튼을 클릭하여 정상적으로 값이 업데이트되는지 확인합니다. 테스트 확인
-
테스트 후, 아이템을 생성합니다.
안내테스트를 위해 Type of information을
Text
로 설정한 경우에는 정상적으로 그래프를 생성할 수 없습니다. 따라서 테스트를 완료했다면, Item탭의 Type of information 항목을Numeric
으로 다시 변경하시기 바랍니다.
-
템플릿의 그래프 생성
템플릿의 그래프를 생성합니다.
-
Data collection > Templates > Graphs 탭으로 이동 후, [Create graph] 버튼을 클릭합니다.
Create graph 버튼 클릭
-
다음의 항목을 입력 및 추가하여 templates의 그래프를 생성합니다. 그래프 생성
항목 | 설정값 |
---|---|
Name | 그래프 이름 |
Width | 그래프의 폭 |
Height | 그래프의 높이 |
Items | 그래프 항목 (Add 선택 후 자신이 생성한 Items를 Select) |
템플릿 할당
템플릿을 Zabbix server에 할당합니다.
-
Data collection > Hosts로 이동 후, Name 열에서 Zabbix server를 클릭합니다. Host 창이 팝업하면, Templates 항목의 [Select] 버튼을 클릭합니다.
할당할 Template 선택
-
Templates 창이 팝업하면, [Select] 버튼을 클릭하여 kakaocloud를 선택하고, KC-prometheus 체크박스에 체크 후 [Select] 버튼을 클릭합니다.
KC-prometheus 선택
-
[Update] 버튼을 클릭하여 설정을 완료합니다.
대시보드 생성
클라우드 서비스의 성능, 가용성, 및 리소스 사용량을 종합적으로 모니터링하기 위해 대시보드를 생성합니다.
-
Dashboards로 이동 후 우측 상단의 [Create dashboard] 버튼을 클릭합니다. 대시보드 생성
-
대시보드 생성을 위해 각 항목에 정보를 입력합니다. 정보 입력
-
위젯을 추가하기 위해 Type을 Graph로 변경 후 Host와 Item을 지정하고 [Add] 버튼을 클릭합니다. 위젯 추가
-
추가된 위젯을 확인합니다.
위젯 확인