真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

博文大綱:

為順慶等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及順慶網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、順慶網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

  • 一、部署Weave-Scope
  • 二、開始配置
    • 1、運(yùn)行Node Server容器
    • 2、運(yùn)行cAdvisor容器
    • 3、docker01上運(yùn)行Prometheus server容器
    • 4、docker01上運(yùn)行g(shù)rafana容器
    • 5、設(shè)置Prometheus告警

Prometheus是一個(gè)系統(tǒng)和服務(wù)監(jiān)視系統(tǒng)。它以給定的時(shí)間間隔從已配置的目標(biāo)收集指標(biāo),評(píng)估規(guī)則表達(dá)式,顯示結(jié)果,并在發(fā)現(xiàn)某些情況為真時(shí)觸發(fā)警報(bào)。

與其他監(jiān)視系統(tǒng)相比,Prometheus的主要區(qū)別特征是:

  • 一個(gè)多維數(shù)據(jù)模型(時(shí)間序列由指標(biāo)名稱定義和設(shè)置鍵/值尺寸)
  • 一個(gè)靈活的查詢語言來利用這一維度
  • 不依賴于分布式存儲(chǔ);單服務(wù)器節(jié)點(diǎn)是自治的
  • 時(shí)間序列收集通過HTTP 上的拉模型進(jìn)行
  • 通過中間網(wǎng)關(guān)支持推送時(shí)間序列
  • 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標(biāo)
  • 多種圖形和儀表板支持模式
  • 支持分層和水平聯(lián)合

其官方給出的架構(gòu)示意圖如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

部署該服務(wù),包括四個(gè)組件:Prometheus Server、Node Exporter、cAdvrisor、Grafana。

各個(gè)組件的作用如下:

  • Prometheus Server:Prometheus服務(wù)的主服務(wù)器 ;
  • Node Exporter:收集Host硬件和操作系統(tǒng)的信息;
  • cAdvrisor:負(fù)責(zé)收集Host上運(yùn)行的容器信息;
  • Grafana:用來展示Prometheus監(jiān)控操作界面(給我們提供一個(gè)友好的web界面)。

以上四個(gè)組件的所有介紹,還請(qǐng)移步到Github官網(wǎng),直接搜索相應(yīng)的docker鏡像名稱(在下面的部署過程中,每運(yùn)行一個(gè)服務(wù)的容器,都會(huì)指定其鏡像名稱,可以參考命令中的鏡像名稱進(jìn)行搜索),即可找到到關(guān)于組件的詳細(xì)介紹,這里就不多介紹了。

一、環(huán)境準(zhǔn)備

我這里的環(huán)境如下:
基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

二、開始配置

1、運(yùn)行Node Server容器

該組件需要運(yùn)行在所有需要監(jiān)控的主機(jī)上,也就是,我這里三臺(tái)服務(wù)器都需要執(zhí)行下面的命令,運(yùn)行此容器組件。

[root@docker01 ~]# docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host --restart=always prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
#基于“prom/node-exporter”鏡像運(yùn)行容器,可以去github官網(wǎng)搜索該鏡像,以便了解其主要功能
#注:每臺(tái)需要被監(jiān)控的主機(jī)都需要執(zhí)行上述命令以便運(yùn)行容器,以便收集主機(jī)信息

每臺(tái)服務(wù)器運(yùn)行上述命令后,瀏覽器訪問docker服務(wù)器的IP地址+9100端口,能夠看到以下界面,即說明容器運(yùn)行沒有問題。這些內(nèi)容看不懂沒關(guān)系,這些信息本來就不是給我們看的,我們看的是最后給我們提供的web界面??吹降木W(wǎng)頁如下:
基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

最好訪問一下所有運(yùn)行上述容器的服務(wù)器的9100端口,確??梢钥吹缴厦娴捻撁?。

2、運(yùn)行cAdvisor容器

cAdvrisor是負(fù)責(zé)收集Host上運(yùn)行的容器信息的,同樣,在所有需要監(jiān)控的服務(wù)器上執(zhí)行下面的命令運(yùn)行cAdvisor容器即可:

