コンセプトについては話さず、そのまま操作してみましょう……
ドッカーのインストール
prometheusを使ってDingTalkアラームを実現するのはコンテナで実現しているので、dockerのインストール方法は前回の記事dockerのインストールと起動 – centos7 にあります。
以下のような結果が出れば成功です
[root@iZbp16vhn64fpaj6qmsum0Z ~]# docker --version
Docker version 24.0.2, build cb74dfc
次のステップは、インストールして開始することです。前の記事を読んでください。
準備
画像プル
使用する必要がある画像を取得します
docker pull prom/node-exporter
docker pull grafana/grafana
docker pull prom/prometheus
docker pull prom/alertmanager
docker pull timonwong/prometheus-webhook-dingtalk
以下に 示すように
prom/node-exporter
、ホスト システムの情報とインジケータを収集するために使用されます。
grafana/grafana
: 監視メトリクスを視覚化および分析するためのオープンソース プラットフォームです。
prom/prometheus
: 時系列データを収集および保存し、データベースのクエリ、アラーム、および視覚化機能を提供するために使用されるオープンソースの監視システムです。
prom/alertmanager
: これは Prometheus のアラーム マネージャーであり、Prometheus サーバーからのアラーム通知を処理およびルーティングするために使用されます。
timonwong/prometheus-webhook-dingtalk
: Prometheus アラーム通知を DingTalk に送信するために使用される Webhook であり、サードパーティのオープン ソース ソフトウェアです。
コンテナの起動
ノードエクスポーターを開始する
docker run -d -p 9100:9100 -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /:/rootfs:ro prom/node-exporter
訪問を見る
プロメテウスを起動する
prometheus を開始する前に、prometheus.yml ファイルを自分で作成し、ボリュームを使用してそれをコンテナー内にマウントできます。
# 创建挂载目录
mkdir /opt/prometheus
cd /opt/prometheus/
# 编写该文件
vim prometheus.yml
prometheus.yml ファイル
global:
scrape_interval: 60s
evaluation_interval: 60s
# Alertmanager配置
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['121.43.108.111:9090'] # 采取prometheus指标数据
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['121.43.108.111:9100'] # 采取本地指标数据
labels:
instance: localhost
起動する
docker run -d -p 9090:9090 -v /opt/prometheus:/etc/prometheus prom/prometheus
訪問を見る
グラファナを開始する
docker run -d -p 3000:3000 --name=grafana grafana/grafana
訪問を見る
Webhook-prometheus-dingtalk を開始する
まず、 DingTalk アラーム ロボットをwebhook token
起動します。
注: ここを --ding.profile="webhook1= 自己复制的webhook
"に変更します。
docker run -d --restart always -p 8060:8060 timonwong/prometheus-webhook-dingtalk:v0.3.0 --ding.profile="webhook1=复制的webhook"
アラートマネージャーを開始する
alertmanager を開始する前に、alertmanager.yml ファイルを自分で作成し、ボリュームを使用してそれをコンテナー内にマウントできます。
# 创建挂载目录
mkdir /opt/alertmanager
cd /opt/alertmanager/
# 编写该文件
vim alertmanager.yml
アラートマネージャー.yml
global:
resolve_timeout: 5m
route: # 告警路由配置,定义如何处理和发送告警
receiver: webhook
group_wait: 30s
group_interval: 1m
repeat_interval: 4h
group_by: [alertname]
routes:
- receiver: webhook
group_wait: 10s
receivers: # 告警接收者配置,定义如何处理和发送告警
- name: webhook
webhook_configs:
- url: http://121.43.108.111:8060/dingtalk/webhook1/send # 告警 Webhook URL
send_resolved: true # 是否发送已解决的告警。如果设置为 true,则在告警解决时发送通知
起動する
docker run -d -p 9093:9093 -v /opt/alertmanager/:/etc/alertmanager/ --name alertmanager prom/alertmanager
訪問を見る
すべてのコンテナは次のように正常に起動されます。
プロメテウスをアラートマネージャーに関連付ける
prometheus ディレクトリの rules.yml ファイルにアラーム ルールを作成します。
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# pwd
/opt/prometheus
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# cat rules.yml
groups:
- name: host_monitoring
rules:
- alert: 内存报警
expr: netdata_system_ram_MiB_average{
chart="system.ram",dimension="free",family="ram"} < 800
for: 2m
labels:
team: node
annotations:
Alert_type: 内存报警
Server: '{
{$labels.instance}}'
#summary: "{
{$labels.instance}}: High Memory usage detected"
explain: "内存使用量超过90%,目前剩余量为:{
{ $value }}M"
#description: "{
{$labels.instance}}: Memory usage is above 80% (current value is: {
{ $value }})" - alert: CPU报警
expr: netdata_system_cpu_percentage_average{
chart="system.cpu",dimension="idle",family="cpu"} < 20 for: 2m
labels:
team: node
annotations:
Alert_type: CPU报警
Server: '{
{$labels.instance}}'
explain: "CPU使用量超过80%,目前剩余量为:{
{ $value }}"
#summary: "{
{$labels.instance}}: High CPU usage detected"
#description: "{
{$labels.instance}}: CPU usage is above 80% (current value is: {
{ $value }})"
- alert: 磁盘报警
expr: netdata_disk_space_GiB_average{
chart="disk_space._",dimension="avail",family="/"} < 4
for: 2m
labels:
team: node
annotations:
Alert_type: 磁盘报警
Server: '{
{$labels.instance}}'
explain: "磁盘使用量超过90%,目前剩余量为:{
{ $value }}G"
- alert: 服务告警
expr: up == 0
for: 2m
labels:
team: node
annotations:
Alert_type: 服务报警
Server: '{
{$labels.instance}}'
explain: "netdata服务已关闭"
prometheus.yml ファイルを変更して関連付けます
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# pwd
/opt/prometheus
[root@iZbp16vhn64fpaj6qmsum0Z prometheus]# cat prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
# Alertmanager配置
alerting:
alertmanagers:
- static_configs:
- targets: ["121.43.108.111:9093"]
# rule配置
rule_files:
- "/etc/prometheus/rules.yml"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['121.43.108.111:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['121.43.108.111:9100']
labels:
instance: localhost
注: マウントを使用して構成ファイルをコンテナーに投影するため、対応するファイル パスも変更する必要があります。
例:rule_files のパス: ["/etc/prometheus/rules.yml"] には、ファイルがコンテナーに保存されているパスを入力する必要があります。
プロメテウスを再起動する
docker restart prometheus的容器id
ビュー表示
テスト
容器を所定の位置で止めてnode-exporter
効果を確認してください。
docker stop node-exporter所在的容器id
ノードエクスポーター
アラートマネージャー
DingTalk でアラートを表示する
コンテナが配置されている場所でコンテナを再起動してnode-exporter
、効果を確認します。
docker restart node-exporter所在的容器id
DingTalk で見る
仕上げる
参考記事:こちら