自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深夜驚魂:當(dāng)監(jiān)控告警“撒謊”時(shí),SRE 如何逆風(fēng)翻盤?

開發(fā) 前端
我們這一篇也是含金量十足,如果面試官讓你說個(gè)你處理過的比較有意思的案例,可以跟他講講,讓他也見見世面。

引言

我們這一篇也是含金量十足,如果面試官讓你說個(gè)你處理過的比較有意思的案例,可以跟他講講,讓他也見見世面。

開始

一、故障場景深度還原

時(shí)間:2025年1月3日 02:00(GMT+8)環(huán)境:

? 數(shù)據(jù)庫集群:MySQL 8.0.35,通過KubeBlocks部署(3節(jié)點(diǎn),跨AZ)

? 監(jiān)控架構(gòu):

Prometheus-Operator:管理采集規(guī)則(ServiceMonitor/PodMonitor)

VictoriaMetrics:長期存儲(chǔ),Grafana數(shù)據(jù)源

告警規(guī)則:mysql_global_status_cpu_utilization > 85%持續(xù)5分鐘

? 業(yè)務(wù)影響:訂單提交接口平均響應(yīng)時(shí)間從200ms升至8s,失敗率15%

二、OnCall工程師應(yīng)急響應(yīng)流程(KubeBlocks專項(xiàng))

階段1:黃金5分鐘 - 多維度驗(yàn)證告警真實(shí)性

1. 跨數(shù)據(jù)源驗(yàn)證CPU指標(biāo)

# 1.1 檢查Prometheus原始數(shù)據(jù)(排除規(guī)則誤判)
kubectl -n monitoring port-forward svc/prometheus-k8s 9090:9090 &
curl -sG "http://localhost:9090/api/v1/query" \
  --data-urlencode 'query=mysql_global_status_cpu_utilization{component="mysql"}' \
  | jq '.data.result[] | "\(.metric.pod): \(.value[1])%"'

# 輸出示例:
# "mysql-0: 95%"
# "mysql-1: 92%"
# "mysql-2: 34%"

# 1.2 對(duì)比KubeBlocks原生監(jiān)控(KubeBlocks Dashboard)
kubectl port-forward svc/kubeblocks-dashboard 8080:80 -n kubeblocks-system
# 瀏覽器訪問 http://localhost:8080 → 查看MySQL CPU使用率(顯示32%)

# 1.3 直接登錄數(shù)據(jù)庫Pod驗(yàn)證(KubeBlocks管理Pod)
kubectl exec -it mysql-0 -n kubeblocks-system -- bash
top -n 1 | grep "%Cpu(s)"
# 輸出:%Cpu(s): 15.3 us, 5.2 sy → 總CPU約20%

2. 分析監(jiān)控鏈路差異

數(shù)據(jù)源

CPU指標(biāo)

可信度分析

Prometheus

95%

采集鏈路可能異常

KubeBlocks Dashboard

32%

直接讀取數(shù)據(jù)庫宿主節(jié)點(diǎn)指標(biāo)

數(shù)據(jù)庫Pod內(nèi)top命令

20%

真實(shí)負(fù)載

初步結(jié)論:

? 監(jiān)控?cái)?shù)據(jù)失真:Prometheus采集的MySQL Exporter指標(biāo)異常

? 業(yè)務(wù)延遲根因:需排查應(yīng)用層(如緩存擊穿)或數(shù)據(jù)庫慢查詢

階段2:根因定位 - Prometheus采集鏈路深度排查

1. 檢查Prometheus-Operator配置

# 檢查關(guān)聯(lián)的ServiceMonitor(KubeBlocks默認(rèn)配置)
kubectl get servicemonitor -n kubeblocks-system kubeblocks-mysql -o yaml

# 關(guān)鍵參數(shù):
endpoints:
- port: metrics
  interval: 15s
  path: /metrics
  relabelings:
  - sourceLabels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance]
    targetLabel: instance

2. 驗(yàn)證Exporter數(shù)據(jù)準(zhǔn)確性

# 直接訪問Exporter端點(diǎn)(KubeBlocks自動(dòng)部署)
kubectl -n kubeblocks-system port-forward pod/mysql-0 9104:9104 &
curl -s http://localhost:9104/metrics | grep 'mysql_global_status_cpu_utilization'

# 輸出異常值:
mysql_global_status_cpu_utilization 95

# 對(duì)比Exporter計(jì)算邏輯(KubeBlocks MySQL Exporter版本)
kubectl exec -it mysql-exporter -n kubeblocks-system -- sh
cat /etc/mysql-exporter/queries.yaml | grep cpu_utilization
# 發(fā)現(xiàn)公式錯(cuò)誤:誤將系統(tǒng)CPU計(jì)入用戶CPU