[root@docker01 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor

每臺(tái)服務(wù)器運(yùn)行上述命令后,瀏覽器訪問服務(wù)器的IP地址+8080端口,即可看到如下頁面:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

同樣,最好訪問每一臺(tái)服務(wù)器的8080端口,以便確認(rèn)成功。

3、docker01上運(yùn)行Prometheus server容器

Prometheus Server是主服務(wù)器,所以只需要在其中一臺(tái)運(yùn)行此容器即可。這里我在docker01服務(wù)器上運(yùn)行:

[root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
#先基于prom/prometheus鏡像隨便運(yùn)行一個(gè)容器,我們需要將其主配置文件復(fù)制一份進(jìn)行更改
[root@docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.yml /root/
#復(fù)制prometheus容器中的主配置文件到宿主機(jī)本地
[root@docker01 ~]# docker rm -f prometheus     #刪除剛剛隨便創(chuàng)建的容器即可
[root@docker01 ~]# vim prometheus.yml     #打開復(fù)制出來的配置文件,直接跳轉(zhuǎn)到配置文件的最后一行
                  .......................#省略部分內(nèi)容
#修改如下:
- targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.20.7:9100','192.168.20.7:8080','192.168.20.8:9100','192.168.20.8:8080']
#上述內(nèi)容看似雜亂無章,其實(shí)無非就是指定了本機(jī)的9090、8080、9100這三個(gè)端口,
#還增加了另外兩臺(tái)被監(jiān)控的服務(wù)器的8080端口和9100端口
#若需要監(jiān)控更多的服務(wù)器,只需依次在上面指定添加即可,當(dāng)然了,被監(jiān)控端需要運(yùn)行前面的兩個(gè)容器
#修改完成后,保存退出即可
[root@docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus
#執(zhí)行上述命令,運(yùn)行新的prometheus容器,并將剛剛修改的主配置文件掛載到容器中的指定位置
#以后若要修改主配置文件,則直接修改本地的即可。
#掛載主配置文件后,本地的和容器內(nèi)的相當(dāng)于同一份,在本地修改內(nèi)容的話,會(huì)同步到容器中

客戶端訪問docker01的9090端口,會(huì)看到以下頁面:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

然后單擊上方的“status”,然后點(diǎn)擊“Targets”,如下圖所示:
基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

看到下面的頁面,則表示至此的所有操作都沒有問題:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

4、docker01上運(yùn)行g(shù)rafana容器

此容器是為我們提供一個(gè)友好的web展示頁面。

[root@docker01 ~]# mkdir grafana-storage
[root@docker01 ~]# chmod 777 -R grafana-storage/
[root@docker01 ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
#上述命令中的“-e”選項(xiàng)是為了設(shè)置默認(rèn)的登錄用戶admin,密碼為“123.com”。
#如果啟動(dòng)容器的過程中,提示iptables等相關(guān)的錯(cuò)誤信息,
#則需要執(zhí)行命令systemctl restart docker,重啟docker服務(wù),然后重新運(yùn)行容器
#但是需要注意,若運(yùn)行容器時(shí)沒有增加“--restart=always”選項(xiàng)的話,
#那么在重啟docker服務(wù)后,還需將所有容器手動(dòng)重啟。
#重啟所有容器命令“docker ps -a -q | xargs docker start”

容器運(yùn)行后,即可使用客戶端訪問docker01IP地址+3000端口,可以看到以下頁面:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

在上面的登錄頁面,輸入用戶名“admin”,密碼就是我們運(yùn)行時(shí)指定的密碼,我這里是“123.com”。輸入后登錄,會(huì)看到以下界面,然后單擊添加數(shù)據(jù)源:
基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

看到下面的界面,找到Prometheus,并點(diǎn)擊“select”選擇它:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

根據(jù)下圖給的提示進(jìn)行修改配置:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

上述配置完成后,我們就需要配置它以什么樣的形式來給我們展示了,可以自定義,但是很麻煩,我選擇直接去grafana官網(wǎng)尋找現(xiàn)成的模板。

登錄grafana官網(wǎng),點(diǎn)擊下面的選項(xiàng):

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

看圖操作:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

將這些模板導(dǎo)入到我們grafana的web界面有兩種方式:

方式1:

1)進(jìn)入模板后,點(diǎn)擊“Download JSON”,以便下載:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

2)下載后,回到grafana界面,點(diǎn)擊如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

3)單擊“Upload.json file”,然后上傳我們?cè)趃rafana官網(wǎng)下載的模板:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

4)上傳后,請(qǐng)看下圖進(jìn)行操作:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

