星期三, 7月 08, 2020

使用容器搭配 smokeping 監測網路狀態 in Azure 小記

使用容器搭配 smokeping 監測網路狀態 in Azure 小記


之前因為到東京的網路品質不是很穩定

所以就有想法要來監測相關資訊, 在主管的建議下, 來試試看 smokeping 這個軟體


官方網站


既然已經有容器的版本, 就使用容器的版本來測試


首先,在 Azure 使用 cloud shell + Ansible 新增 VM

啟動 Cloud Shell


下載 Ansible playbook from github


$ wget https://raw.githubusercontent.com/sakanamax/LearnAnsible/master/playbook/azure_playbook/azure_create_vm.yml 


使用 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/Presentation


# wget  https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/Targets


# wget https://raw.githubusercontent.com/sakanamax/sakanamax.github.io/master/Slide/2020/20200425/ssmtp.conf


  • 編修相關設定檔, 可以參考 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 已經修正



基本數據閱讀




這樣就可以快速的搭建 smokeping 來監測網路狀態, 當網路有狀況的時候, 也可以藉由 SendGrid 來通知管理者


很方便的工具 


~ enjoy it



Reference:


沒有留言: