Prometheus、node Exporters饥脑、grafana 的安裝與使用

端口分配說明:

node-exporter 9100
alertmanager 9093
prometheus 9090
Grafana 3000

1.首先安裝docker:

安裝教程如下:
http://www.reibang.com/p/e73ccf24c04d

安裝完成后, 使用 docker 分別拉取 node-exporter,prometheus,grafana最新版鏡像

sudo docker pull prom/node-exporter
sudo docker pull prom/prometheus
sudo docker pull grafana/grafana
sudo docker pull prom/alertmanager

2.運(yùn)行 node-exporter

指定端口為9100 , --net=host言疗,這樣該容器就會(huì)使用主機(jī)的網(wǎng)卡,而不會(huì)生成自己的虛擬網(wǎng)卡, Prometheus Server 可以直接與 Node Exporter 通信

sudo docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net=host \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

輸入 docker ps 查看 node-exporter 已經(jīng)載運(yùn)行了


image.png

打開瀏覽器 http://localhost:9100/metrics 查看到 metrics 輸出

image.png

3.運(yùn)行 Prometheus Server

在 home 目錄下新建文件夾來存放配置文件

cd /home/你的個(gè)人文件夾 (非root權(quán)限的)
mkdir prometheus
cd prometheus

新建 prometheus.yml 配置文件 :

# Prometheus全局配置項(xiàng)
global:
  scrape_interval:     15s # 設(shè)定抓取數(shù)據(jù)的周期晴圾,默認(rèn)為1min
  evaluation_interval: 15s # 設(shè)定更新rules文件的周期,默認(rèn)為1min
  scrape_timeout: 15s # 設(shè)定抓取數(shù)據(jù)的超時(shí)時(shí)間噪奄,默認(rèn)為10s
  external_labels: # 額外的屬性死姚,會(huì)添加到拉取得數(shù)據(jù)并存到數(shù)據(jù)庫中
   monitor: 'codelab_monitor'


# Alertmanager配置
alerting:
 alertmanagers:
 - static_configs:
   - targets: ["localhost:9093"] # 設(shè)定alertmanager和prometheus交互的接口,即alertmanager監(jiān)聽的ip地址和端口
     
# rule配置勤篮,首次讀取默認(rèn)加載都毒,之后根據(jù)evaluation_interval設(shè)定的周期加載
rule_files:
 - "alertmanager_rules.yml"
 - "prometheus_rules.yml"

# scape配置
scrape_configs:
- job_name: 'prometheus' # job_name默認(rèn)寫入timeseries的labels中,可以用于查詢使用
  scrape_interval: 15s # 抓取周期碰缔,默認(rèn)采用global配置
  static_configs: # 靜態(tài)配置
  - targets: ['localhost:9100'] # prometheus所要抓取數(shù)據(jù)的地址账劲,即instance實(shí)例項(xiàng)

- job_name: 'example-random' #個(gè)人測(cè)試用接口
  static_configs:
  - targets: ['localhost:8080']

新建報(bào)警規(guī)則文件 alertmanager_rules.yml和 prometheus_rules.yml
alertmanager_rules.yml

groups:
 - name: test-rules
   rules:
   - alert: InstanceDown # 告警名稱
     expr: up == 0 # 告警的判定條件,參考Prometheus高級(jí)查詢來設(shè)定
     for: 2m # 滿足告警條件持續(xù)時(shí)間多久后,才會(huì)發(fā)送告警
     labels: #標(biāo)簽項(xiàng)
      team: node
     annotations: # 解析項(xiàng)瀑焦,詳細(xì)解釋告警信息
      summary: "{{$labels.instance}}: has been down"
      description: "{{$labels.instance}}: job {{$labels.job}} has been down "
      value: {{$value}}

prometheus_rules.yml

