加入ping與snmp監控到telegraf

在前幾篇介紹telegraf的文章片段中只有簡單介紹如何最簡單快入的安裝 & 設定 & 啟動 & 確認服務是否成功執行

但是並沒有針對telegraf設定去做較清楚的講解

本篇文章為使用telegraf的ping與snmp設定範例之一

從預設的系統監控項目額外新增上述兩項的input的監控項目

預設上windows telegraf的本身設定即包含了cpu、disk、diskio、mem、net、perf_conuter、proc、swap、system這些類型項目的input

而Linux Telegraf預設上包含了cpu、disk、diskio、kernel、mem、processes、swap、system

而預設上本身即有的功能本篇章內容不另外特別介紹

(特別注意Linux的net需要到Telegraf Configuration下的Gather metrics about network interfaces設定開啟net監控資訊收集)

那麼第一部分主要是先講解telegraf上新增ping的功能

1. 新增ping功能

參考網址:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/ping

將以下的設定檔新增至telegraf.conf後修改成需要ping的IP或者網址後,重啟telegraf的服務
如果有需要其他參數的話就拿掉註解符號號設定相對應的值即可.

1. 新增snmp功能

參考網址:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/snmp

snmp(簡單網路管理協定)簡單來說就是透過一組,它讓網路上不同的設備,產生具有共通標準, 且可供網路管理的資料。

這些資料,可進一步由網管應用程式來讀取或是進行監控 。

但是把SNMP上的OID用在Telegraf需要特別的注意 在telegraf的inputs.snmp部分寫入的oid,必須是O.I.D樹結構的最末梢,如果非最末梢會導致讀到的是數據表而非單一值,造成無法寫入到influxdb內

範例是FortiGate-100D

Grafana搭配Slack告警與GCS圖片發送

呈上個主題,建立好dashboard與panel的監控圖表(可以顯示出cpu、disk、ram、network等資訊)

我們需要有一個機制可以在監控圖表突然出現異常(數值不正確)的時候可以發出警通知系統管理人員

並且發送告警監控的截圖來告知系統管理員是哪一個服務或資源發生異常從而告警,目前的值是多少,圖形是如何的趨勢

Configuration alert

step.1 首先先註冊一個slack的帳號與下載slack的應用程序或app

step.2 slack創建一個channel的頻道(也可以說是workspace的地方),並將需要的管理人員都加入進去

stpe.3 前往slack的app Directory應用程序,登入後選擇所要發送告警通知的channel,搜尋並申請Incoming WebHooks的URL

網址:https://slack.com/apps

step.4 回來Grafana的Alerting → notifications channels → New Channel

填上名稱、類型、incoming webhook url之後把send on all alerts與include image給勾選起來後點選save & test
會發送一個測試個告警訊息且包含圖片

有收到上圖的告警 & 圖片訊息才能確認告警發送通知是成功的。才可以繼續往下做step.5 告警值的調整

step.5 回到Grafana之前所建立dashboard的cpu、ram、disk等資訊監控的panel,選擇alert頁籤後點選Create Alert。

設定Alert config、condition與no data 與 error handing與Notifications

Rule:此條規則的名稱、多久評估一次值、等待多久從pending 轉為alert的狀態

Conditions:圖例來說,設置值的平均值,query A的值從現在往前5分鐘、超過100 =>符合告警的設定

no data & error handing:設定沒資料與處理錯誤的狀態下該如何判定與處理

Notifications:選擇剛剛在Alerting所設定的Channel(會發送到剛剛建立的slacke channel)後存檔

panel名稱上應該會有一個綠色的愛心符號,即代表你有設定Alter的並且現在是正確的值

如果有跳出異常的值時,此panel會外框變成紅色且愛心會變成紅色碎裂的心

step.6 再來就是測試是否真的可以如設定上發送cpu、ram、disk等監控資訊的告警

假設目前的cpu的正常值為10%,我們把Alter的config調整成會觸發告警的值,來測試是否正確

