

인터넷 연결이 테스트를 실행한 순간에 얼마나 빠른지만이 아니라, 실제로 제대로 작동하고 있는지 알고 싶었습니다.
이 프로젝트는 Raspberry Pi Zero 2 W를 소형 물리적 인터넷 모니터로 전환합니다. 주기적으로 ping, 다운로드 속도, 업로드 속도를 측정하고 결과를 Grafana로 전송하며, 최신 측정값을 작은 OLED 디스플레이에 표시합니다.
이 모니터는 Wi-Fi 대신 Ethernet을 사용하고, 무인으로 실행되며, 네트워크 성능 이력을 보존합니다. 이를 통해 짧은 장애, latency 급증, 지역별 라우팅 문제, 반복되는 속도 저하를 식별할 수 있습니다.
프로젝트 소프트웨어와 설정 세부 정보는 GitHub에서 확인할 수 있습니다. 100 Mbps Ethernet 어댑터를 잘못 선택했던 실수를 포함한 전체 엔지니어링 과정도 블로그의 전체 빌드 로그에 기록했습니다.
전체 빌드 로그: https://blog.artemiev.org/building-a-physical-internet-speed-monitor/
microSD 카드에 Raspberry Pi OS를 설치하고 Raspberry Pi Zero 2 W를 부팅합니다.
네트워크 액세스를 설정하고 프로젝트 소프트웨어에 필요한 dependencies를 설치합니다. 전체 설치 명령은 프로젝트 repository에서 확인할 수 있습니다:
https://github.com/dartemiev/internet-speed-monitor/blob/master/README.md
케이스를 조립하기 전에 Raspberry Pi를 Gigabit 지원 Ethernet 확장 보드에 연결하고 수동 속도 테스트를 한 번 실행합니다.
협상된 Ethernet 링크 속도가 연결에 적합한지 확인합니다. 처음 사용한 어댑터는 100 Mbps로 제한되어 모니터 자체에서 bottleneck을 만들었습니다. 어댑터, 케이블, 라우터 포트가 측정하려는 속도를 지원하는지 확인하세요.
Raspberry Pi에서 수동 속도 테스트를 실행하고 다음 세 가지 기본 결과를 기록합니다:
같은 네트워크에 연결된 정상 작동이 확인된 장치의 결과와 비교합니다.
결과가 예상과 달리 100 Mbps에 가까우면 소프트웨어를 변경하기 전에 측정 경로를 확인합니다. Ethernet 어댑터, 케이블, 라우터 포트, 협상된 링크 속도를 점검하세요.
측정 장치 자체가 bottleneck이 되어서는 안 됩니다. 외부 Ethernet 확장 보드와 함께 Raspberry Pi Zero 2 W를 사용할 때는 이 검증이 특히 중요합니다.
수동 테스트에서 합리적인 결과가 나오면 모니터가 자동으로 측정을 실행하도록 설정합니다.
모니터는 주기적으로 ping, 다운로드, 업로드 값을 수집하고 이를 monitoring stack에 게시해야 합니다. 프로젝트 repository의 설정 안내를 사용하세요:
https://github.com/dartemiev/internet-speed-monitor/blob/master/README.md
자주 수행하는 측정은 가볍게 유지합니다. 멀리 떨어진 지역을 대상으로 하는 비용이 큰 테스트는 모니터링 중인 인터넷 연결을 계속 포화시키지 않도록 빈도를 낮춰 실행해야 합니다.
목표는 몇 분마다 가능한 가장 빠른 테스트를 실행하는 것이 아니라, 네트워크 성능의 일관된 이력을 구축하는 것입니다.





