應用類相關
1.監控應用是否可用
規則模板 :
up=${value}
規則描述:
監測應用是否可用
參數說明:
value : 0表示宕機 1 表示可用
具體應用
groups:
- name: example #報警規則組的名字
rules:
- alert: InstanceDown #檢測job的狀態,持續1分鐘metrices不能訪問會發給altermanager進行報警
expr: up == 0
for: 1m #持續時間 , 表示持續一分鐘獲取不到信息,則觸發報警
labels:
serverity: page # 自定義標籤
annotations:
summary: "Instance {{ $labels.instance }} down" # 自定義摘要
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes." # 自定義具體描述
本文理出的規則模板主要用於告警規則中的 “expr” 表達式使用。
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名稱
job : 應用名
2.接口請求異常(job,method,uri)
規則模板 :
http_server_requests_seconds_count{exception!="None",job="${app}",method="${method}",uri="${uri}"} > ${value}
規則描述 :
請求接口的異常信息不爲空, 使用的時候需要動態傳入 app , method ,uri , value 這四個參數,然後設置規則。
參數詳解:
tex app : 應用名 method : POST 或 GET uri : 接口地址 value : 檢測指標 ,取值爲 int整數
labels參數說明
env : 數據源(通常用於區分環境)
exception : 異常信息
instance : 實例名
job : 應用名
method : POST 或GET
status :http請求狀態 200爲成功
uri : 接口地址
3.接口請求異常(job,method,uri),正則表達式(job,uri)
規則模板:
http_server_requests_seconds_count{exception!="None",job=~"${app}",method="${method}",uri=~"${uri}"} > ${value}
規則描述 :
請求接口的異常信息不爲空, 使用的時候需要動態傳入 app , method ,uri , value 這四個參數 ,這四個參數中Job和uri可以爲正則表達式,然後設置規則。
參數解釋:
app : 應用名 , 可使用正則表達式,例: .*MSG.*
method : POST 或 GET ,需大寫
uri : 接口地址 , 可使用正則表達式
value : 檢測指標 ,取值爲 int整數
labels參數說明
env : 數據源(通常用於區分環境)
exception : 異常信息
instance : 實例名
job : 應用名
method : POST 或GET
status :http請求狀態 200爲成功
uri : 接口地址
4.應用CPU佔比
規則模板:
process_cpu_usage{job="${app}"} * 100 > ${value}
規則描述 :
監測應用使用的百分比 , 此處僅需傳入 app 名稱,就可以監測某個應用了
參數解釋 :
app : 應用名
value : 檢測指標, 百分比
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名稱
job : 應用名
5.Hystrix接口調用熔斷次數監控
規則模板:
increase(hystrix_errors_total{job="${app}"}[${timeRange}]) > ${value}
規則描述 :
監測在指定的時間範圍內,應用調用其他接口被Hystrix熔斷的次數
參數解釋:
app : 應用名
timeRange : 指定時間範圍內的熔斷次數,取值單位可以爲 s (秒) , m(分鐘) , h(小時) ,d(天)
value : 熔斷次數,int整數
labels參數說明
env : 數據源(通常用於區分環境)
group : 我們通過fegin調用其他應用的應用名
instance : 實例名稱
job : 應用名
key : 具體的類名以及調用的方法 例: AcsClient#checkUserLogin(String)
6.Hystrix接口調用失敗次數監控
規則模板:
increase(hystrix_fallback_total{job="${app}"}[${timeRange}]) > ${value}
規則描述 :
監測在指定的時間範圍內,應用調用其他接口failback的次數
參數解釋:
app : 應用名
timeRange : 指定時間範圍內的熔斷次數,取值單位可以爲 s (秒) , m(分鐘) , h(小時) ,d(天)
value : failback次數,int整數
labels參數說明
env : 數據源(通常用於區分環境)
group : 我們通過fegin調用其他應用的應用名
instance : 實例名稱
job : 應用名
key : 具體的類名以及調用的方法 例: AcsClient#checkUserLogin(String)
7.JVM堆內存使用率監控
規則模板
sum(jvm_memory_used_bytes{job="${app}", instance="${instance}", area="heap"})*100/sum(jvm_memory_max_bytes{job="${app}",instance="${instance}", area="heap"}) >${value}
規則描述
監測JVM的堆內存的使用率, 前提是一定要指定應用名和實例名,否則prometheus不知道監控的那個JVM,這裏是以JVM爲單位的
參數解釋
app : 應用名
instance : 實例名,默認爲 IP:PORT
value : 監控指標,int整數,百分比
8.JVM非堆內存使用率監控
規則模板
sum(jvm_memory_used_bytes{job="${app}", instance="${instance}", area="nonheap"})*100/sum(jvm_memory_max_bytes{job="${app}",instance="${instance}", area="nonheap"}) > ${value}
規則描述
監測JVM的非堆內存的使用率(也就是通常意義上的棧內存,JIT編譯代碼緩存,永久代(jdk1.8爲元空間)), 前提是一定要指定應用名和實例名,否則prometheus不知道監控的那個JVM,這裏是以JVM爲單位的
參數解釋
app : 應用名
instance : 實例名,默認爲 IP:PORT
value : 監控指標,int整數,百分比
9.接口某個時間段內平均響應時間監控
規則模板
increase(http_server_requests_seconds_sum{job="${app}",exception="None", uri="${uri}"}[${timeRange}])/
increase(http_server_requests_seconds_count{job="${app}",exception="None", uri="${uri}"}[${timeRange}]) >${value}
規則描述
監控某個接口在指定時間範圍內的相應時間
參數解釋
app : 應用名
instance : 實例名,默認爲 IP:PORT
uri : 接口地址
timeRange : 時間範圍
value :監控指標,long類型,毫秒級別。
labels參數說明
env : 數據源(通常用於區分環境)
exception : 異常信息
instance : 實例名
job : 應用名
method : POST 或GET
status :http請求狀態 200爲成功
uri : 接口地址
10.接口某個時間段內平均響應時間監控(正則表達式)
規則模板
increase(http_server_requests_seconds_sum{job=~"${app}",exception="None", uri=~"${uri}"}[${timeRange}])/increase(http_server_requests_seconds_count{job="${app}",exception="None", uri=~"${uri}"}[${timeRange}]) >${value}
規則描述
監控某個接口在指定時間範圍內的響應時間,比如在某些場景下,有些接口的請求時間過於慢了, 這樣我們可以及時收到通知,以便後續優化。
參數解釋
app : 應用名, 正則表達式匹配
uri : 接口地址 , 正則表達式匹配
timeRange : 時間範圍
value :監控指標,long類型,毫秒級別。
labels參數說明
env : 數據源(通常用於區分環境)
exception : 異常信息
instance : 實例名
job : 應用名
method : POST 或GET
status :http請求狀態 200爲成功
uri : 接口地址
服務器相關
11.全局CPU使用率監測
規則模板
100 - ((avg by (instance,job,env)(irate(node_cpu_seconds_total{mode="idle"}[30s]))) *100) > ${value}
規則描述
監測CPU的平均使用率
參數解釋
value :監控指標,百分比,int整數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
12.監測指定服務器的CPU使用率
規則模板
100 - ((avg by (instance,job,env)(irate(node_cpu_seconds_total{mode="idle",job="${app}"}[30s]))) *100) > ${value}
規則描述
監測某個應用的CPU的平均使用率
參數解釋
app : 服務器IP
value :監控指標,百分比,int整數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
13.內存使用率
規則模板
((node_memory_MemTotal_bytes -(node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes) )/node_memory_MemTotal_bytes ) * 100 > ${value}
規則描述
監測內存使用率
參數解釋
value :監控指標,百分比,int整數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
14.磁盤使用率
規則模板
(node_filesystem_avail_bytes{fstype !~ "nfs|rpc_pipefs|rootfs|tmpfs",device!~"/etc/auto.misc|/dev/mapper/centos-home",mountpoint !~ "/boot|/net|/selinux"} /node_filesystem_size_bytes{fstype !~ "nfs|rpc_pipefs|rootfs|tmpfs",device!~"/etc/auto.misc|/dev/mapper/centos-home",mountpoint !~ "/boot|/net|/selinux"} ) * 100 > ${value}
規則描述
監測磁盤使用的比率,可以自定義當使用率大於多少的時候進行報警
參數解釋
value :監控指標,百分比,int整數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
device : 系統路徑
fstype : 文件系統類型
mountpoint : /
15.網卡流出速率
規則模板
(irate(node_network_transmit_bytes_total{device!~"lo"}[1m]) / 1000) > ${value}
規則描述
監控網卡的流出速率
參數解釋
value :監控指標,單位爲 kb
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
device : 網卡名稱 ,例: eth0 , eth1
16.系統負載率1分鐘
規則模板
node_load1 > ${value}
規則描述
監測系統一分鐘內的負載率。
參數解釋
value :監控指標,dubble小數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
17.系統負載率5分鐘
規則模板
node_load5 > ${value}
規則描述
監測系統5分鐘內的負載率。
參數解釋
value :監控指標,dubble小數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名
18.系統負載率15分鐘
規則模板
node_load15 > ${value}
規則描述
監測系統15分鐘內的負載率。
參數解釋
value :監控指標,dubble小數
labels參數說明
env : 數據源(通常用於區分環境)
instance : 實例名
job : 應用名