## relabeling機制
## 一、基本介紹
### 1.1 引子
上個章節中增加consul_exporter的自動發現時,就應用了relabeling機制。主要對自動發現的服務器節點中“帶有exporter的tag”進行數據保留,其余的服務器節點進行過濾。

### 1.2 什么是relabeling?
在Prometheus拉取數據的這個過程中,可能有很多數據是我們不想要的或者需要修改的。Prometheus提供了一個叫relabeling的功能,它能夠在抓取到目標實例之前把目標實例的元數據標簽動態重新修改,動態添加或者覆蓋標簽。

prometheus從consul動態發現目標(targets)之后,在被發現的target實例中,都包含一些原
始的Metadata標簽信息,默認的標簽有如下幾種
* address:以以<host>:<port>格式顯示日標targets的地址。
* scheme:采集的目標服務地址的Scheme形式,HTTP或者HTTPS。
* metrics_path:采集的目標服務的訪問路徑。
### 1.3 relabeling的兩個階段
為了更好的識別監控指標,便于后期調用數據繪圖、告警等需求,prometheus支持對發現1的目標進行label修改,在兩個階段可以重新標記:
* relabel_configs階段
在對target進行數據采集之前(比如在采集數據之前重新定義標簽信息,如目的IP、目的口等信息),可以使用relabel_configs添加、修改或刪除一些標簽、也可以只采集特定目或過濾目標。這種方式也是用的最多的。
* metric_relabel_configs階段
在對target進行數據采集之后,即如果是已經抓取到指標數據時,可以使用metric relabel configs做最后的重新標記和過濾

### 1.4 label的類型
source_labels:源標簽,沒有經過relabel處理之前的標簽名字
target_label:通過action處理之后的新的標簽名字
regex:給定的值或正則表達式匹配,匹配源標簽的值
replacement:通過分組替換后標簽(target_label)對應的/(/()1:2,就是引用regex中的分組信息
<hr>
<br>
## 二、relabel_configs實際運用介紹
### 2.1 案例

### 2.2 action類型講解
#### 2.2.1 replace
將regx正則表達式與連接的 source_labels 進行匹配。然后,將 target_label 設置為replacement,其中replacement 中的匹配組引用(1、(1}、1、{2}等)將被其值替換。如果正則表達式不匹配,則不進行替換。
* 示例

#### 2.2.2 keep
刪除regex與連接的source_labels不匹配的目標
* 示例

#### 2.2.3 drop
刪除regex與連接的source_labels匹配的目標
* 示例

#### 2.2.4 labelmap
對所有源標簽名匹配regex,而不僅僅是source_labels中指定的那些。然后將匹配標簽的值復制到標簽名稱中,替換為匹配組引用(1,(1),1,(2),…),替換為它們的值
* 示例

#### 2.2.5 labelkeep
對所有標簽名稱匹配reg中。任何不匹配的標簽都將從標簽集中除
* 示例

#### 2.2.6 labeldrop
對所有標簽名稱匹配regex。任何匹配的標簽都將從標簽集中除
* 示例

#### 2.2.7 hashmod
將target_label設置為連接的source_labels的哈希值的模數
* 示例

#### 2.2.8 lowercase
將連接的source_labels映射為它們的小寫
* 示例

#### 2.2.9 uppercase
將連接的source_labels映射為它們的大寫
#### 2.2.10 keepequal
刪除source_labels與target_label不匹配的目標
#### 2.2.11 dropequal
刪除連接的source_labels與target_label匹配的目標
- Prometheus教程
- 一. dokcer 安裝
- 二. 安裝docker-compose
- 三. docker-compose安裝Prometheus
- 四. 配置grafana的數據源
- 五. Prometheus的Exporter
- 六. Prometheus的基本術語
- 七. 監控Linux
- 八. 監控redis和mongodb
- 九. 監控mysql數據庫
- 十. 監控go程序
- 十一. 監控nginx
- 十二. 監控消息隊列
- 十三. 監控docker
- 十四. 監控進程
- 十五. 域名監控
- 十六. SNMP監控
- 十七. 黑盒監控
- 十八. 自定義監控
- 十九. go實現自定義監控
- 二十. 服務發現概述
- 二十一. 基于文件的服務發現
- 二十二. 基于Consul的服務發現
- 二十三. relabeling機制