3. 定位Exporter版本缺陷

# 檢查Exporter鏡像版本
kubectl get pod mysql-0 -n kubeblocks-system -o jsonpath='{.spec.containers[?(@.name=="exporter")].image}'
# 輸出:kubeblocks/mysql-exporter:v0.23.1(已知此版本存在CPU計(jì)算Bug)

三、多團(tuán)隊(duì)協(xié)作與修復(fù)(KubeBlocks專項(xiàng))

步驟1:結(jié)構(gòu)化信息同步(群模板)

@DBA團(tuán)隊(duì) @運(yùn)維團(tuán)隊(duì) @開發(fā)團(tuán)隊(duì)  
【告警處理進(jìn)展 - 02:15】  
**當(dāng)前狀態(tài)**:  
- 確認(rèn)數(shù)據(jù)庫實(shí)際CPU使用率約20%(KubeBlocks Dashboard與Pod內(nèi)驗(yàn)證)  
- Prometheus數(shù)據(jù)異常原因:KubeBlocks MySQL Exporter v0.23.1版本公式錯(cuò)誤  
- 業(yè)務(wù)延遲疑似緩存失效導(dǎo)致大量DB查詢  

**分工協(xié)作**:  
- [運(yùn)維團(tuán)隊(duì)] 請(qǐng)立即執(zhí)行:  
  1. 升級(jí)MySQL Exporter至v0.24.0(修復(fù)版本)  
     ```bash
     kubectl -n kubeblocks-system patch clusterdefinition mysql \
       --type=merge -p '{"spec":{"componentSpecs":[{"name":"mysql","exporterSpec":{"image":"kubeblocks/mysql-exporter:v0.24.0"}}]}}'
     ```  
  2. 重啟Exporter Pod  
     ```bash
     kubectl rollout restart sts/mysql -n kubeblocks-system
     ```  
- [開發(fā)團(tuán)隊(duì)] 請(qǐng)排查:  
  1. 訂單服務(wù)緩存命中率(檢查Redis `keyspace_misses`)  
  2. 確認(rèn)最近是否更新本地緩存配置(如Caffeine配置)  
- [DBA團(tuán)隊(duì)] 請(qǐng)協(xié)助:  
  1. 分析慢查詢?nèi)罩荆?2:00-02:15時(shí)段)  
     ```sql
     SELECT * FROM sys.schema_table_statistics WHERE avg_timer_wait > 1000000000;
     ```  

**下一步會(huì)議**:02:30 語音會(huì)議(鏈接:xxx)

步驟2:修復(fù)驗(yàn)證與業(yè)務(wù)恢復(fù)

1. Exporter升級(jí)驗(yàn)證

# 檢查新版本Exporter指標(biāo)
kubectl -n kubeblocks-system port-forward pod/mysql-0 9104:9104 &
curl -s http://localhost:9104/metrics | grep 'mysql_global_status_cpu_utilization'
# 輸出正常值:32

# 更新Prometheus采集規(guī)則
kubectl -n monitoring apply -f updated-service-monitor.yaml

2. 緩存服務(wù)修復(fù)(示例)

# 發(fā)現(xiàn)Redis集群分區(qū)
kubectl exec -it redis-cluster-0 -n cache -- redis-cli cluster nodes | grep fail
# 輸出:node-xyz... fail

# 觸發(fā)自動(dòng)修復(fù)(KubeBlocks Redis集群管理)
kubectl -n kubeblocks-system patch rediscluster redis-prod --type=merge \
  -p '{"spec":{"clusterReplicas": 5}}'

四、故障根因與改進(jìn)方案

根因分析

層級(jí)

問題描述

改進(jìn)措施

監(jiān)控采集

KubeBlocks MySQL Exporter v0.23.1版本CPU計(jì)算邏輯錯(cuò)誤

升級(jí)Exporter至v0.24.0,增加版本自動(dòng)檢查

告警策略

未與KubeBlocks原生監(jiān)控?cái)?shù)據(jù)對(duì)比校驗(yàn)

新增告警規(guī)則:abs(prometheus_cpu - kubeblocks_cpu) > 20觸發(fā)告警

緩存架構(gòu)

Redis集群未啟用自動(dòng)故障轉(zhuǎn)移

啟用KubeBlocks Redis Cluster自動(dòng)恢復(fù)策略

KubeBlocks專項(xiàng)優(yōu)化

1. 版本管理自動(dòng)化