如果成功應該會下圖一樣是有出現監控的目前資訊與告警的截圖才對

GCS上傳圖片與發送

在使用docker-compose建立grafana與influxdb的時候就已經完成的初階的GCP的DNS與Google OAuth Client 登入驗證的設定

所以只要有按照該篇文章建立與設定的話目前應該是可以透過網域與google帳號驗證登入進grafana了

那我們在GCP上還差幾個步驟就可以讓grafana上新增有上傳GCS圖片與發送圖片告警的功能了

step.1 建立服務帳戶並給予權限
此步驟主要是建立一個服務帳號,並給予該帳號可以存取storage的權限,然後讓該帳號升成一個對應的金鑰檔案(KeyFile.json),此金鑰檔案就相當於該帳號的的權限。將金鑰檔案放置grafana上並在設定擋上指定位置,這樣一來grafana就可以拿取此金鑰檔案上擁有的權限認證對storage進行存取了

先到IAM與管理員後點選+建立服務帳戶

填寫服務帳號名稱:這邊可以設定為單一服務或功能型的名稱:grafana or storages for grafana等等…
服務帳戶說明:看個人願不願意輸入此服務帳戶的詳細資訊,避免日後太久回來忘記還是建議輸入一下

設定服務帳戶權限(可選項):請選擇儲存空間的storages的物件建立者or物件管理員(至少需要擁有可以寫入的權限才能夠存入圖片)

再完成後記得點選下載json格式的金鑰,此金鑰為你所創立的服務帳號所授予寫入storage權限的金鑰檔案
有了此金鑰檔案就可以有權限往storage新增刪除物件了
所以金鑰要很小心的管理不可外流!!!

step.2 建立可以暫存圖片的storage bucket

既然已經完成了建立服務帳號與權限設定並拿到帳號的金鑰了

那接下來準備建置一個讓grafana可以存取圖片的storage bucket了

點選GCP Menu的Storage 瀏覽器後,按下建立值區(就是bucket的意思)

