홈서버에는 proxmox 로 가상화가 되어있고, vm을 여러개 띄울 수 있다.

현재는 하나의 ubuntu vm 만 구성된 상태이다.

vm 1 ip : ( 수집 대상 ) : 192.168.0.132 vm 2 ip : ( 수집용 ) : 192.168.0.167

각종 기본 세팅을 해줬다.

vm 2 에 설치해뒀다

image.png

version: '3.7'  # 파일 규격 버전
services:       # 이 항목 밑에 실행하려는 컨테이너 들을 정의
  prometheus:
    image: prom/prometheus:latest
    user: "0:0"
    container_name: prometheus
    volumes:
      - ./prometheus/config:/etc/prometheus
      - ./prometheus/volume:/prometheus
    ports:
      - 9090:9090 # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    command: # web.enalbe-lifecycle은 api 재시작없이 설정파일들을 reload 할 수 있게 해줌
      - '--web.enable-lifecycle'
      - '--config.file=/etc/prometheus/prometheus.yaml'
    restart: always
    networks:
      - promnet

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    user: "0:0"
    ports:
      - 3000:3000 # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    volumes:
      - ./grafana/volume:/var/lib/grafana
      - ./grafana/dashboards:/var/lib/grafana/dashboards    # 대시보드 지정
      - ./grafana/provisioning:/etc/grafana/provisioning    # 지정한 대시보드 불러오기 및 프로메테우스 uid 고정(충돌방지)
      - GF_SECURITY_ADMIN_PASSWORD=admin  # 초기 비밀번호 지정
    restart: always
    networks:
      - promnet

  node_exporter:
    image: prom/node-exporter:latest
    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.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    ports:
      - "9100:9100"
    networks:
      - promnet

networks:
  promnet:
    driver: bridge

이 docker-compose.yml 에서 prometheus config파일 위치를 확인

프로메테우스.yml 파일에서 수집 대상에 vm-1아이피를 추가해준다.

image.png