가까운 서버를 대상으로 한 속도 테스트는 로컬 연결이 작동하고 있다는 사실만 보여 줍니다. 경로를 따라 더 먼 곳에서 발생하는 문제는 드러내지 못할 수 있습니다.
다음과 같이 자신에게 중요한 지역에 대한 추가 측정을 설정합니다:
이러한 지역별 테스트는 가벼운 로컬 측정보다 낮은 빈도로 실행합니다. 시간에 따라 결과를 비교할 수 있도록 대상은 일관되게 유지하세요.
지역별 비교를 통해 로컬 ISP 문제와 특정 대상에만 영향을 미치는 라우팅 또는 latency 문제를 구분할 수 있습니다.


모니터가 측정값을 metrics storage에 게시하도록 설정한 다음, 해당 data source를 Grafana에 연결합니다.
다음 항목에 대한 대시보드 패널을 만듭니다:
대시보드를 사용하면 하루 동안 연결이 어떻게 동작하는지 확인하고 짧은 장애, latency 급증 또는 반복되는 속도 저하를 식별할 수 있습니다.
모니터가 문제가 발생한 이유를 설명할 필요는 없습니다. 일관된 측정값을 수집하고 나중에 조사할 수 있도록 이력을 보존하기만 하면 됩니다.




프로젝트 repository의 배선 및 소프트웨어 안내에 따라 1.3인치 OLED 디스플레이를 Raspberry Pi에 연결합니다:
https://github.com/dartemiev/internet-speed-monitor/blob/master/README.md
디스플레이는 최신 측정값을 빠르게 로컬에서 확인할 수 있게 해 줍니다. 다음 항목을 표시해야 합니다:
모니터가 현재 측정 중인지, 대기 중인지, 아니면 가장 최근에 완료된 결과를 표시 중인지 명확히 알 수 있도록 진행 상태를 추가하세요.
Grafana는 과거 데이터를 조사하는 데 유용합니다. OLED는 기기 옆을 지나가면서 현재 연결 상태를 바로 확인하고 싶을 때 유용합니다.
이 프로젝트에 포함된 인클로저 부품 3개를 출력하세요:
이 인클로저는 이 빌드에서 사용하는 Raspberry Pi Zero 2 W, Ethernet 확장 보드, OLED 디스플레이 및 커넥터 배치에 맞춰 특별히 설계되었습니다.
최종 조립 전에 부품을 가조립하고 다음을 확인하세요:
하드웨어가 다르다면 모든 부품을 출력하기 전에 치수와 포트 위치를 확인하세요.

인쇄된 인클로저 안에 Raspberry Pi, Ethernet 확장 보드 및 OLED 디스플레이를 설치하세요.
디스플레이와 Ethernet 보드를 연결하고, 케이블을 주의해서 배선한 다음, 나사나 적절한 고정 장치로 인클로저 패널을 고정하세요.
케이스를 완전히 닫기 전에 다음을 확인하세요:
기기의 전원을 켜고 Raspberry Pi가 부팅되며 Ethernet을 통해 연결되고 모니터링 소프트웨어가 시작되는지 확인하세요.


여러 측정값이 수집될 때까지 모니터를 충분히 실행한 다음 전체 시스템을 확인하세요:
결과가 예상치 않게 100 Mbps에 가까우면 먼저 Ethernet 어댑터, 케이블 및 라우터 포트를 점검하세요. 네트워크 모니터는 자체 측정 경로가 병목이 아닐 때만 유용한 데이터를 제공할 수 있습니다.


완성된 기기는 이제 네트워크에서 조용히 실행되며, 예약된 측정을 수행하고, OLED 디스플레이에 최신 결과를 표시합니다.
현재 연결 상태를 빠르게 확인하려면 OLED를 사용하세요. 과거 성능을 조사하거나 지역을 비교하거나 반복되는 문제를 찾으려면 Grafana를 여세요.
프로젝트 소프트웨어와 설정 지침은 GitHub 저장소에서 확인할 수 있습니다.
원래의 100 Mbps 병목 현상을 포함한 전체 엔지니어링 과정은 내 블로그의 전체 빌드 로그에 문서화되어 있습니다.
원문: https://www.instructables.com/Build-a-Physical-Internet-Speed-Monitor-With-Raspb/