Prometheus 및 Grafana를 사용하여 ISP 패킷 손실 시각화

4494 단어 opensource

배경



사람들이 재택근무를 시작한 이후, 불량한 화상/음성 통화 연결은 매우 성가신 문제가 되었습니다.

그러나 근본 원인이 무엇인지 진단하기는 어렵습니다. 사람들은 ISP를 비난하기 시작했고 나는 그들에게 안타까움을 느낍니다. 사실 영상 통화 연결 상태가 좋지 않은 데에는 여러 가지 이유가 있지만 내 문제가 당신 쪽에서 발생한 것이 아님을 큰 확신을 가지고 말씀해 주시면 됩니다.

ISP 패킷 손실 모니터링을 시작해야 합니다.

전제 조건


  • Grafana(무료로 등록하실 수 있습니다Grafana Cloud account )
  • Prometheus(Raspberry Pi 또는 NAS에서 할 수 있음install it)
  • 오픈 소스 라우터 OS(OpenWRT, ClearOS, Asuswrt-Merlin 등)

  • 프로세스



    ping_exporter 설정



    라우터에 SSH 접속 > ping_exporter 다운로드

    필요한 버전을 확인할 수 있습니다here..

    예를 들어:

    wget https://github.com/czerwonk/ping_exporter/releases#:~:text=ping_exporter_0.4.7_linux_arm64.tar.gz
    


    파일을 추출합니다.

    tar -xf ping_exporter_*.tar.gz ping_exporter
    

    /usr/local/bin로 이동:

    mv ping_exporter /usr/local/bin
    


    라우터에서 ISP의 DNS 서버를 얻는 방법을 선택하십시오.

    예를 들어:

    cat /etc/resolv.conf
    

    ping_exporter.yaml 아래에 /etc/ping_exporter/ 파일을 만듭니다.

    targets:
      - <Your ISP's DNS servers>
    
    ping:
      interval: 2s
      timeout: 3s
      history-size: 42
      payload-size: 120
    

    ping_exporter.service 아래에 /etc/systemd/system/ 파일을 만듭니다.

    [Unit]
    Description=ping_exporter
    
    [Service]
    User=root
    ExecStart=/usr/local/bin/ping_exporter --config.path /etc/ping_exporter/ping_exporter.yaml
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    


    서비스 파일을 다시 로드합니다.

    sudo systemctl daemon-reload
    

    ping_exporter.service 시작:

    sudo systemctl start ping_exporter.service
    

    ping_exporter.service 상태를 확인하십시오.

    sudo systemctl status ping_exporter.service
    


    재부팅할 때마다 ping_exporter.service를 활성화하려면:

    sudo systemctl enable ping_exporter.service
    


    cURL을 통해 테스트 결과 얻기:

    curl http://localhost:9427/metrics
    


    Prometheus에 대상 추가



    Prometheus 구성 파일에서 static_config 섹션에 대상을 추가합니다.

    - targets: ["<Your router's ip/dns address>:9427"]
    


    Prometheus의 구성을 다시 로드합니다.

    Grafana 패널 만들기



    홈 네트워크의 대시보드에 새 패널을 추가하고 ping_loss_percent 메트릭을 사용하겠습니다.

    ping_loss_percent{instance="<Your router's ip/dns address>:9427",target="<Your ISP's DNS servers>"}
    




    ⚠️ 음성 및 화상 통화의 경우 0.05 미만의 패킷 손실은 허용 가능한 것으로 간주될 수 있습니다.

    좋은 웹페이지 즐겨찾기