首先,最近再找能跑的 prometheus 的 docker-compose 檔案
快速建置流程,體驗裡面介面功能
快速實例
使用 GIT 下載 Kev1nChan/docker-prometheus: 使用Docker-compose部署Grafana+Prometheus
1
|
git clone https://github.com/Kev1nChan/docker-prometheus.git
|
我找到一個 Github 實例,可以馬上 docker-compose 吃到 Node Exporter 設備
其他 Project 都不能順利執行…
可以先把grafana 版號拿掉,裝最新版
git clone 下來
直接執行 docker-compose up -d
這邊docker-compose.yml
可以window 可以把 $PWD
改成.
powershell 才不會執行有問題
使用前请修改Grafana配置文件中密码,当前admin密码为qwe123!@#
設定 Grafana
新增 DataSource ,選擇 Prometheus
注意!!這邊由於是裝在 docker 裡面
我們這邊 URL 路徑是要輸入 prometheus:9090
匯入 Dashboard
很多教學,都沒有說要怎麼匯入別人寫好的 Dashboard
剛用這個新手應該都不會用吧
https://grafana.com/grafana/dashboards/8919
這個網站可以找人加分享好用的 Dashboard
這邊 import 進去來後,記得要選 datasource
這邊 Grafana 就設定完了
信箱設定
假設不想用真實信箱,可以用我之前fake stmp email 工具來設定
maildev試用筆記 | 程式狂想筆記
安裝maildev
1
|
docker run -d -p 1080:80 -p 1025:25 djfarrelly/maildev
|
1
|
vim alertmanager/config.yml
|
設定 stmp 1025, tls = false ,帳號、密碼可以不用理(畢竟是假的…)
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
|
global:
#163服务器
smtp_smarthost: '192.168.1.113:1025'
#发邮件的邮箱
smtp_from: 'your-email@foxmail.com'
#发邮件的邮箱用户名,也就是你的邮箱
smtp_auth_username: 'your-email@foxmail.com'
#发邮件的邮箱密码
smtp_auth_password: 'your-password'
#进行tls验证
smtp_require_tls: false
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 10m
receiver: live-monitoring
receivers:
- name: 'live-monitoring'
#收邮件的邮箱
email_configs:
- to: 'your-email@163.com'
|
讓你的 alertmanager 發送 mail
只需要讓你 node_exporter 結束程式就可以了
1
|
docker-compose stop node_exporter
|
執行完,稍後兩分鐘…(因為設定是兩分鐘),可以看到mail 會發送到maildev
話說 granafan 也有通知功能
discord 通知
GitHub - benjojo/alertmanager-discord: Take your alertmanager alerts, into discord
相關建置我後面文章有講到
line 通知
[教學] 如何使用 Line Notify 對群組進行通知 | 辛比誌
設定 line notify ,不需要服務登入
https://stackoverflow.com/questions/53372935/how-can-i-config-prometheus-alert-with-line-notify
<–這個連結不能使用
TOKEN記得要留著,否則之後不會找到
記得要邀請 line notify 到聊天裡面去
否則不會收到
此帳號尚未被邀請至已連動「測試bot」的群組中。請將此帳號邀請至「去」中。
架設 line notify gateway
官方沒推薦使用哪一個line notify
可能國外很少用
這篇有找到line-notify-gateway (2). ใน blog… | by Nont Banditwong | Medium
雖然看不懂裡面文章
但從指令可以看出東西
1
|
docker run -d -p 18081:18081 -e line-notify.personal-access-token='{換成你的TOKEN}' --name line-notify-gateway nontster/line-notify-gateway
|
1
2
3
4
5
|
receivers:
- name: line-noti
webhook_configs:
- url: http://192.168.73.161:18081/v1/alertmanager/payload
send_resolved: true
|
測試alertmanager 訊息
1
|
curl -H "Content-type: application/json" -X POST -d '{"recei"status":"firing","alerts":[{"status":"firing","labels":{"alertname":"InstanceDown","instance":"director1:9100","job":"ipvs","severity":"critical"},"annotations":{"description":"director1:9100 of job ipvs has been down for more than 5 minutes.","summary":"Instance director1:9100 down"},"startsAt":"2019-06-09T09:12:56.795099989Z","endsAt":"0001-01-01T00:00:00Z","generatorURL":"http://72426f0cd030:9090/graph?g0.expr=up+%3D%3D+0&g0.tab=1"}],"groupLabels":{"alertname":"InstanceDown"},"commonLabels":{"alertname":"InstanceDown","instance":"director1:9100","job":"ipvs","severity":"critical"},"commonAnnotations":{"description":"director1:9100 of job ipvs has been down for more than 5 minutes.","summary":"Instance director1:9100 down"},"externalURL":"http://alertmanager:9093","version":"4","groupKey":"{}:{alertname=\"InstanceDown\"}"}' http://localhost:18081/v1/alertmanager/payload
|
測試結果可進行運行
監控
裡面有內建設定 exporter 服務沒偵測到兩分鐘會發送通知
除了這些外,還有 traefik exporter ,blackbox exporter, 各種 exporter等等
Exporters and integrations | Prometheus
接下來還有很長一段要學習的路
使用 vagrant 快速部屬
因為我沒有做 docker-compose 安裝,特別做個快速做出環境。首先必須安裝 vagrant + virtualbox,這邊網路上還滿多的,可以參照網路設定。
安裝 vagrant + virtualbox
設定 Vagrantfile 執行 vagrant
建立 Vagrantfile
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
40
41
42
43
44
45
46
47
48
49
50
51
|
Vagrant.configure("2") do |config|
# 設定 vm image, 版本,hostname,名稱
config.vm.box = "bento/ubuntu-18.04"
config.vm.box_version ='201912.14.0'
config.vm.hostname = 'dev'
config.vm.define vm_name = 'dev'
# provision (Shell Script)
config.vm.provision "shell", privileged: false, inline: <<-SHELL
set -e -x -u
export DEBIAN_FRONTEND=noninteractive
#change the source.list
sudo apt-get update
sudo apt-get install -y vim git cmake build-essential bash-completion
# Install Docker
export DOCKER_VERSION="5:19.03.5~3-0~ubuntu-bionic"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce=${DOCKER_VERSION}
sudo usermod -aG docker $USER
#Disable swap
#https://github.com/kubernetes/kubernetes/issues/53533
sudo swapoff -a && sudo sysctl -w vm.swappiness=0
sudo sed '/vagrant--vg-swap/d' -i /etc/fstab
git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
bash ~/.bash_it/install.sh -s
# install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
git clone https://github.com/Kev1nChan/docker-prometheus.git
cd docker-prometheus
sudo /usr/local/bin/docker-compose up -d
SHELL
# 設定IP
config.vm.network :private_network, ip: "172.17.8.111"
#設定硬體
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--cpus", 2]
v.customize ["modifyvm", :id, "--memory", 4096]
v.customize ['modifyvm', :id, '--nicpromisc1', 'allow-all']
end
end
|
1
2
|
# 執行 vagrant
vagrant up
|
開瀏覽器
grafana: http://172.17.8.111:3000
帳號/密碼: admin/qwe123!@#
prometheus: http://172.17.8.111:9090
node_exporter: http://172.17.8.111:9100
cadvisor: http://172.17.8.111:8080
alertmanager: http://172.17.8.111:9093
這邊就重複上面教的流程
-
進入設定新增 Prometheus
-
新增 Prometheus 設定
網址可以設定IP或hostname,這邊跟docker網路連線有關係,所以不解釋太多。
- 新增 dashboard
大概就這樣