groups:
- name: example   #報(bào)警規(guī)則的名字
  rules:

  # Alert for any instance that is unreachable for >5 minutes.
  - alert: InstanceDown     #檢測(cè)job的狀態(tài)腌且,持續(xù)1分鐘metrices不能訪問會(huì)發(fā)給altermanager進(jìn)行報(bào)警
    expr: up == 0
    for: 1m    #持續(xù)時(shí)間
    labels:
      serverity: page
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."


  - alert: "it's has problem"  #報(bào)警的名字
    expr: "test_tomcat{exported_instance="uat",exported_job="uat-app-status",host="test",instance="uat",job="uat-apps-status"} -  test_tomcat{exported_instance="uat",exported_job="uat-app-status",host="test",instance="uat",job="uat-apps-status"} offset 1w > 5"   # 這個(gè)意思是監(jiān)控該表達(dá)式查詢出來的值與一周前的值進(jìn)行比較,大于5且持續(xù)10m鐘就發(fā)送給altermanager進(jìn)行報(bào)警
    for: 1m  #持續(xù)時(shí)間
    labels:
      serverity: warning
    annotations:
      summary: "{{ $labels.type }}趨勢(shì)增高"
      description: "機(jī)器:{{ $labels.host }} tomcat_id:{{ $labels.id }} 類型:{{ $labels.type }} 與一周前的差值大于5,當(dāng)前的差值為:{{ $value }}"    #自定義的報(bào)警內(nèi)容

運(yùn)行普羅米休斯:

sudo docker run -d -p 9090:9090 --name prometheus --net=host -v /home/你的文件夾/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

打開 http://localhost:9090/graph

image.png

運(yùn)行成功!

3.運(yùn)行 Alertmanager :

安裝golang:

sudo apt-get install golang-go

關(guān)于Alertmanager 查看: http://www.reibang.com/p/239b145e2acc
在當(dāng)前目錄下新建 alertmanager 存放Alertmanager的配置文件:

mkdir alertmanager
cd alertmanager
新建 alertmanager.yml 配置文件:

郵箱配置改為自己的.

# 全局配置項(xiàng)
global: 
  resolve_timeout: 5m #處理超時(shí)時(shí)間榛瓮,默認(rèn)為5min
  smtp_smarthost: 'smtp.sina.com:25' # 郵箱smtp服務(wù)器代理
  smtp_from: '******@sina.com' # 發(fā)送郵箱名稱
  smtp_auth_username: '******@sina.com' # 郵箱名稱
  smtp_auth_password: '******' # 郵箱密碼或授權(quán)碼
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' # 企業(yè)微信地址


# 定義模板信心
templates:
  - 'template/*.tmpl'

# 定義路由樹信息
route:
  group_by: ['alertname'] # 報(bào)警分組依據(jù)
  group_wait: 10s # 最初即第一次等待多久時(shí)間發(fā)送一組警報(bào)的通知
  group_interval: 10s # 在發(fā)送新警報(bào)前的等待時(shí)間
  repeat_interval: 1m # 發(fā)送重復(fù)警報(bào)的周期 對(duì)于email配置中铺董,此項(xiàng)不可以設(shè)置過低,否則將會(huì)由于郵件發(fā)送太多頻繁榆芦,被smtp服務(wù)器拒絕
  receiver: 'email' # 發(fā)送警報(bào)的接收者的名稱柄粹,以下receivers name的名稱

# 定義警報(bào)接收者信息
receivers:
  - name: 'email' # 警報(bào)
    email_configs: # 郵箱配置
    - to: '******@163.com'  # 接收警報(bào)的email配置
      html: '{{ template "test.html" . }}' # 設(shè)定郵箱的內(nèi)容模板
      headers: { Subject: "[WARN] 報(bào)警郵件"} # 接收郵件的標(biāo)題
    # 第三方開發(fā)配置
     #webhook_configs: # webhook配置
    #- url: 'http://127.0.0.1:5001'
    #send_resolved: true
    #wechat_configs: # 企業(yè)微信報(bào)警配置
    #- send_resolved: true
     #to_party: '1' # 接收組的id
      #agent_id: '1000002' # (企業(yè)微信-->自定應(yīng)用-->AgentId)
      #corp_id: '******' # 企業(yè)信息(我的企業(yè)-->CorpId[在底部])
      #api_secret: '******' # 企業(yè)微信(企業(yè)微信-->自定應(yīng)用-->Secret)
      #message: '{{ template "test_wechat.html" . }}' # 發(fā)送消息模板的設(shè)定
