Grafana/Prometheus Architecture

- 아래 그림에서 Exporters 에 해당하는 부분에 해당함
- Node Exporter는 하드웨어의 상태와 커널 관련 메트릭을 수집하는 메트릭 수집기로 Linux, macOS, Windows 다양한 운영 체제에서 작동한다.

테스트 수행한 환경

- 인터넷가능한 환경, Rocky Linux 8.6, Docker가 구성된 환경

1. Node Exporter docker-compose 구동을 위한 스크립트 준비

전체파일 구성

tree
├── create.sh
├── delete.sh
├── docker-compose.yml
├── log.sh
├── start.sh
└── stop.sh

1) docker-compose.yml 샘플

주요설정 설명
--collector.filesystem.ignored-mount-points : 수집하지 않을 filesystem 정의의

vi  docker-compose.yml

version: '3.7'

# monitor-net이름으로 이미 구성한 경우에는 networks부분은 주석처리
networks:
  monitor-net:
    driver: bridge

services:

  nodeexporter:
    #image: prom/node-exporter:v0.18.1
    image: prom/node-exporter:latest    
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
#    restart: unless-stopped
    ports:
      - 9100:9100 
    networks:
      - monitor-net

2) 기타 docker 컨테이너 생성,삭제,구동,중지,로그조회 등 스크립트 작성

cat > create.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml logs -f
EOF

cat > delete.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml down -v
EOF

cat > start.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml start
EOF

cat > stop.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml stop
EOF

cat > log.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml logs -f
EOF

chmod +x *.sh

2. Node Exporter 정상구동여부 확인, 대시보드 확인

### 구동하기
./create.sh 

### 도커컨테이너 정상구동여부 확인
docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
5411920f44bd        prom/node-exporter:latest   "/bin/node_exporte..."   11 minutes ago      Up 11 minutes       0.0.0.0:9100->9100/tcp   nodeexporter

### 도커컨테이너 로그 조회
./logs.sh 
ts=2023-04-16T12:01:15.952Z caller=node_exporter.go:180 level=info msg="Starting node_exporter" version="(version=1.5.0, branch=HEAD, revision=1b48970ffcf5630534fb00bb0687d73c66d1c959)"
생략...
ts=2023-04-16T12:01:15.955Z caller=tls_config.go:232 level=info msg="Listening on" address=[::]:9100
ts=2023-04-16T12:01:15.955Z caller=tls_config.go:235 level=info msg="TLS is disabled." http2=false address=[::]:9100

3. Node Exporter 메트릭 데이터 조회

curl http://아이피:9100/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.5022e-05
go_gc_duration_seconds{quantile="0.25"} 2.7251e-05
go_gc_duration_seconds{quantile="0.5"} 3.4583e-05
go_gc_duration_seconds{quantile="0.75"} 4.9426e-05
go_gc_duration_seconds{quantile="1"} 0.000238435
go_gc_duration_seconds_sum 0.008046264
go_gc_duration_seconds_count 191
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 8
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.19.3"} 1
이하 생략..

4. Grafana 대시보드에서 조회

- Grafana사이트에서 다운받은 Node Exporter Full 대시보드로 조회한 화면

댓글남기기