使用容器搭配 smokeping 監測網路狀態 in Azure 小記
之前因為到東京的網路品質不是很穩定
所以就有想法要來監測相關資訊, 在主管的建議下, 來試試看 smokeping 這個軟體
官方網站
Smokeping 是rrdtool 的作者Tobi Oetiker 的作品,主要是監視網路性能,特點是畫的圖非常漂亮,網路丟包和延遲用顏色和陰影來表示。
偵測的方式可以參考 https://oss.oetiker.ch/smokeping/probe/index.en.html
包含常用的ping,curl, 監控 DNS,監控 SSH 等。
既然已經有容器的版本, 就使用容器的版本來測試
首先,在 Azure 使用 cloud shell + Ansible 新增 VM
啟動 Cloud Shell
下載 Ansible playbook from github
使用 ansible-playbook 指令建立 VM
$ ansible-playbook azure_create_vm.yml
使用互動的方式建立 openSUSE Leap 15.1 VM :)
大家可以用自己喜歡的 OS
用 SSH 連入 VM, 切換身份
啟動容器服務, 設定開機啟動
# systemctl start docker
# systemctl enable docker
觀察資訊
# systemctl status docker
# systemctl is-enabled docker
參考網路上的文章, 使用 LinuxServer.io 打包的 container image 來測試
首先啟動 linuxserver/smokeping 的 container image 嘗試
# docker run --name=smokepingtest --rm -e TZ=Asia/Taipei -p 80:80 linuxserver/smokeping
這邊使用 --rm 是等等實驗完成之後就會刪除這個 container
修改 Time Zone 爲 Asia/Taipei
預設收集時間是 300 秒, 所以要等個幾分鐘應該才會有相關資料
放置一段時間, 可以觀察到有相關圖表產生
http://YOUR_IP:8080
進一步測試
取得修改後的設定檔
# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Alerts
# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Database
# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/General
# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Targets
編修相關設定檔, 可以參考 https://oss.oetiker.ch/smokeping/doc/smokeping_config.en.html
Alerts
告警設定
Database
取樣頻率
General
一般性設定
Presentation
呈現方式
Targets
監控對象
可以使用階層的方式來顯示
可以用 IP 也可以用 FQDN
可以將多個對象放在同一個圖
設定是否觸發告警(alerts)
ssmtp.conf
SSMTP 是一個專門用於送信的系統小工具,它的角色類似 sendmail,可透過標準輸入接收郵件資料,並且同步將郵件傳送至指定 MTA,進行電子郵件的遞送動作
Linuxserver.io 打包的 image 利用 ssmtp 來傳送告警
在公有雲上可以使用第三方的服務, 例如 SendGrid 來傳送信件
可以參考 https://sakananote2.blogspot.com/2020/01/sendgrid-in-azure.html
啟動容器
# docker run --rm -d -e TZ=Asia/Taipei -v /root/Alerts:/config/Alerts -v /root/Database:/config/Database -v /root/General:/config/General -v /root/Presentation:/config/Presentation -v /root/ssmtp.conf:/config/ssmtp.conf -v /root/Targets:/config/Targets -p 80:80 linuxserver/smokeping
--rm 視情況調整, 可以不加
之前 ssmtp.config 要掛到 /etc/ssmtp/ssmtp.conf 的 bug 已經修正
基本數據閱讀
RTT (round trip time)
Packet loss
取樣頻率
這樣就可以快速的搭建 smokeping 來監測網路狀態, 當網路有狀況的時候, 也可以藉由 SendGrid 來通知管理者
很方便的工具
~ enjoy it
Reference:
https://gist.github.com/cras4202tw/0708e0a4776317be43bcae3a5ed71ae3
https://oss.oetiker.ch/smokeping/doc/smokeping_config.en.html
https://sendgrid.com/docs/for-developers/sending-email/ssmtp/
https://blog.gtwang.org/linux/linux-send-mail-command-using-ssmtp-and-gmail/
沒有留言:
張貼留言