Exporter


서버와 레디스 모니터링에 필요한 데이터를 수집하는 node_exporter와 redis_exporter에 대해서 설명합니다.

  • Node Exporter는 리눅스 서버의 하드웨어 및 OS 관련 메트릭을 수집해 Prometheus 형식으로 노출하는 Exporter입니다.
  • Redis Exporter는 Redis 인스턴스에서 메트릭을 수집하여 Prometheus 형식으로 노출하는 Exporter입니다. Redis 자체는 Prometheus와 직접 통신할 수 없기 때문에 중간다리 역할을 합니다.
  • 데이터 흐름: Exporter ➡ Prometheus ➡ Grafana

Node Exporter

1. 📌 개요 📖

Node Exporter는 리눅스 서버의 하드웨어 및 OS 관련 메트릭을 수집해 Prometheus 형식으로 노출하는 Exporter입니다.
프로그래밍 언어: Go(Golang)
기본 포트: 9100

2. 📦 주요 수집 항목

  • CPU: node_cpu_seconds_total
  • Memory: node_memory_MemAvailable_bytes, node_memory_MemFree_bytes
  • Disk: node_disk_read_bytes_total, node_disk_written_bytes_total
  • File System: node_filesystem_avail_bytes, node_filesystem_size_bytes
  • Network: node_network_receive_bytes_total, node_network_transmit_bytes_total
  • Load Average: node_load1(1분), node_load5(5분), node_load15(15분)
  • Uptime: node_time_seconds, node_boot_time_seconds

3. ⚙️ 다운로드(설치), 실행

📥 다운로드(설치) - Node Exporter Release 확인

  • $ cd /app
  • $ mkdir exporter && cd exporter
  • $ wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-1.9.1.linux-amd64.tar.gz -> 12M
  • $ tar -xvzf node_exporter-1.9.1.linux-amd64.tar.gz -> 압축 풀기
  • $ mv node_exporter-1.9.1.linux-amd64 node_exporter-1.9.1
  • $ ll node_exporter-1.9.1 -> 실행 파일: node_exporter (크기: 22M)
  • $ ln -s node_exporter-1.9.1/node_exporter node_exporter
    -> 링크 만들기: 다른 버전을 받으면 링크만 수정한다. 시스템 서비스 등록은 수정하지 않는다.

실행(임시)

  • $ ./node_exporter & -> bg start (Ctrl+C 종료)
    [1] 7752
    time=2025-05-19 level=INFO source=node_exporter.go:216 msg="Starting node_exporter" version="(version=1.9.1, ...)"
    time=2025-05-19 level=INFO source=tls_config.go:347 msg="Listening on" address=[::]:9100

🖥️ 시스템 서비스 등록

  • sudo vi /usr/lib/systemd/system/node_exporter.service -> CentOS
  • sudo systemctl daemon-reload -> 설정 reload
  • sudo systemctl start node_exporter -> 시작(실행)
  • sudo systemctl enable node_exporter -> 재부팅 시 자동 시작 등록
  • sudo systemctl stop node_exporter -> 중지(shutdown)
  • sudo systemctl status node_exporter -> 상태 보기

⚓ 9100 포트 허용

  1. sudo vi /etc/sysconfig/iptables -> 아래 내용 저장
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT
  2. sudo systemctl restart iptables
  3. sudo iptables -L -n | grep 9100 -> iptables 설정 확인
    target prot opt source destination
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9100
  4. sudo netstat -tulnp | grep 9100 -> netstat 확인
    tcp6 0 0 :::9100 :::* LISTEN 7752/node_exporter
  5. 포트 관련 추가로 필요한 설정이 있으면 해주세요.

🌐 브라우저 테스트

http://IP:9100/metrics -> 결과 이미지


    100KBytes, 약 1600라인(매우 많은 자료가 나옴)   ➡ 전체 데이터는 아래 참조



Redis Exporter

1. 📌 개요 📖