5)至此,即可看到下面的監(jiān)控頁面,說明導(dǎo)入成功了:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

但是注意看的話,會(huì)發(fā)現(xiàn)這個(gè)模板有些信息都檢測(cè)不到,所以這里只是為了展示這第一種導(dǎo)入模板的方式,我更推薦使用方式2進(jìn)行導(dǎo)入。

方式2

1)在進(jìn)入官網(wǎng)提供的模板后,我們需要記錄其ID號(hào),如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

2)然后回到grafana的web界面,同樣點(diǎn)擊如下,進(jìn)行導(dǎo)入操作:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

3)在下面的紅框中輸入我們記錄的ID號(hào)即可:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

4)接下來的操作和方式1中的一樣,如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

5)導(dǎo)入此模板后,會(huì)看到該模板給我們提供的界面,如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

至此,web界面的監(jiān)控就部署完成了。

5、設(shè)置Prometheus告警

Prometheus的告警方式有好幾種方式,郵箱、釘釘、微信等,我這里選擇郵箱的告警方式。

1)docker01服務(wù)器上運(yùn)行alertmanager容器

[root@docker01 ~]# docker run --name alertmanager -d -p 9093:9093 prom/alertmanager
#先簡單運(yùn)行一個(gè)容器
[root@docker01 ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root
#將容器中的配置文件復(fù)制到本地
[root@docker01 ~]# docker rm -f alertmanager   #刪除之前隨便運(yùn)行的容器
[root@docker01 ~]# vim alertmanager.yml    #編輯復(fù)制出來的配置文件
#配置文件中可以分為以下幾組:
#global:全局配置。設(shè)置報(bào)警策略,報(bào)警渠道等;
#route:分發(fā)策略;
#receivers:接收者,指定誰來接收你發(fā)送的這些信息;
#inhibit_rules:抑制策略。當(dāng)存在于另一組匹配的警報(bào),抑制規(guī)則將禁用于一組匹配的警報(bào)。

我這里更改后的配置文件如下:

[root@docker01 ~]# vim alertmanager.yml    #編輯復(fù)制出來的配置文件
#將以下所有的郵箱賬號(hào)及auth_password更改為自己的賬戶即可
global:
  resolve_timeout: 5m
  smtp_from: '916551516@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '916551516@qq.com'
  smtp_auth_password: 'abdgwyaxickabccb0'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '916551516@qq.com'
    send_resolved: true                 #這行的作用是,當(dāng)容器恢復(fù)正常后,也會(huì)發(fā)送一份郵件
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
#更改完成后,保存退出即可
[root@docker01 ~]# docker run -d --name alertmanger -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml --restart=always prom/alertmanager
#運(yùn)行新的alertmanager容器,并掛載更改后的配置文件
#如果配置文件有錯(cuò)誤,那么這個(gè)容器是運(yùn)行不了的。

2)設(shè)置alertmanager報(bào)警規(guī)則

[root@docker01 ~]# mkdir -p prometheus/rules
[root@docker01 ~]# cd prometheus/rules/
[root@docker01 rules]# vim node-up.rules     #編輯規(guī)則如下
groups:
- name: node-up     #設(shè)置報(bào)警的名稱
  rules:
  - alert: node-up
    expr: up{job="prometheus"} == 0      #該job必須和Prometheus的配置文件中job_name完全一致
    for: 15s
    labels:
      severity: 1           #一級(jí)警告
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止運(yùn)行超過 15s!
"
#定義完成后,保存退出即可。

若想自己編寫報(bào)警規(guī)則,可以參考它的官方文檔,我這里的報(bào)警規(guī)則是有些問題的,但是可以收到它的報(bào)警信息

3)關(guān)聯(lián)到Prometheus

[root@docker01 ~]# vim prometheus.yml      #更改以下內(nèi)容
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.20.6:9093       #將此行的注釋去掉,改為alertmanager容器的IP+端口
rule_files:
  - "/usr/local/prometheus/rules/*.rules"   #注意,這個(gè)路徑是容器內(nèi)的路徑
#必須格外注意配置文件的格式,注意縮進(jìn)。更改完成后,保存退出即可。

為了防止格式錯(cuò)誤,我這里附一個(gè)配置文件的截圖:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

