본문으로 건너뛰기

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

Metric Export 메타데이터 조회
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
GEThttps://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/metadata
Path유형필수 여부설명
project_idString필수카카오클라우드의 프로젝트 ID
Request Header
항목유형필수 여부설명
Credential-IDString필수   액세스 키 ID
Credential-SecretString필수보안 액세스 키
service-typeString필수해당 데이터 소스로 조회할 서비스 유형을 입력
- 지원 서비스 (입력 값)
ㄴ Virtual Machine, GPU, Bare metal Server (입력값: server
ㄴ Mysql (입력값: mysql)
ㄴ Redis (입력값: redis)
ㄴ Load Balancing (입력값: lb)

Response

Metric Export 메타데이터 조회 결과
{
"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

Metric Export Query 조회
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_idString필수카카오클라우드의 프로젝트 ID
Request Header
Header유형필수 여부설명
Credential-IDString필수   액세스 키 ID
Credential-SecretString필수보안 액세스 키
service-typeString필수해당 데이터 소스로 조회할 서비스 유형을 입력
- 지원 서비스 (입력 값)
ㄴ Virtual Machine, GPU, Bare metal Server (입력값: server)
ㄴ Mysql (입력값: mysql)
ㄴ Redis (입력값: redis)
ㄴ Load Balancing (입력값: lb)
Request Body
항목유형필수 여부설명
queryString필수   조회할 메트릭

Response

Metric Export Query lb_bytes_in_persec 조회 결과
{
"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 대시보드를 구성합니다. ​ ​

템플릿 생성

  1. Zabbix에서 Data collection > Template groups로 이동 후, 우측 상단의 [Create template group] 버튼을 클릭하여 Zabbix Templates group을 생성합니다.

    항목내용
    Group name(예시) kakaocloud

    이미지. Image선택 Templates group 생성

  2. Data collection > Templates로 이동 후, [Create template] 버튼을 클릭합니다.

    이미지. Image선택 Templates 생성

  3. 앞서 생성한 Template group을 선택 후, [Add] 버튼을 클릭합니다.

    이미지. Image선택 Template group 선택

템플릿의 아이템 생성

  1. Name란에 생성한 Template 명을 입력한 후 Item 항목을 클릭합니다.

    이미지. Image선택 Items로 이동

  2. [Create Item] 버튼을 클릭하여 앞서 생성한 Templates의 아이템을 생성합니다.

    이미지. Image선택 Template의 아이템 생성

  3. 각 항목에 다음의 정보를 입력 후, [Add] 버튼을 클릭합니다.

    이미지. Image선택 정보 입력

    속성내용
    Name아이템의 이름
    TypeHTTP agent 선택
    Key아이템의 Key
    Type of informationNumeric 선택
    ⚠️ 테스트 시에는 Text 유형으로 변경 필요
    URLhttps://monitoring.kr-central-2.kakaocloud.com/metric/grafana/{project_id}/prometheus/api/v1/query
    Request typePOST
    Request bodyquery={조회 metric}
    Headers- Credential-ID: {ACCESS_KEY_ID}
    - Credential-Secret: {ACCESS_KEY_SECRET}
    - service-type: {SERVICE_TYPE}
    Update interval메트릭 데이터를 가져올 주기
  4. 테스트를 수행합니다. 이 과정은 필수 과정은 아니지만, 메트릭 값이 정상적으로 들어오는지 확인하기 위해 테스트를 수행하는 것을 권장합니다.

    주의

    테스트 시에는 Item탭의 Type of information 항목을 임시적으로 Text 유형으로 변경해야 테스트가 가능합니다. 테스트를 완료하고 아이템을 최종 저장 시에는 다시 Numeric 유형으로 변경하시기 바랍니다.

    1. [Test]와 [Get value and test] 버튼을 순차적으로 클릭하여 정상적으로 메트릭 값을 가져오는지 확인합니다.

      이미지. Image선택 메트릭 값 확인

    2. Preprocessing steps의 add를 선택합니다. Preprocessing 탭의 Preprocessing steps에서 추출할 메트릭 값을 설정합니다.

      이미지. Image선택 추출할 메트릭 값 설정

    항목설정값
    NameJSONPath
    Parameters메트릭 데이터에서 해당 값 지정
    예시: $.data.result[12].value[1]
    - LB가 3개인 경우, [0, 1, 2]가 존재. 즉, result[2] 입력 가능
    Type of informationNumeric 선택
    ⚠️ 테스트 시에는 Text 유형으로 변경 필요
    1. [Test] 버튼을 클릭하고 Value에 메트릭 값을 입력합니다. 그 후, [Get value and test] 버튼을 클릭하여 정상적으로 값이 업데이트되는지 확인합니다. ​ 이미지. Image선택 테스트 확인

    2. 테스트 후, 아이템을 생성합니다.

      안내

      테스트를 위해 Type of informationText로 설정한 경우에는 정상적으로 그래프를 생성할 수 없습니다. 따라서 테스트를 완료했다면, Item탭의 Type of information 항목을 Numeric으로 다시 변경하시기 바랍니다.

템플릿의 그래프 생성

템플릿의 그래프를 생성합니다.

  1. Data collection > Templates > Graphs 탭으로 이동 후, [Create graph] 버튼을 클릭합니다.

    이미지. Image선택 Create graph 버튼 클릭

  2. 다음의 항목을 입력 및 추가하여 templates의 그래프를 생성합니다. ​ 이미지. Image선택 그래프 생성

항목설정값
Name그래프 이름
Width그래프의 폭
Height그래프의 높이
Items그래프 항목 (Add 선택 후 자신이 생성한 Items를 Select)

템플릿 할당

템플릿을 Zabbix server에 할당합니다.

  1. Data collection > Hosts로 이동 후, Name 열에서 Zabbix server를 클릭합니다. Host 창이 팝업하면, Templates 항목의 [Select] 버튼을 클릭합니다.

    이미지. Image선택 할당할 Template 선택

  2. Templates 창이 팝업하면, [Select] 버튼을 클릭하여 kakaocloud를 선택하고, KC-prometheus 체크박스에 체크 후 [Select] 버튼을 클릭합니다.

    이미지. Image선택 KC-prometheus 선택

  3. [Update] 버튼을 클릭하여 설정을 완료합니다.

대시보드 생성

클라우드 서비스의 성능, 가용성, 및 리소스 사용량을 종합적으로 모니터링하기 위해 대시보드를 생성합니다.

  1. Dashboards로 이동 후 우측 상단의 [Create dashboard] 버튼을 클릭합니다. ​ 이미지. Image선택 대시보드 생성

  2. 대시보드 생성을 위해 각 항목에 정보를 입력합니다. ​ 이미지. Image선택 정보 입력

  3. 위젯을 추가하기 위해 Type을 Graph로 변경 후 Host와 Item을 지정하고 [Add] 버튼을 클릭합니다. ​ 이미지. Image선택 위젯 추가

  4. 추가된 위젯을 확인합니다.

    이미지. Image선택 위젯 확인