Redis Exporter는 Redis 인스턴스에서 메트릭을 수집하여 Prometheus 형식으로 노출하는 Exporter입니다.
Redis 자체는 Prometheus와 직접 통신할 수 없기 때문에 중간다리 역할을 합니다.
프로그래밍 언어: Go(Golang)
기본 포트: 9121

2. 📦 주요 수집 항목

  • 연결 정보: redis_connected_clients, redis_connected_slaves
  • 명령 처리: redis_commands_processed_total
  • 메모리 사용: redis_memory_used_bytes, redis_memory_peak_bytes
  • Keyspace: redis_db_keys, redis_db_keys_expiring
  • 퍼시스턴스: redis_rdb_changes_since_last_save, redis_aof_enabled
  • 복제 상태: redis_master_last_io_seconds_ago
  • 서버 정보: redis_uptime_in_seconds, redis_version_info

3. ⚙️ 다운로드(설치), 실행

📥 다운로드(설치) - Redis Exporter Release 확인

  • $ cd /app/exporter
  • $ wget https://github.com/oliver006/redis_exporter/releases/latest/download/redis_exporter-v1.72.1.linux-amd64.tar.gz -> 3.7M
  • $ tar -xvzf redis_exporter-v1.72.1.linux-amd64.tar.gz
  • $ mv redis_exporter-v1.72.1.linux-amd64 redis_exporter-v1.72.1
  • $ ll redis_exporter-v1.72.1 -> 실행 파일: redis_exporter (크기: 9.2M)
  • $ ln -s redis_exporter-v1.72.1/redis_exporter redis_exporter
    -> 링크 만들기: 다른 버전을 받으면 링크만 수정한다. 시스템 서비스 등록은 수정하지 않는다.

🖥️ 시스템 서비스 등록

  • sudo vi /usr/lib/systemd/system/redis_exporter.service -> CentOS
  • sudo systemctl daemon-reload -> 설정 reload
  • sudo systemctl start redis_exporter -> 시작(실행)
  • sudo systemctl enable redis_exporter -> 재부팅 시 자동 시작 등록
  • sudo systemctl stop redis_exporter -> 중지(shutdown)
  • sudo systemctl status redis_exporter -> 상태 보기

⚓ 9121 포트 허용

  1. sudo vi /etc/sysconfig/iptables -> 아래 내용 저장
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 9121 -j ACCEPT
  2. sudo systemctl restart iptables
  3. sudo iptables -L -n | grep 9121 -> iptables 설정 확인
    target prot opt source destination
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9121
  4. sudo netstat -tulnp | grep 9121 -> netstat 확인
    tcp6 0 0 :::9121 :::* LISTEN 29865/redis_exporter
  5. 포트 관련 추가로 필요한 설정이 있으면 해주세요.

Redis Exporter가 실행하는 명령

• Redis Exporter가 Redis 서버에 실행하는 명령입니다.
• prometheus.yml   scrape_interval: 5s 간격마다 실행합니다.

  1. AUTH redisgate -> 접속
  2. CLIENT SETNAME redis_exporter -> 클라이언트 이름 설정
  3. CONFIG GET * -> config 파라미터 전체를 가져옴: data size: 6.3K, 170 lines
  4. INFO ALL -> info 전체 데이터를 가져옴: data size: 7.2K, 230 lines
  5. LATENCY LATEST -> Latency 데이터를 가져옴
  6. LATENCY HISTOGRAM
  7. SLOWLOG LEN -> Sloglog 데이터를 가져옴
  8. SLOWLOG GET 1

🌐 브라우저 테스트

http://IP:9121/metrics -> 결과 이미지


    36K, 670라인   ➡ 전체 데이터는 아래 참조



Node Exporter 전체 데이터 📖

http://IP:9100/metrics 실행했을 때 나오는 데이터입니다.
Node Exporter 전체 데이터: 100K, 약 1600라인.



Redis Exporter 전체 데이터 📖

http://IP:9121/metrics 실행했을 때 나오는 데이터입니다.
Redis Exporter 전체 데이터: 36K, 670라인


Email 返事がかかってなれば、メールでお知らせします。