名稱:因為GCP的bucket的規定,全世界的bucket不可以有相同的名稱,因此請自己取一個符合服務或功能性的名稱
如果出現重複名稱GCP會有紅色通知你需要更換名稱
預設儲存空間級別:依照個人需求,假設你上傳與下載圖片頻率越高,則使用Multi-Regional;反之則選擇約低層級就好
詳細的費用計算方法請參考這裡[https://cloud.google.com/storage/pricing]


請注意將你剛剛下載下載的json金鑰檔案放置在Grafana機器的/data/grafana目錄底下。
因為容器內的路徑對應到外部的/data/grafana資料夾,因此丟到此路徑後重啟docker就可以讓容器讀取金鑰

step.3 新增gcs的configuration至docker-compose上

目前的docker-compose.yml尚未有gcs的上傳圖片功能

所以我們在這邊要新增這些環境變數上去設定來新增此功能

environment:
  - GF_EXTERNAL_IMAGE_STORAGE_PROVIDER=gcs
  - GF_EXTERNAL_IMAGE_STORAGE_GCS_KEY_FILE=/var/lib/grafana/at-test-167906-dc5790273dac.json
  - GF_EXTERNAL_IMAGE_STORAGE_GCS_BUCKET=kasper-test

第一個環境變數是指你要選擇使用gcs當作圖片的存放空間(記得要小寫,大寫會出錯)
第二個環境變數是指你的服務帳號的金鑰放置位置(注意容器與主機對應的資料夾)
第二個環境變數是指你的bucket的名稱

備註1:金鑰的部分,因為我們將grafana持久化,將容器世界的/var/lib/grafana對應到外部主機的/data/grafana,因此我建議就將禁要放置在此。然後把金鑰的位置設定成容器內部的/var/lib/grafana
即可以抓到金鑰檔案了

備註2:Bucket的名稱只要打單純的bucket名稱即可,不需要在前面增加任何網路的路徑等等

後續在建立grafana與influxdb的時候需要查看log是否有正確的讀取到設定檔與抓取該金鑰檔案

可以使用已下指令來查看

1
$ sudo docker logs grafana

正確的話會出現以下log
如果沒有出現的話就帶柄環境變數設定錯誤or讀取金鑰失敗

搭配Grafana的資料收集器Telegraf

介紹

  • telegraf 是用Go寫的代理程式,可以用在收集系統和服務的統計資料,它擁有輸入套件,可以直接從系統抓取指標數據,從第三方API獲得指標數據,甚至可以通過statsd和Kafka得到資料。它還具備输出套件,可以將採集的數據發送到各種資料庫儲存。比如InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。支援 Linux 與 Windows。

Installation

成上一個主題Grafana與Influxdb安裝完後開始要建立DashBoard進行資料視覺化分析了
但是因為目前Influxdb還沒開始建造存在Metric的資料庫因此無法拉取Metric繪畫成圖片

因此安裝Telegraf並設定收集設定的機器資料然後傳送到Influxdb的8086 Port,就是Telergaf最主要的功能了!

接下來是安裝教學

1
$ wget https://dl.influxdata.com/telegraf/releases/telegraf_1.9.5-1_amd64.deb

下載Telegraf的安裝包

1
$ sudo dpkg -i telegraf_1.9.5-1_amd64.deb

解壓縮並安裝

1
$ vim /etc/telegraf/telegraf.conf

修改設定檔
將config內的設定檔照以下的資訊設定完成

logfile:主要是將telegraf的log檔案指定在特定路徑下
urls:指定要telegraf將收集的資料丟往哪一個資料庫存放
database:指定在丟資料時要存放進哪一個資料庫
儲存好了之後重啟服務 & 確認服務Running

1
$ service telegraf restart
1
$ service telegraf status

Configuration

之後telegraf會將電腦的預設系統資訊傳送到influxdb,telegra的configuration有著最低配置的系統資料收集,CPU、RAM、DISK、NETWORK..等等
現在照著把上述資訊給拉出圖表來觀看

step.1 先登入到Grafana後點選Configuration → Data Source → InfluxDB,照著下列資訊設定

step.2 點選左上的 + → Dashboard → Add Query
照以下的圖片設定即可已出現cpu的繪圖

-

-

後續要加上其餘的記憶體與硬碟與網路封包等都可以再剛剛顯示cpu的選項調整
cpu的位置是Input的類別(e.q 硬碟、記憶體、網路、程序、系統、io量等)
where是選擇host或者是更細部的子類別選項等
select是該類別下的所有被收集來的資訊(e.q 硬碟大小、容量、使用量、空閒等)
Group By 的time是時間區間與,fill是值的表現方式

之後會再寫一篇介紹telegraf怎麼加入ping與snmp的功能
主要也是針對configuration的部分新增ping與snmp的input的段落

docker-compose建立Grafana與Influxdb

系統:Ubuntu 16.04 LTS

#介紹

  • grafana 是一個開源數據分析和視覺化圖形套件,常用在視覺化基礎設施的性能資料和應用程式分析的時間序列資料。

  • influxdb 是一款專為時序性資料開發的高性能資料庫,使用GO語言開發且開源!不同的是可以直接對 influxdb 用 curl 新增刪除修改資料。

Installation

1
$ sudo apt-get update

用來取得遠端更新伺服器的套件檔案清單。

1
$ sudo apt-get upgrade

自動找出所有有新版的軟體套件並逐一升級。

1
$ sudo apt-get install docker.io

下載docker

1
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

下載docker-compose(用來定義容器之間的關係與容器啟動的順序)

1
$ sudo chmod +x /usr/local/bin/docker-compose

將剛剛下載的docker-compose的加上執行的權限

1
$ sudo mkdir -p /data/influxdb /data/grafana

新增資料夾,用來存在grafana與influxdb的資料(避免容器重啟後即消失)

1
$ sudo chmod 777 /data/grafana /data/influxdb

將資料夾權限開到所有帳號與服務皆可以寫入(不安全的做法,如可以的話請使用安全的權限寫入,如這邊無法寫入的話,容器將會因為啟動的時候要將資料寫入對應資料夾而失敗造成無線重試&無限重啟)

1
$ sudo vim docker-compose.yml

編寫docker-compose的檔案

docker-compose內容如下(下列隱私資料我有改過,所以需要依照自己的去修正):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: "3"
services:

influxdb:
image: influxdb
container_name: influxdb
ports:
- "8086:8086"
restart: always
volumes:
- /data/influxdb:/var/lib/influxdb
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "80:3000"
restart: always
networks:
- monitor
volumes:
- /data/grafana:/var/lib/grafana
environment:
- GF_SERVER_ROOT_URL=http://grafana.monitor.com
- GF_AUTH_DISABLE_LOGIN_FORM=false
- GF_AUTH_GOOGLE_ENABLED=true
- GF_AUTH_GOOGLE_CLIENT_ID=012345678912-testestest.apps.googleusercontent.com
- GF_AUTH_GOOGLE_CLIENT_SECRET=rhtsjyrkjytjkydtjyjdyj
- GF_AUTH_GOOGLE_ALLOWED_DOMAINS=grafana.com
- GF_AUTH_GOOGLE_ALLOW_SIGN_UP=true


networks:
monitor:
容器服務 Time
version docker-compose的版本
services 定義容器服務:influxdb與grafana
container_name 給予容器的名稱
ports 將外部主機對應至內部容器的Port設定
restart 容器在非正常的關閉或者停止下會被自動給重新啟動
volumes 容器可以持久化
networks 新增一個monitors的網路,將容器的網路指定至monitor名稱的區網路下
environment 設定grafana的設定檔環境變數

備註:記得docker-compose是有縮排的,容器與容器階級皆的縮牌要相同,同理服務與環境變數的設定是需要相同的空白段落,要注意否有對齊。

environment細部講解:

  • GF_SERVER_ROOT_URL

指定grafana網站的使用網域,有購買網域給該grafana服務使用的話可以利用此設定

  • GF_AUTH_DISABLE_LOGIN_FORM

輸入帳號密碼功能的顯示,如果需要輸入帳號密碼與google第三方驗證登入同時存在的話這邊設定false

  • GF_AUTH_GOOGLE_ENABLED

開啟google第三方登入驗證功能

  • GF_AUTH_GOOGLE_CLIENT_ID

google驗證客端的ID。可以至GCP上的API和憑證中的憑證後點選建立憑證→OAuth用戶端ID建立後或給予一組用戶端ID可以填寫在此。注意這邊需要先到OAuth同意畫面新增已授權網域並選擇公開

  • GF_AUTH_GOOGLE_CLIENT_SECRET

google驗證客端的密碼,同上在建立OAuth2.0用戶端ID的時候會同時給予密碼。

  • GF_AUTH_GOOGLE_ALLOWED_DOMAINS

允許認證的登入的網域,也就是說你需要設定什麼帳號的網域登入google成功後才可以轉導登入進grafana

  • GF_AUTH_GOOGLE_ALLOW_SIGN_UP

允許google驗證登入


docker-compose.yml檔案寫完之後存檔離開,準備要試著透過docker-compose啟動

1
$ sudo docker-compose up -d

檢查一下docker的容器狀況是否正常的啟動。
正常會出現像以下的容器STATUS的情況才對,告知你正常啟動的時間經過多久了

1
$ sudo docker ps -a


異常判斷1:docker-compose無法啟動成功
如果這時候發生無法啟動docker-compose的時候,一個可能是權限不足造成無法啟動
如果不是的話可能是檔案內容縮排或者設定有問題,可以先試著一個一個容器與設定拿掉後再試著啟動

異常判斷2:docker-compose無法執行
當下終端機的位置需要與docker-compose.yml所在的目錄位置是相同的,不然無法使用docker-compose的指令,因為當下的目錄無此docker-composeyml檔案所以無法執行


Acceptance

先開啟剛剛再docker-compose.yml所輸入的root url或者該機器的IP(防火牆記得開通設定80 Port)
就會出現該網站的登入畫面了

備註:如果有設定google網域登入驗證的話還是只能使用網域方式,否則轉導回網域的時候會失敗!!

先使用google帳號方式的登入後即可以看到內部Grafana的畫面了

###注意###
這邊使用google登入的方式進去會新增一個使用者且是權限最低的Viewer,導致你除了看什麼也無法做,因此後續需要登出使用預設最高管理者帳號進行權限調整

預設帳號 / 密碼 :admin / admin

登入後前往configuration→server Admin後將點選Grafana的google使用者帳號,將Permissions提升到Grafana Admin的權限

後續即可以正常的登出使用google帳號進行登出入了!!

之後再把docker-compose.yml檔案內的- GF_AUTH_DISABLE_LOGIN_FORM修改為true
重新將容器啟動!!就可以將帳號密碼的輸入功能顯示給關閉了

1
$ sudo docker-compose down
1
$ sudo docker-compose up -d

利用docker-compose建立Grafana與上傳圖片功能

N|Solid
Build Status
Build Status

docker-compose

實務上一個服務,一定由眾多 service 共同運作。若只使用 docker run,則勢必寫 Bash 來管理 4 個 service,還必須考慮:

  • 4 個 service 必須在同一個虛擬 network 下
  • 4 個 service 的啟動順序

… 等問題。Docker 為此提出 Docker Compose 概念。在 docker-compose.yml 檔描述各 service 間的參數與關係,也就是 Infrastructure as Code。

  • docker-compose.yml 檔案很小,只是文字檔而已
  • 由於 docker-compose.yml 是文字檔,可以 git 版控

間單的說,docker-compose.yml 就是 container 的管理文件,只是採用 code 形式描述

Granafa & Influxdb & Telegraf

  • influxdb 是一款專為時序性資料開發的高性能資料庫,使用GO語言開發且開源!不同的是可以直接對 influxdb 用 curl 新增刪除修改資料。

  • telegraf 是用Go寫的代理程式,可以用在收集系統和服務的統計資料,它擁有輸入套件,可以直接從系統抓取指標數據,從第三方API獲得指標數據,甚至可以通過statsd和Kafka得到資料。它還具備输出套件,可以將採集的數據發送到各種資料庫儲存。比如InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。支援 Linux 與 Windows。

  • grafana 是一個開源數據分析和視覺化圖形套件,常用在視覺化基礎設施的性能資料和應用程式分析的時間序列資料。

可以參考下方的網站來進行更細部了解與額外的設定
本文章只進行簡單的使用docker-compose建立grafana & influxdb的建置
telegraf因容器的特性暫不加入與研究放進docker-compose內
額外的google cloud platform平台與網域需要事先申請與購買才能完成本篇章設定
當然也有不需要上述方法也可以完成設定,只需要在docker-compose修改設定

Tech研讀

  • docker - Docker is a platform for developers and sysadmins to develop, deploy, and run applications with containers.
  • grafana - The leading open source software for time series analytics.
  • influxdb - InfluxData provides the leading time series platform to instrument, observe, learn and automate any system, application and business process across a variety of use cases.
  • telegraf - Telegraf is part of the TICK Stack and is a plugin-driven server agent for collecting and reporting metrics.
  • docker-compose - Compose is a tool for defining and running multi-container Docker applications.

Google Cloud Platform設定DNS與Oauth2與Storage

step.1 先到GCP(google cloud platform的簡單)的控制台,點選左上邊的Menu菜單後選擇網路服務→Cloud DNS
在此建立區域

進入區域後新增紀錄集用來當作grafana網站的網域A紀錄(e.q:grafana.monitor.com)

step2. 再到GCP的Menu菜單點選API和服務→憑證,然後點選OAuth同意畫面新增你的Grafna網域
應用程式類型:公開
應用程式名稱:任意輸入(主要是在google驗證的時候所跳出來的顯示名稱,告知登入者此跳轉至應用登入)
支援電子郵件:輸入自己的E-mail信箱(顯示在同意畫面中,方便使用者尋求支援)
已授權網域:輸入個人的網域(e.q:假設grafana.monitor.com是你的網域那就只需要輸入monitor.com即可)
完成後儲存

step.3 再切回到憑證的畫面後,再點選建立憑證→OAuth用戶端ID→網路應用程式
名稱:給予一個名稱用來辨識此OAuth用戶端ID
已授權的重新導向 URI:依照上述例子輸入http://grafana.monitor.com/login/google

step.4 之後到GCP的IAM管理員的頁面點選+建立服務帳戶

填寫服務帳號名稱:這邊可以設定為單一服務或功能型的名稱:grafana or storages for grafana等等…
服務帳戶說明:看個人願不願意輸入此服務帳戶的詳細資訊,避免日後太久回來忘記還是建議輸入一下

設定服務帳戶權限(可選項):請選擇儲存空間的storages的物件建立者or物件管理員(至少確保有寫入權限)
點選繼續之後

再完成後記得點選下載json格式的金鑰,此金鑰為你所創立的服務帳號所授予寫入storage權限的証明
有了此金鑰檔案就可以有權限任意的往你的storage新增刪除物件了
所以金鑰要很小心的管理唷!!!

step.5 建立可以暫存圖片的storage bucket
點選GCP Menu的Storage 瀏覽器後,按下建立值區(就是bucket的意思)

名稱:因為GCP的bucket的特殊性,全世界的bucket不可以有相同的名稱,因此請自己取一個符合服務或功能性的名稱
如果出現重複名稱GCP會有紅色通知你需要更換名稱
預設儲存空間級別:依照個人需求,假設你上傳與下載圖片頻率越高,則使用Multi-Regional;反之則選擇約低層級就好
詳細的費用計算方法請參考這裡

Installation

1
$ sudo apt-get update

用來取得遠端更新伺服器的套件檔案清單。

1
$ sudo apt-get upgrade

自動找出所有有新版的軟體套件並逐一升級。

1
$ sudo apt-get install docker.io

下載docker

1
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

下載docker-compose(用來定義容器之間的關係與容器啟動的順序)

1
$ sudo chmod +x /usr/local/bin/docker-compose

將剛剛下載的docker-compose的加上執行的權限

1
$ sudo mkdir -p /data/influxdb /data/grafana

新增資料夾,用來存在grafana與inlfuxdb的資料(避免容器重啟後即消失)

1
$ sudo chmod 777 /data/grafana /data/influxdb

將資料夾權限開到最大(不安全的做法,如可以的話請使用安全的權限寫入,如這邊無法寫入的話,容器將會因為啟動的時候要將資料寫入對應資料夾而失敗造成無限重啟)

1
$ sudo vim docker-compose.yml

請注意將你剛剛下載下載的json金鑰檔案放置在/data/grafana底下,因為容器內的路徑對應到外部的data/grafana資料夾下,因此丟到此路徑就可以讓容器讀取金鑰

編寫docker-compose的檔案

這樣一來就能讓grafana的服務存取金鑰內容後可以去跟storage做存取圖片的動作權限了

docker-compose內容如下…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: "3"
services:

influxdb:
image: influxdb
container_name: influxdb
ports:
- "8086:8086"
restart: always
volumes:
- /data/influxdb:/var/lib/influxdb
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "80:3000"
restart: always
networks:
- monitor
volumes:
- /data/grafana:/var/lib/grafana
environment:
- GF_SERVER_ROOT_URL=http://grafana.costworlds.com
- GF_AUTH_DISABLE_LOGIN_FORM=false
- GF_AUTH_GOOGLE_ENABLED=true
- GF_AUTH_GOOGLE_CLIENT_ID=957269883000-82e4758ih5a74u9jj7rldc427lg67sfl.apps.googleusercontent.com
- GF_AUTH_GOOGLE_CLIENT_SECRET=A1dclGMsDOXepyv6oXhAfpMu
- GF_AUTH_GOOGLE_ALLOWED_DOMAINS=gosmio.biz
- GF_AUTH_GOOGLE_ALLOW_SIGN_UP=true
- GF_EXTERNAL_IMAGE_STORAGE_PROVIDER=gcs
- GF_EXTERNAL_IMAGE_STORAGE_S3_BUCKET_URL=https://s3-ap-southeast-1.amazonaws.com/gt-to3
- GF_EXTERNAL_IMAGE_STORAGE_S3_ACCESS_KEY=AKIAIVBWSCYVD45MHWHQ
- GF_EXTERNAL_IMAGE_STORAGE_S3_SECRET_KEY=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


networks:
monitor:

記得docker-compose是有縮排的,因此服務與環境變數之間的空白要注意否有對齊

再來準備安裝資料收集器:Telegraf

1
$ wget https://dl.influxdata.com/telegraf/releases/telegraf_1.9.5-1_amd64.deb

下載Telegraf的安裝包

1
$ sudo dpkg -i telegraf_1.9.5-1_amd64.deb

解壓縮並安裝

1
$ vim /etc/telegraf/telegraf.conf

修改設定檔
將config內的設定檔照以下的資訊設定完成

logfile = “/var/log/telegraf/telegraf.log”

urls = [“http://127.0.0.1:8086"]

database = “telegraf”

logfile:主要是將telegraf的log檔案指定在特定路徑下
urls:指定要telegraf將收集的資料丟往哪一個資料庫存放
database:指定在丟資料時要存放進哪一個資料庫
儲存好了之後重啟服務 & 確認服務Running

1
$ service telegraf restart
1
$ service telegraf status

Dashboard & Metric & Alert 配置

首先先開啟瀏覽器輸入剛剛你設定grafana的前台網址,然後會看到類似的登入畫面

這邊要注意的是因為在docker-compose把環境變數的- GF_AUTH_DISABLE_LOGIN_FORM設定false

所以還是會出現同帳號密碼的輸入畫面出現,如果不希望的話可以先用google登出入後再使用admin帳號進去將google的帳號權限拉升至admin管理者,再將變數修改為true後重啟docker-compose

預設帳號是admin / amdin

第一步驟是新增data source,也就是把Grafana新增資料的讀取來源Influxdb

第二步驟填寫Influxdb的連線資訊後儲存
URL:http://influxdb:8086(這邊要注意的是一定要寫influxdb唷,容器只互相認得容器名稱)
Database:Telegraf

設定要抓取定特的值來視覺化,telegraf預設上已經有最基本的系統監控(CPU、記憶體、硬碟等)
因此這邊再queries to選擇data sourece,下方則是選擇此data source內的監控資料
下圖選擇cpu的監控值來顯示

之後我們來設定Alerting Channel讓Grafana發出告警到Slack並夾帶告警截圖

Slack Setting的部份需要個人去申請Slack的帳號後新開自己的Workplace(工作群組)後前往slack的app Directory應用程序去申請Incoming WebHooks的URL在這邊填上
網址:https://slack.com/apps

再來開始設定Metric的Alert的告警水位與發送告警到Slack的頻道

TEST

測試上述設定與安裝與配置都是成功的,成功會有告警的截圖傳送到Slack的頻道內
將水位調整成會出發告警之後查看剛剛新創立的slack頻道是否有出現Grafana告警的截圖與incoming webhook的告警通知