ネットワークに繋がっている機器のパケロスやRTTを計測するために、古くから利用されているsmokeping。
dockerでsmokepingをしている日本語の事例がググっても1件で、自分とは違うdockerイメージを使用していたので、自分で構築した手法を記す。docker初心者向けに記載したつもり。
docker-ceのインストール
dockerを使ったことがない人は、まず、docker-ceおよびdocker-composeのインストールをする。
docker-ceのインストールは公式に従って実施。
docker-composeはpipで実施すると楽だが、他の方法もある。
pip install docker-compose
dockerはデフォルトではrootでのみ実行可能なので、現ユーザでログインできるようにする。
# dockerグループ作成
sudo groupadd docker
# 現ユーザをdockerグループに所属させる
sudo gpasswd -a $USER docker
# dockerデーモンの再起動
sudo systemctl restart docker
# exit(exitせずに、sourceとかシェルに新たに入るだけだと反映されない)
exit
smokepingの構築
dockerhubからsearchをして、どのイメージがいいか探してみる。
$ docker search --filter "stars=10" smokeping
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
linuxserver/smokeping A Smokeping container, brought to you by Lin… 80 [OK]
dperson/smokeping 57 [OK]
linuxserver/smokepingはalpineを使っていて、dperson/smokepingはdebianなので、軽量だと思われるlinuxserver/smokepingを使う。STARも多いし。
使い方はdockerhubに書いてあるので、dockerhubを見て構築できる人は、この記事のここ以降を読む必要なし。
https://hub.docker.com/r/linuxserver/smokeping/
pullして確認する。
# pull
$ docker pull linuxserver/smokeping
# 確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
linuxserver/smokeping latest fee9f5aa7700 3 days ago 104MB
docker-compose.ymlを作成する。
まずは、動かすユーザのPUIDとPGUIDを確認する。
# user名がuserの場合
$ id $USER
uid=1001(user) gid=1001(user) groups=1001(user)
docker-compose.ymlを実際に書く。
version: "2"
services:
smokeping:
image: linuxserver/smokeping
container_name: smokeping
environment:
- PUID=<上記で確認した数値>
- PGID=<上記で確認した数値>
- TZ=Asia/Tokyo
volumes:
- <smokepingのconfigを保存したいディレクトリ>:/config
- <smokepingのdataを保存したいディレクトリ>:/data
ports:
- <アクセスするポート番号。80でも問題ない>:80
mem_limit: 4096m
restart: unless-stopped
unless-stoppedがあるので、dockerを再起動した際に、自動で起動される。
一度起動して、すぐに落とす。docker-compose.ymlと同じディレクトリで下記を実行。
# 起動
$ docker-compose up -d
# 確認
$ docker-compose ps
Name Command State Ports
-----------------------------------
smokeping /init Up
# 落とす
$ docker-compose down
docker-compose.ymlで記載したconfigディレクトリ内に以下に下記ファイルが作られているはずなので、変更する。
詳しくは、ここを参考にするとよい。
https://oss.oetiker.ch/smokeping/index.en.html
*** General ***
owner = <name>
contact = <mail_address>
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website. \
+ TestParent
menu = TestParent
title = TestParent
++ TestChild
menu = TestChild
title = TestChild
host = 192.0.2.1
最後にもう1回起動して完了。
docker-compose up -d
ブラウザで、docker-compose.ymlで設定したポートにアクセスすれば、smokepingの結果が確認できる。