티스토리 뷰

zabbix

Zabbix는 수많은 종류의 네트워크 서비, 서버 등의 네트워크 하드웨어를 감시하고 추적하여 관리자에게 장애발생을 신속히 알려주는 모니터링 서비스이다.

 

최근 모니터링을 그라파나와 프로메테우스를 연동하여 사용하나 수집기를 여러개로 사용하지만, 모니터링을 위해서 별도의 서버를 운영하는 관리 포인트를 최소화하기위해 프로메테우스 서버를 새로 구축하는 것이 아니라 기존 Zabbix를 활용하게 되었다.

 

따라서, Zabbix가 꼭 필요하지 않다면은 다양한 대쉬보드와 Exporter를 활용할 수 있는 프로메테우스를 선택하자!!!

 

먼저, Zabbix에서는 Template이라는게 있어 한번 만들어두면 여러 Host에서 사용할 수 있게 되어있다. 그렇기 때문에 재사용성을 위해서 Template으로 지표들을 만드는 것이 좋다.

 

Templates

 

위가 Airflow Exporter(statsd exporter) 지표를 정의한 Template이다. 이 Template에 있는 리스트(item)들이 수집하는 지표가 된다.

 

Item을 하나 확인해보면 이름과 key 값으로 정의한다. 아래 예시의 item은 Type이 Dependent Item이다. 이는 다른 item의 데이터를 활용하여 새로운 지표를 만들겠다는 것이다. 타겟이 되는 item은 Master item에서 선택하면 된다.

 

타겟으로 선정한 Ariflow Exporter Metric Data item은 TEXT 형식으로 익스포터 metric 데이터(http://{exporeter_address}:{exporter_port}/metrics)를 가지고 온다. 따라서, 모든 지표 중에서 원하는 지표를 가져오기 위한 파싱 작업이 필요하다.

 

아래 예시처럼 프로메테우스 문법을 통해서 지표를 추출하여 가져오면은 하나의 지표만을 수집할 수 있게 된다.

 

 

위의 방식이 기본적인 수집 방식인데 모든 Exporter의 지표를 사람이 직접 파싱하는 것은 엄청난 시간과 노력이 필요하고 exporter의 labels이 변화할 때마다 매번 수정해야하는 문제가 있다. 이를 극복할 수 있는게 Discovery Rule과 item protoytype이다.

 

Discovery Rule과 item protoytype를 활용하면 LLD(Low-Level-Discovery) Macro를 활용하여 조건에 따라서 자동으로 item이 생성된다. 그래서, 이걸 활용하여 내가 item 자동으로 생성한 법을 공유한다.

 

Discovery Rule

Discovery Rule은 하나의 Template 내부에 탭에서 선택할 수 있다. 그 후 creae discovery rule을 누르면 discovery 규칙을 생성할 수 있다.

 

처음에 이름이나 Key를 지으면 된다. 규칙 이름을 짓는 것이기에 원하는대로 작명하면 된다. 그리고 Dependent Item Type으로 기존 item의 데이터를 사용하였다.

 

익스포터 metric 데이터를 JSON으로 변환하는 전처리 작업을 진행하였다. 추가적으로 Parameters의 프로메테우스 문법을 넣은 문법에 맞추어 파싱된다.( 난 따로 처리할거라 굳이 사용 안함)

 

앞에서 익스포터 metric 데이터를 JSON으로 변환하였으니 JSONPath를 통해 사용하고자 하는 LLD Macro에 값을 추출한다. 이 Macro 값을 통해 자동으로 item이 생성된다.

그리고 Filter 과정을 통해서 LLD Macro의 조건을 확인하여 조건이 일치하지 않으면 item을 생성 못하게 한다. 만약 이 filter가 없다면은 item prototype이 없는 macro에 접근하여 정상적인 item 생성이 이루어지지 않는다. 그렇기에 정확하게 필요로한 Macro만 추출하게 전처리하여 만들거나 나처럼 다 때려박고 fileter에서 필요한 Macro만 추출하면 된다.

 

그 후에는 Discovery Rule에서 Item prototype 탭으로 이동한다. 이동하면 item prototype 리스트가 존재한다.

 

Item prototype을 보면 아까 Discovery Rule에서 설정한 LLD Macro를 활용할 수 있다. 

Name: {#METRIC}{airflow_id="{#AIRFLOW_ID}"}

Key: metric.[{#METRIC},{#AIRFLOW_ID}]

위처럼 LLD를 사용하여 자동으로 item이 생성될 수 있도록 한다. 위 item은 Type인 Dependent Item으로 다른 iteml의 데이터를 파싱해서 지표를 만드는 것으로 맨 앞에서 공유한 item과 같지만, 이름과 key는 자동으로 생성되게 하였다.

다음은 전처리 작업이다.

프로메테우스 패턴으로 Text 데이터에서 원하는 값을 추출하게 하였다. 이도 맨 처음 공유한 방법과 같지만 패턴을 직접 작성한게 아니라 LLD Macro를 사용하여 패턴 구조는 동일하지만 내용을 변경할 수 있게 하였다.

 

Prometheus Pattern : {#METRIC}{airflow_id="{#AIRFLOW_ID}"}

 

Discovery Rule과 item prototypes를 활용한 자동 생성

결과적으로 자동으로 조건에 맞추어서 item들이 자동으로 생성되었다. 만약 해당 방법을 사용 안했다면 1000개 가량 지표를 직접 파싱처리를 해야하지만 위 방법을 통해 자동으로 item이 생성되어 단순 작업을 최소화 할 수 있고 지표가 생기면 자동으로 반영되기 때문에 유지면에서 이점이 있다.

 

그러나, Exporter를 사용한다면 프로메테우스를 사용하는게 정신 건강에 이롭다. ㅎㅎ 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함