生產環境Consul Prometheus監控

2021-10-08 08:00:14 字數 4912 閱讀 1732

consul支援眾多監控工具進行對自身監控。我們這裡使用prometheus進行監控。

server監控我們採用prometheus基於檔案的自動發現(file_sd_configs),也可以使用靜態配置(static_config)。

因為我們要做consul的報警,報警需要有主機名,所以我們使用基於檔案的自動發現(file_sd_configs),對每台主機打上consul_node_name標籤。而靜態配置(static_config)則不能對每一台主機單獨打標籤,只能對整體的targets列表打標籤。

配置檔案如下,此配置檔案是k8s的配置檔案

~]

# cat prometheus-configmap.yaml

apiversion

: v1

kind

: configmap

metadata

:name

: prometheus-config-consul

namespace

: prometheus

labels

:: prometheus-consul

environment

: prod

release

: release

data

:prometheus.yml:|

global:

external_labels:

region: cn-hangzhou

monitor: consul

replica: a

scrape_configs:

- job_name: prometheus

static_configs:

- targets:

- localhost:9090

-job_name

: consul-server

# 採集頻率

scrape_interval

: 60s

# 採集超時

scrape_timeout

: 10s

# 採集物件的path路徑

}]

至此,prometheus就可以採集的consul server的資料了,可以使用prometheus自帶的ui進行查詢。

對於consul client監控,因為consul client數量太多,成百上千臺。因此如果使用基於檔案的發現(file_sd_configs)給每一台主機打標籤,維護這個檔案工作量太大(有主機的新增和刪除)。所以我們選用基於consul的自動發現(consul_sd_config)`來實現client的監控。

要想讓prometheus或者別的服務發現,那這個服務必須得註冊到consul中。因此我們使用指令碼生成乙個簡單的服務註冊

~]

# cat create-consul-registration.sh

#!/bin/bash

addr=

`ip addr show|

awk -f '[ /]+'

'/eth[0-9]|em[0-9]/ && /inet/ '

`consul_conf_dir=

'/usr/local/consul/consul.d'

consul_redister_file=

"$consul_conf_dir/consul-members-registration.json"if[

[ -n "$addr"

&& -d $consul_conf_dir]]

;then

cat>

$<<-eof

","name"

:"consul-members",

"tags":[

"prometheus",

"client",

"consul-client"

], "address"

:"$",

"port"

: 8500,

"check":}

} eof

else

echo

"ip address is empty or the $consul_conf_dir does not exist"

fi

執行這個指令碼會在/usr/local/consul/consul.d/下建立服務註冊的配置檔案consul-members-registration.json

~

]# cat /usr/local/consul/consul.d/consul-members-registration.json

}}

之後執行consul reload載入配置

~]

# consul reload

此時,這個服務就已經註冊到consul中了,service名稱為consul-members,service id為consul-10.111.74.86,我們可以使用curl命令或者瀏覽器來驗證。

~

]# curl -s 127.0

.0.1

:8500

/v1/agent/services|python -m json.tool

,"port"

:8500

,"service"

:"consul-members"

,"tags":[

"prometheus"

,"client"

,"consul-client"],

"weights":}

}

配置如下:

~]

# cat prometheus-configmap.yaml

apiversion

: v1

kind

: configmap

metadata

:name

: prometheus-config-consul

namespace

: prometheus

labels

:: prometheus-consul

environment

: prod

release

: release

data

:prometheus.yml:|

global:

external_labels:

region: cn-hangzhou

monitor: consul

replica: a

scrape_configs:

- job_name: prometheus

static_configs:

- targets:

- localhost:9090

-job_name

: consul-client

# 採集頻率

scrape_interval

: 60s

# 採集超時

scrape_timeout

: 10s

# 採集物件的path路徑

: consul_service_id

因為我們要做consul的報警,報警需要有主機名、service名稱、service id、dc等資訊,所以我們需要對標籤進行重寫。可重寫的標籤有:

開發環境 測試環境 預生產環境 生產環境區別

環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...

開發環境 測試環境 預生產環境 生產環境區別

環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...

生產環境故障

系統執行緩慢 ipmi應該是用於系統管理的遠控程序,雖然這是乙個利用空餘的cpu資源進行一些介面自動調節的任務,但看著佔那麼多的資源還是怕出意外。並且現在已經出了意外 反正不管怎麼樣試試 通過kipmid max busy us值可占用以改變kipmi的排程方式實現降低cpu占用。臨時降低 echo...