使用speedtest-exporter测试家中网速

简介

今天看到了这个东西

https://github.com/geerlingguy/internet-pi

然后看到了它测速使用的是speedtest-exporter

所以就打算操作下

操作

下面是他的github地址

https://github.com/MiguelNdeCarvalho/speedtest-exporter

最主要包含下面几个数值

  • 上传速度
  • 下载速度
  • ping
  • 网络波动

你可以使用docker去搭建

1
2
3
4
5
6
7
docker run -d \
--name=speedtest-exporter \
-p 9798:9798 \
-e SPEEDTEST_PORT=<speedtest-port> #optional \
-e SPEEDTEST_SERVER=<speedtest-serverid> #optional \
--restart unless-stopped \
miguelndecarvalho/speedtest-exporter

解释下两个环境变量

  • SPEEDTEST_PORT 这个当然是端口,最好加下
  • SPEEDTEST_SERVER 这个是测速服务器,没多大需求的话就不要加,默认是最好的服务器

当然,我还是直接扔到了k8s里面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
apiVersion: apps/v1
kind: Deployment
metadata:
name: speedtest
namespace: monitoring
spec:
selector:
matchLabels:
app.kubernetes.io/name: speedtest
template:
metadata:
labels:
app.kubernetes.io/name: speedtest
spec:
imagePullSecrets:
- name: regcred
containers:
- name: speedtest
image: registry.bboysoul.cn/miguelndecarvalho/speedtest-exporter:v3.3.2
env:
- name: SPEEDTEST_PORT
value: '9798'
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 9798
---
apiVersion: v1
kind: Service
metadata:
name: speedtest
namespace: monitoring
labels:
app.kubernetes.io/name: speedtest
spec:
selector:
app.kubernetes.io/name: speedtest
ports:
- port: 9798
targetPort: 9798
name: speedtest
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app.kubernetes.io/name: speedtest
name: speedtest
namespace: monitoring
spec:
endpoints:
- interval: 1h
scrapeTimeout: 5m
port: speedtest
scheme: http
selector:
matchLabels:
app.kubernetes.io/name: speedtest

一个deployment,一个service,一个ServiceMonitor

值得注意的是如果你直接添加到k8s里面的,使用下面

1
2
3
4
5
- job_name: 'speedtest-exporter'
scrape_interval: 1h
scrape_timeout: 1m
static_configs:
- targets: ['speedtest-exporter:9798']

scrape_interval表示多久抓取一次数据,最好配置的大一点,不然影响网速,因为每一次抓取都代表着一次测速
scrape_timeout表示抓取的超时时间,最好也大一点,不然速度还没测试完,你就超时了,会导致抓取不到数据

grafana dashboard可以看下面

https://github.com/MiguelNdeCarvalho/speedtest-exporter/blob/main/Dashboard/Speedtest%20Dashboard-1609529464845.json

当然你也可以看我的dashboard

https://grafana.bboysoul.cn/d/LTUPm_ink/jian-kong-da-ping?orgId=1&refresh=5s&kiosk

欢迎关注我的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道