在數(shù)字化運(yùn)維中,對基礎(chǔ)軟件服務(wù)(如數(shù)據(jù)庫、Web服務(wù)器、消息隊列等)的實時監(jiān)控與及時告警至關(guān)重要。本文將引導(dǎo)您快速搭建一套集服務(wù)監(jiān)控、數(shù)據(jù)收集與微信告警于一體的基礎(chǔ)系統(tǒng)。
一、 核心架構(gòu)與選型
一套典型的監(jiān)控告警系統(tǒng)通常包含以下核心組件:
node<em>exporter(主機(jī)指標(biāo))、mysqld</em>exporter(MySQL)、nginx-exporter(Nginx)等。它們以HTTP接口暴露標(biāo)準(zhǔn)化的指標(biāo)數(shù)據(jù)。alerting rules 進(jìn)行計算。二、 快速部署步驟
步驟1:部署數(shù)據(jù)采集器(以 nodeexporter 為例)
在被監(jiān)控的服務(wù)器上,下載并運(yùn)行 node</em>exporter,它默認(rèn)在 9100 端口提供指標(biāo)。`bash
# 下載
wget https://github.com/prometheus/nodeexporter/releases/download/v1.6.0/nodeexporter-1.6.0.linux-amd64.tar.gz
# 解壓并運(yùn)行
tar xvfz nodeexporter-*.*.tar.gz
cd nodeexporter-.
./node_exporter &`
為其他服務(wù)(如MySQL, Nginx)部署對應(yīng)的Exporter,并確保其端口可被Prometheus Server訪問。
步驟2:部署與配置Prometheus Server
1. 下載并解壓Prometheus。
2. 編輯配置文件 prometheus.yml,主要配置兩部分:
* scrapeconfigs:定義要拉取數(shù)據(jù)的目標(biāo)(即上述Exporter)。
`yaml
scrapeconfigs:
- jobname: 'node'
staticconfigs:
- jobname: 'mysql'
staticconfigs:
- targets: ['MySQL服務(wù)器IP:9104'] # mysqld_exporter默認(rèn)端口
`
* alerting:設(shè)置Alertmanager的地址。
`yaml
alerting:
alertmanagers:
- 'localhost:9093' # Alertmanager默認(rèn)端口
`
./prometheus --config.file=prometheus.yml步驟3:配置告警規(guī)則
在Prometheus配置目錄下創(chuàng)建規(guī)則文件(如 rules.yml),并在 prometheus.yml 中通過 rule_files 引用。以下是一個檢測主機(jī)是否存活的規(guī)則示例:`yaml
groups:
- name: host_monitor
rules:
- alert: InstanceDown
expr: up{job="node"} == 0 # up指標(biāo)為0表示目標(biāo)失聯(lián)
for: 1m # 持續(xù)1分鐘才觸發(fā)
labels:
severity: critical
annotations:
summary: "實例 {{ $labels.instance }} 宕機(jī)"
description: "{{ $labels.job }} 在 {{ $labels.instance }} 已無法訪問超過1分鐘。"`
重啟Prometheus使規(guī)則生效。
步驟4:部署與配置Alertmanager
1. 下載并解壓Alertmanager。
2. 創(chuàng)建企業(yè)微信機(jī)器人:在企業(yè)微信群聊中添加“群機(jī)器人”,獲取Webhook地址(格式如:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXX)。
3. 編輯Alertmanager配置文件 alertmanager.yml,配置微信告警路由與接收器。`yaml
route:
groupby: ['alertname']
groupwait: 10s
groupinterval: 10s
repeatinterval: 1h
receiver: 'wechat-webhook'
receivers:
- name: 'wechat-webhook'
webhook_configs:
- url: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的機(jī)器人KEY'
send_resolved: true # 發(fā)送恢復(fù)通知`
./alertmanager --config.file=alertmanager.yml步驟5:驗證與測試
1. 訪問 http://Prometheus服務(wù)器IP:9090,在“Status”->“Targets”中查看所有監(jiān)控目標(biāo)狀態(tài)是否為“UP”。
2. 訪問 http://Prometheus服務(wù)器IP:9090/alerts 查看配置的告警規(guī)則狀態(tài)。
3. 可以手動停止一個 node_exporter 服務(wù),約1分鐘后,在Prometheus的Alerts頁面應(yīng)看到 InstanceDown 告警觸發(fā)(狀態(tài)為 FIRING)。
4. 您配置的企業(yè)微信群將收到來自機(jī)器人的告警卡片消息,包含告警標(biāo)題、詳情及恢復(fù)通知。
三、 進(jìn)階與優(yōu)化
可視化:集成 Grafana,連接Prometheus數(shù)據(jù)源,制作豐富的監(jiān)控儀表盤。
監(jiān)控更多服務(wù):根據(jù)需求部署 redis<em>exporter, kafka</em>exporter, elasticsearch_exporter 等。
高可用與安全:考慮Prometheus、Alertmanager的高可用部署,并為組件間通信配置TLS加密。
告警精細(xì)化:在Alertmanager中配置更復(fù)雜的路由策略,實現(xiàn)按告警級別、服務(wù)類型分派到不同人員或群組。
通過以上步驟,您已成功搭建了一套基礎(chǔ)但完整的軟件服務(wù)監(jiān)控與微信告警系統(tǒng)。這套以Prometheus為核心的開源方案靈活、高效,是構(gòu)建現(xiàn)代化運(yùn)維監(jiān)控體系的堅實起點。
如若轉(zhuǎn)載,請注明出處:http://www.marriottlnjw.com.cn/product/55.html
更新時間:2026-02-10 11:42:48