ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Prometheus] 다른서버에 exporter를 설치하고 Prometheus서버에 연결해보기
    데이터 엔지니어링/Prometheus 2022. 12. 19. 20:54
    반응형

    안녕하세요 저번 포스팅에서 Prometheus 서버를 설치하여 간단하게 UI를 살펴봤는데요. 이번에는 Prometheus 서버에서 Pull 할 수 있는 데이터를 만들어주는 Exporter에 대해 알아보겠습니다.

    목차

    • Exporter란?
    • Node_exporter란?
    • Node_exporter 실행하기 (Optional - background 실행하는 법)
    • Prometheus Config에 Node_exporter 추가하기
    • Prometheus 실행하기 하고 Node_exporter metrics 확인하기
    • 마치며

     

    출처 - https://prometheus.io/docs/introduction/overview/

    Exporter란?

    Prometheus는 맨처음 포스팅에서 Push 방식이 아닌 Pull방식을 채택되었다고 하였습니다. 그러면 사용자가 Prometheus에서 바라보고 다른 서버를 Pull 할 수 있는 형태로 만들어 주어야 하는데요 다른 서버에 Exporter라는 것을 배포해주면 Prometheus가 Pull 할 수 있는 상태가 됩니다. 즉, Exporter는 Prometheus가 시계열 데이터를 가져갈 수 있도록 하는 시계열 데이터 제공 서버라고 생각하시면 될 것 같습니다.

    Node_exporter란?

    Prometheus에서 정보를 가져오는 방식이 Pull방식이기 때문에 어떤 곳을 모니터링할 때 exporter를 사용하여 정보를 가져갈 수 있도록 만들어 줘야 한다고 하였는데 Node Exporter는 그중에 node의 cpu, memory 등의 정보를 노출시켜주는 역할을 하는 것이 Node_exporter입니다. Prometheus 다운로드 페이지에서 링크 주소 복사형 wget 다운로드 설치하겠습니다.

    # wget으로 다운로드
    wget <https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz>
    # 압축해제
    tar xvfz node_exporter-*.*-amd64.tar.gz
    # node_exporter로 이동
    cd node_exporter-*.*-amd64
    # node_exporter 실행
    ./node_exporter
    

     

    Node_exporter background 실행하는 법(Optional)

    그냥 실행 줘도 돼지만 저는 Background에서 실해하는 것으로 해보도록 하겠습니다. node_exporter가 background 실행 명령어가 없어 background service 만들기 아래 명령어 실행

    sudo vi /etc/systemd/system/node_exporter.service
    
    # 아래 내용 넣기
    [Unit]
    Description=Node Exporter
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=root
    Group=root
    Type=simple
    ExecStart=/root/prometheus/node_exporter/node_exporter
    
    [Install]
    WantedBy=multi-user.target
    
    # 종료 
    :wq
    
    sudo systemctl daemon-reload
    sudo systemctl enable node_exporter.service
    sudo systemctl start node_exporter.service
    

    다 돼었다면 {주소}:{포트 default 9100} 접속하여 접속되면 Node_exporter가 실행된 것입니다.

     

    Prometheus Config에 Node_exporter 추가하기

    Node_Exporter가 다른 서버에 설치된 것이기 때문에 이를 Prometheus 서버로 돌아와서 config 파일에 추가해주어야 Prometheus가 인지하고 데이터를 Pull 할 수 있습니다. 아래 화살표 내용 추가해 줍니다.

    vim prometheus.yml
    
    # 맨아래 화살표 구역 추가
    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: "prometheus"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["localhost:9090"]
    
      # Node Exporter   <----------------------------------------------
      - job_name: "node"
        static_configs:
          - targets: ["172.30.3.170:9100"]
    

     

     

     

    Prometheus 시작하기

    ./prometheus --config.file=prometheus.yml
    

    web-Targets에서 node가 추가된 것을 확인할 수 있습니다. up상태이면 Pull 할 수 있는 상태임을 나타냅니다. 또한 노드에 관한 API가 생기게 되어 Metrics에서도 Node에 대한 Metrics가 생성된 것을 확인할 수 있습니다.


    하나를 검색해보면 아래와 같이 값이 잘 나오는 것을 알 수 있습니다.

     

    마치며

    다운로드 페이지로 이동하시면 다양한 Exporter가 존재합니다. 다른 Exporter들도 Github에서 찾아보면 대표적인 툴들은 오픈소스로 제공하고 있습니다. 필요한 툴로 다운로드하여서 설치 후에 사용하면 될 것 같고 안된다고 하면, Custom Exporter를 만들어서 사용하면 될 것 같습니다. Custom Exporter는 Python, Go 등으로 작성하여 배포 가능합니다. 다음 포스팅은 Grafana와 연동하여 Node_exporter에 대한 시각화를 진행해보도록 하겠습니다.





    참고자료
    https://prometheus.io/docs/guides/node-exporter/
    https://prometheus.io/download/#node_exporter

    반응형

    댓글

Designed by Tistory.