[root@docker01 ~]# docker rm -f prometheus    #刪除此容器
[root@docker01 ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules:/usr/local/prometheus/rules --name prometheus --net=host prom/prometheus
#重新運(yùn)行此容器,掛載新的文件
[root@docker01 ~]# docker logs prometheus     #若啟動(dòng)遇到錯(cuò)誤,可以查看容器的日志拍錯(cuò)

至此,如果Prometheus頁面中的target有down掉的容器,那么就會(huì)給你的郵箱發(fā)送報(bào)警信息。當(dāng)容器正常后,它還會(huì)給你反饋

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

我收到的報(bào)警郵件如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

4)設(shè)置報(bào)警信息模板

[root@docker01 ~]# cd prometheus/
[root@docker01 prometheus]# mkdir alertmanager-tmpl
[root@docker01 prometheus]# cd alertmanager-tmpl/
[root@docker01 alertmanager-tmpl]# vim email.tmpl    #編輯報(bào)警模板
{{ define "email.from" }}916551516@qq.com{{ end }}    #將此改為自己的郵箱
{{ define "email.to" }}916551516@qq.com{{ end }}     #改為自己的郵箱
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========
告警程序: prometheus_alert
告警級(jí)別: {{ .Labels.severity }} 級(jí)
告警類型: {{ .Labels.alertname }}
故障主機(jī): {{ .Labels.instance }}
告警主題: {{ .Annotations.summary }}
觸發(fā)時(shí)間: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
=========end==========
{{ end }} {{ end }} #更改完自己的郵箱即可保存退出 [root@docker01 ~]# cd [root@docker01 ~]# vim alertmanager.yml #編輯alertmanager配置文件,修改以下有注釋的行即可 global: resolve_timeout: 5m smtp_from: '916551516@qq.com' smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: '916551516@qq.com' smtp_auth_password: 'abdgwyaxickabccb0' smtp_require_tls: false smtp_hello: 'qq.com' templates: #添加此行 - '/etc/alertmanager-tmpl/*.tmpl' #添加此行 route: group_by: ['alertname'] group_wait: 5s group_interval: 5s repeat_interval: 5m receiver: 'email' receivers: - name: 'email' email_configs: - to: '{{ template "email.to" }}' #必須和{{ define "email.to" }}916551516@qq.com{{ end }} 中的對(duì)應(yīng) html: '{{ template "email.to.html" . }}' #必須和{{ define "email.to.html" }} 中的名字對(duì)應(yīng) send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] #修改完成后,保存退出 [root@docker01 ~]# docker rm -f alertmanger #刪除此容器 [root@docker01 ~]# docker run -d --name alertmanger -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /root/prometheus/alertmanager-tmpl:/etc/alertmanager-tmpl --restart=always prom/alertmanager #運(yùn)行一個(gè)新的容器 [root@docker01 ~]# docker ps #確定9093端口運(yùn)行映射正常 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9d718071d4d prom/alertmanager "/bin/alertmanager -…" 7 seconds ago Up 6 seconds 0.0.0.0:9093->9093/tcp alertmanger 1b1379e3e12a prom/prometheus "/bin/prometheus --c…" 11 minutes ago Up 11 minutes prometheus 65240a28e383 grafana/grafana "/run.sh" 2 hours ago Up 2 hours 0.0.0.0:3000->3000/tcp grafana 3bd83eb145e2 google/cadvisor "/usr/bin/cadvisor -…" 2 hours ago Up 2 hours cadvisor a57b77a33e79 prom/node-exporter "/bin/node_exporter …" 2 hours ago Up 2 hours eloquent_wescoff

至此,新的報(bào)警模板也生成了,如果以下容器有Down的,就會(huì)給你發(fā)送新的郵件,恢復(fù)正常后,也會(huì)發(fā)送郵件,同樣,郵件中的內(nèi)容格式是有誤的,但是你可以正常接收到報(bào)警信息,若想要更改其報(bào)警模板,可以參考github官方文檔

我郵箱收到的報(bào)警信息如下:

基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器

———————— 本文至此結(jié)束,感謝閱讀 ————————


網(wǎng)站標(biāo)題:基于docker容器部署Prometheus服務(wù)——云平臺(tái)監(jiān)控利器
網(wǎng)站網(wǎng)址:http://weahome.cn/article/pighjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部