Przeglądaj źródła

Initial commit

- The first docker-compose working version

Ref: https://blog.eleven-labs.com/fr/monitorer-son-debit-internet/)
Jeremy MAURO 4 lat temu
commit
4b05503c34
4 zmienionych plików z 79 dodań i 0 usunięć
  1. 17 0
      Dockerfile
  2. 3 0
      README.md
  3. 31 0
      docker-compose.yaml
  4. 28 0
      scripts/docker-entrypoint.sh

+ 17 - 0
Dockerfile

@@ -0,0 +1,17 @@
+FROM debian:buster-slim
+
+ENV INSTALL_KEY 379CE192D401AB61
+ENV DEB_DISTRO buster
+
+# install requirements curl & jq
+RUN apt-get update && apt-get install -y curl jq
+
+# install speedtest
+RUN apt-get update && apt-get install -y gnupg1 apt-transport-https dirmngr && \
+	apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY && \
+	echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | tee /etc/apt/sources.list.d/speedtest.list && \
+	apt-get update && \
+	apt-get install speedtest
+
+COPY scripts/docker-entrypoint.sh /usr/local/bin
+ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

+ 3 - 0
README.md

@@ -0,0 +1,3 @@
+# Speedtest metrology
+Here is the [documentation](https://blog.eleven-labs.com/fr/monitorer-son-debit-internet/)
+

+ 31 - 0
docker-compose.yaml

@@ -0,0 +1,31 @@
+---
+version: "3.7"
+
+services:
+  grafana:
+    image: docker.local/grafana:7.4.1
+    volumes:
+      - "grafana-storage:/var/lib/grafana"
+    networks:
+      - speedtest
+    ports:
+      - "3000:3000"
+    user: "472"
+
+  influxdb:
+    image: influxdb:1.8.2
+    volumes:
+      - "influxdb-data:/var/lib/influxdb"
+    networks:
+      - speedtest
+    ports:
+      - "127.0.0.1:8086:8086"
+
+networks:
+  speedtest:
+    name: speedtest
+    driver: bridge
+
+volumes:
+  grafana-storage:
+  influxdb-data:

+ 28 - 0
scripts/docker-entrypoint.sh

@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+# InfluxDB variables
+influxdb_proto=${INFLUXDB_PROTO:-http}
+influxdb_host=${INFLUXDB_HOST:-influxdb}
+influxdb_port=${INFLUXDB_PORT:-8086}
+influxdb_db=${INFLUXDB_DB:-speedtest}
+
+influxdb_url="${influxdb_proto}://${influxdb_host}:${influxdb_port}"
+
+# run speedtest & store result
+json_result=$(speedtest -f json --accept-license --accept-gdpr)
+
+# Extract data from speedtest result
+result_id=$(echo "${json_result}" | jq -r '.result.id')
+ping_latency=$(echo "${json_result}" | jq -r '.ping.latency')
+download_bandwidth=$(echo "${json_result}" | jq -r '.download.bandwidth')
+upload_bandwidth=$(echo "${json_result}" | jq -r '.upload.bandwidth')
+
+# Ensure InfluxDB database exists
+curl \
+    -d "q=CREATE DATABASE ${influxdb_db}" \
+    "${influxdb_url}/query"
+
+# Write metric to InfluxDB
+curl \
+    -d "speedtest,result_id=${result_id} ping_latency=${ping_latency},download_bandwidth=${download_bandwidth},upload_bandwidth=${upload_bandwidth}" \
+    "${influxdb_url}/write?db=${influxdb_db}"