# 集群定義中增加版本約束
apiVersion: apps.kubeblocks.io/v1alpha1
kind: ClusterDefinition
metadata:
  name: mysql
spec:
  componentSpecs:
    - name: mysql
      exporterSpec:
        image: kubeblocks/mysql-exporter:v0.24.0
        autoUpdate: true  # 啟用自動(dòng)升級(jí)

2. 監(jiān)控?cái)?shù)據(jù)校驗(yàn)機(jī)制

# 定時(shí)對(duì)比Prometheus與KubeBlocks數(shù)據(jù)
kubectl -n monitoring create cronjob monitor-consistency-check \
  --image=curlimages/curl \
  --schedule="*/5 * * * *" \
  -- curl -X POST http://alertmanager:9093/api/v2/alerts \
     -d '[{
       "labels": {
         "alertname": "MetricMismatch",
         "severity": "warning"
       },
       "annotations": {
         "description": "Prometheus與KubeBlocks CPU指標(biāo)差異超過20%"
       },
       "expr": "abs(mysql_global_status_cpu_utilization - kubeblocks_mysql_cpu_usage) > 20"
     }]'

五、OnCall工程師協(xié)作技巧(KubeBlocks環(huán)境)

1. KubeBlocks專用診斷命令

# 查看集群健康狀態(tài)
kubectl kb cluster list -n kubeblocks-system

# 獲取數(shù)據(jù)庫診斷報(bào)告(自動(dòng)收集日志+指標(biāo))
kubectl kb diagnose cluster mysql-prod -n kubeblocks-system --output=report.zip

# 檢查組件版本
kubectl kb version

2. 信息同步模板(KubeBlocks上下文)

@KubeBlocks運(yùn)維組  
【KubeBlocks集群狀態(tài) - 異常時(shí)段】  
- **Cluster**:mysql-prod  
- **組件健康**:  
  ```bash
  kubectl kb get ops -n kubeblocks-system --cluster=mysql-prod

? 事件時(shí)間線:

kubectl kb describe cluster mysql-prod -n kubeblocks-system | grep -A 20 Events

六、總結(jié):構(gòu)建可信的KubeBlocks監(jiān)控體系

1. 監(jiān)控雙保險(xiǎn)

? Prometheus采集業(yè)務(wù)指標(biāo) + KubeBlocks原生運(yùn)維指標(biāo)

? 關(guān)鍵指標(biāo)必須跨系統(tǒng)校驗(yàn)(如CPU、內(nèi)存、連接數(shù))

2. 版本治理

? 啟用KubeBlocks組件自動(dòng)升級(jí)策略

? 定期執(zhí)行kubectl kb check-updates

3. 故障自愈

? 配置KubeBlocks集群自動(dòng)擴(kuò)縮容(如Redis節(jié)點(diǎn)故障自動(dòng)替換)

? 集成Prometheus告警與KubeBlocks Webhook實(shí)現(xiàn)自動(dòng)修復(fù)

最終效果:

? 監(jiān)控誤報(bào)率下降80%

? 故障平均修復(fù)時(shí)間(MTTR)縮短至25分鐘

? KubeBlocks集群可用性提升至99.995%

責(zé)任編輯:武曉燕 來源: 云原生運(yùn)維圈
相關(guān)推薦

2018-07-18 17:58:00

2022-05-05 07:25:03

Supervisor監(jiān)控Python

2024-04-09 08:00:00

Kubernetes管理系統(tǒng)云原生

2022-07-29 21:23:54

Grafana微服務(wù)

2025-03-12 08:00:26

2022-07-28 06:50:52

微服務(wù)業(yè)務(wù)系統(tǒng)

2020-10-09 06:55:23

監(jiān)控告警日志

2021-06-21 08:59:55

監(jiān)控Netflix優(yōu)化

2021-06-21 08:30:14

Netflix監(jiān)控系統(tǒng)微服務(wù)

2024-01-05 11:49:30

K8S監(jiān)控告警

2023-12-20 08:13:54

K8S監(jiān)控管理

2022-01-21 08:36:21

LogstashZabbix監(jiān)控

2023-02-20 09:39:32

2025-01-06 10:38:04

2009-05-26 16:23:25

運(yùn)維管理IT管理摩卡

2024-12-18 13:20:18

2019-03-19 08:41:38

Linux運(yùn)維變更

2023-04-20 07:12:33

夜鶯監(jiān)控夜鶯

2019-01-17 08:38:03

Redis監(jiān)控內(nèi)存

2020-12-17 09:25:46

運(yùn)維Prometheus監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)