# 一個(gè)inhibition規(guī)則是在與另一組匹配器匹配的警報(bào)存在的條件下,使匹配一組匹配器的警報(bào)失效的規(guī)則匆绣。兩個(gè)警報(bào)必須具有一組相同的標(biāo)簽驻右。 
inhibit_rules: 
  - source_match: 
     severity: 'critical' 
    target_match: 
     severity: 'warning' 
    equal: ['alertname', 'dev', 'instance']

注:
1)repeat_interval配置項(xiàng),對(duì)于email來說崎淳,此項(xiàng)不可以設(shè)置過低堪夭,否則將會(huì)由于郵件發(fā)送太多頻繁,被smtp服務(wù)器拒絕

.tmpl模板的配置:

新建template文件夾存放模板:

mkdir template
cd template

新建發(fā)送郵件模板 test.tmpl:

{{ define "test.html" }}
<table border="1">
        <tr>
                <td>報(bào)警項(xiàng)</td>
                <td>實(shí)例</td>
                <td>報(bào)警閥值</td>
                <td>開始時(shí)間</td>
        </tr>
        {{ range $i, $alert := .Alerts }}
                <tr>
                        <td>{{ index $alert.Labels "alertname" }}</td>
                        <td>{{ index $alert.Labels "instance" }}</td>
                        <td>{{ index $alert.Annotations "value" }}</td>
                        <td>{{ $alert.StartsAt }}</td>
                </tr>
        {{ end }}
</table>
{{ end }}

注:
上述Labels項(xiàng)拣凹,表示prometheus里面的可選label項(xiàng)森爽。annotation項(xiàng)表示報(bào)警規(guī)則中定義的annotation項(xiàng)的內(nèi)容。

告警信息生命周期的3中狀態(tài)
1)inactive:表示當(dāng)前報(bào)警信息即不是firing狀態(tài)也不是pending狀態(tài)
2)pending:表示在設(shè)置的閾值時(shí)間范圍內(nèi)被激活的
3)firing:表示超過設(shè)置的閾值時(shí)間被激活的

運(yùn)行 alertmanager:

sudo docker run -d -p 9093:9093 --net=host -v /home/你的文件夾/prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/config.yml --name alertmanager prom/alertmanager

打開 http://localhost:9093/#/alerts

image.png

運(yùn)行成功!

4.運(yùn)行 Grafana

sudo docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
--net=host \
grafana/grafana

-e "GF_SECURITY_ADMIN_PASSWORD=secret 指定了 Grafana admin用戶密碼 admin嚣镜。

打開 http://localhost:3000
輸入用戶名 admin 密碼 admin

登錄后爬迟,Grafana 將引導(dǎo)我們配置 Data Source。

image.png

添加一個(gè)數(shù)據(jù)源菊匿,將Grafana和Prometheus關(guān)聯(lián)起來


image.png

image.png

回到首頁,接下來需要添加一個(gè) dashboard


image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末付呕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跌捆,更是在濱河造成了極大的恐慌徽职,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佩厚,死亡現(xiàn)場(chǎng)離奇詭異姆钉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抄瓦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門潮瓶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闺鲸,你說我怎么就攤上這事筋讨。” “怎么了摸恍?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我立镶,道長(zhǎng)壁袄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任媚媒,我火速辦了婚禮嗜逻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缭召。我一直安慰自己栈顷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布嵌巷。 她就那樣靜靜地躺著萄凤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搪哪。 梳的紋絲不亂的頭發(fā)上靡努,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音晓折,去河邊找鬼惑朦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛漓概,可吹牛的內(nèi)容都是我干的漾月。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胃珍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼梁肿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起堂鲜,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤栈雳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缔莲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哥纫,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年痴奏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛀骇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡读拆,死狀恐怖擅憔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檐晕,我是刑警寧澤暑诸,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布蚌讼,位于F島的核電站,受9級(jí)特大地震影響个榕,放射性物質(zhì)發(fā)生泄漏篡石。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一西采、第九天 我趴在偏房一處隱蔽的房頂上張望凰萨。 院中可真熱鬧,春花似錦械馆、人聲如沸胖眷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珊搀。三九已至,卻和暖如春仿畸,著一層夾襖步出監(jiān)牢的瞬間食棕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工错沽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留簿晓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓千埃,卻偏偏與公主長(zhǎng)得像憔儿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子放可,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容