본문 바로가기
  • A space that records me :)
기술/Prometheus

프로메테우스(Prometheus) Exporter - 모니터링 에이전트

by yjkim_97 2021. 7. 17.

.Net Framework에서 내가 원하는 메트릭을 커스텀할 수 있는 에이전트가 존재하는지 알아보면서 알게된 Exporter들을 정리하였다.

 

결국 이 모니터링 에이전트들도 개인이 개발한 오폰 에이전트였다. 

다양한 언어로 만들어 져 있던데.. 나도 만들어 볼까..?

 


Exporter 란?

프로메테우스의 Exporter는 실제로 메트릭 정보를 수집하는 모니터링 에이전트로,

대상 시스템에서 메트릭을 수집하고 HTTP 엔드포인트(default : /metrics)에 노출시키 고  소프트웨어(에이전트)이다.

 

exporter는 open source로 공개된 것도 있고, 직접 custom해서 구현할 수 도 있다.


대표적인 Exporter 종류

그외 Prometheus 공식 홈페이지에 더 다양한 exporters 항목이 나열되어 있다.

https://prometheus.io/docs/instrumenting/exporters/

 

Exporters and integrations | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

 

1. Node-exporter

Cluster에 존재하는 노드마다 하나씩 배포되어 해당 노드에서 발생하는 메트릭(cpu, memory, disk 사용량과 같은 호스트 관련 메트릭)을 수집하는 모니터링 에이전트이다.

 

수집 메트릭 종류

  • cpu 사용률
  • 메모리 사용률
  • 디스크 사용률
  • 하드웨어에서 발생하는 메트릭

https://docs.google.com/spreadsheets/d/1khAYwTpi3gA39R3vtPPa_nM-hm1Fttgn8JbCauo8ZA4/edit#gid=1738867023

 

node-exporter metric 목록

sampleSheet NO,NAME,TYPE,DESC,EX,CONDI 1,go_gc_duration_seconds,summary,go_gc_duration_seconds A summary of the GC invocation durations.,{"go_gc_duration_seconds": " 0.001650142", "go_gc_duration_seconds_sum": "0.354289679", "go_gc_duration_seconds_count":

docs.google.com

 

2. Mysql-exporter

  • MySQL 서버의 상태에 대한 메트릭을 수집하는 모니터링 에이전트이다. 설정된 Mysql DB서버에 접속해서 메트릭을 수집한다.

 

3. Wmi-exporter

  • Window 시스템용 모니터링 에이전트이다.

 

4. Postgres-exporter

  • PostgreSQL 서버용 모니터링 에이전트이다.
PostgreSQL이란?
오픈소스 객체-관계형 데이터베이스 시스템(ORDBMS)이다.

 

5. Redis-exporter

  • Redis 서버용 모니터링 에이전트이다. Redis의 INFO명령의 대부분의 항목의 메트릭을 수집한다.

Redis INFO 항목

  • server: Redis 서버에 대한 일반 정보
  • clients: 클라이언트 연결 섹션
  • memory: 메모리 사용량 관련 정보
  • persistence: RDB 및 AOF 관련 정보
  • stats: 일반통계
  • replication: 마스터/레플리카 복제 정보
  • cpu: CPU 사용량 통계
  • commandstats: Redis 명령 통계
  • cluster: Redis 클러스터 섹션
  • modules: 모듈 섹션
  • keyspace: 데이터베이스 관련 통계
  • modules: 모듈 관련 섹션
  • errorstats: Redis 오류 통계

https://redis.io/commands/info

 

INFO – Redis

The INFO command returns information and statistics about the server in a format that is simple to parse by computers and easy to read by humans. The optional parameter can be used to select a specific section of information: server: General information ab

redis.io

 

6. Jmx-exporter (Actuator)

Jmx-exporter는 JVM에서 발생하는 메트릭을 수집한다. JVM 메트릭을 수집하는 방법에는 외장 jmx-exporter를 사용하는 방법과 java agent를 사용하는 방법 두가지가 있다.  여기서는 java agent를 사용하여 메트릭 수집한다.

 

spring application에 메트릭 수집 설정을 해준다.

의존성 주입

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>

properties 설정

management.endpoints.web.exposure.include=*
management.metrics.tags.application=${project name}

spring application 실행 후 해당 url의 /actuator/prometheus경로로 접근하면 수집하고 있는 메트릭을 확인 할 수 있다.

이후 프로메테우스에 해당 메트릭 수집 엔드포인트를 추가해준다. (scrape_configs)


https://prometheus.io/docs/instrumenting/exporters/

 

Exporters and integrations | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io