家のネットワークが遅い気がする
- ネットワークが遅い気がする.切れたりする.
- ルータまでは接続できるがその先に行けない.
- とりあえず監視することにした.
- ルータまでは接続できるがその先に行けない.
とりあえず監視するツールを調べた
- Zabbix
- 無料
- docker image が提供されている
- 今回は,ローカルホストから監視できると良さそう.
- external script でもいいかも.
- zabbix-server に
speedtest
コマンドインストールするのが面倒な気がしたので,今回は別イメージにした.
- zabbix-server に
- external script でもいいかも.
- cron
- 設定をコードに落としておきたいので,docker compose ならその配下で実行できることが望ましい.
手順 - Zabbix 起動するまで
Refers に乗せてあるものと同じだが,一応
$ cp docker-compose_v3_alpine_mysql_latest.yaml docker-compose.yaml
$ edit .env_web # PHP_TZ=Asia/Tokyo を追加
$ docker compose up -d
これだけで,http://localhost
にアクセスできるようになる.
(ログイン情報は,公式参照
とはいえ,80 番ポートを使われると面倒なので,修正.
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 7eb3b1c0..7299bcac 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -229,8 +229,8 @@ services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
ports:
- - "80:8080"
- - "443:8443"
+ - "12080:8080"
+ - "12443:8443"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
これで,http://localhost:12080
にアクセスできるようになる
手順 - cron を設定する
docker で cron を動かす コチラ の記事を参考にさせて頂いた.
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 7299bcac..882b3aad 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -459,6 +459,16 @@ services:
# aliases:
# - elasticsearch
+ cron:
+ build:
+ context: cron
+ depends_on:
+ - zabbix-server
+
+
FROM ubuntu:20.10
RUN apt update && \
apt install -y cron
COPY sender_speedtest.sh /usr/local/bin/
COPY speedtest /etc/cron.d/speedtest
RUN chmod 0644 /etc/cron.d/speedtest
CMD ["cron", "-f"]
* * * * * root /usr/local/bin/sender_speedtest.sh
#!/bin/bash
touch /tmp/speedtest.log /tmp/speedtest.err
date >> /tmp/speedtest.log 2>> /tmp/speedtest.err
新しいイメージを起動する
$ docker compose build
$ docker compose up -d
up
だけでrecreate してくれるのね.便利…
動作確認する.ログにデータが入っていればOK.
$ docker compose exec cron bash
# tail -f /tmp/speedtest.*
手順 - zabbix send する
cron でやろうとして,よく考えたら zabbix から external script とかで取った方がいいのかも?と思ったけど,
Refers の記事によると,sender で良さそうだったので,sender にする.
まず speedtest が動くようにする
必要なソフトを cron
用イメージに追加.
- speedtest
- zabbix-sender
FROM ubuntu:20.10
RUN apt update && \
apt install -y cron curl
RUN curl -s https://install.speedtest.net/app/cli/install.deb.sh | bash && \
curl -LO https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb && \
dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb && \
rm zabbix-release_5.4-1+ubuntu20.04_all.deb && \
apt update && \
apt install -y speedtest zabbix-sender
COPY sender_speedtest.sh /usr/local/bin/
COPY speedtest /etc/cron.d/speedtest
RUN chmod 0644 /etc/cron.d/speedtest
CMD ["cron", "-f"]
スクリプトを修正.
#!/bin/bash
SPEEDTEST_SERVER_ID=`/usr/bin/speedtest -L | grep -E "OPEN Project" | sed 's/^ *\| *$//' | cut -d " " -f 1`
if [ -z "$SPEEDTEST_SERVER_ID" ]; then
SPEEDTEST_SERVER_ID=`/usr/bin/speedtest -L | tail -1 | sed 's/^ *\| *$//' | cut -d " " -f 1`
fi
SPEEDTEST_RESULT=`/usr/bin/speedtest --accept-license -s $SPEEDTEST_SERVER_ID -f json`
ZABBIX_SERVER=zabbix-server
ZABBIX_HOSTNAME=speedtest.net
ZABBIX_ITEMKEY=speedtest.json
/usr/bin/zabbix_sender -z $ZABBIX_SERVER -s $ZABBIX_HOSTNAME -k $ZABBIX_ITEMKEY -o "$SPEEDTEST_RESULT"
接続先に OPEN Project が居なくなったりするので,最後のを使うようにした.
それと,license にaccept しないといけないので引数に追加した.
send したり,speedtest
を実行するためにネットワーク設定が必要そうだったので追加した.
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 7299bcac..882b3aad 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -459,6 +459,16 @@ services:
# aliases:
# - elasticsearch
+ cron:
+ build:
+ context: cron
+ depends_on:
+ - zabbix-server
+ networks:
+ zbx_net_backend:
+ zbx_net_frontend:
+
+
テスト用に,1分おきにしていたのを,5分おきに修正
*/5 * * * * root /usr/local/bin/sender_speedtest.sh
で,新しいイメージを起動する.
$ docker compose build
$ docker compose up -d
これで動いてそう.しばらく様子を見る.
(send するには,zabbix 側に trapper アイテム登録も必要なので,参考にした記事 を参照のこと
接続ができるようになるまでは,bash -x /usr/local/bin/send_spedtest.sh
を実行してログを見たりしていた
結局,トラッパーアイテムのkey のタイポだったことを記載しておく
追記
- 状況として瞬断してるようで,5分間隔だとあまりわからないことがわかった.
- もう少し頻繁にチェックしないとわからないが,そこまですると帯域がちょっと気になっていく気がしてきた.
Refers