偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Airflow 運(yùn)維最佳實(shí)踐:觀測與監(jiān)控

運(yùn)維
Airflow 的核心組件如果掛了,整個系統(tǒng)就可能停擺。所以,至少要有一條監(jiān)控規(guī)則:它們是不是還活著?最簡單的方式就是查詢 Web Server 的?/health/?API,返回的 JSON 能告訴你各個組件的狀態(tài)。

在做 Airflow 運(yùn)維的這幾年里,我發(fā)現(xiàn)光是把 DAG 部署上去遠(yuǎn)遠(yuǎn)不夠,真正的挑戰(zhàn)是:如何持續(xù)觀測和監(jiān)控系統(tǒng)的運(yùn)行情況。

這篇文章是我閱讀和實(shí)踐 Airflow 2.x 后整理的筆記,重點(diǎn)聊聊兩個層面:

1. 核心 Airflow 組件的監(jiān)控(scheduler、數(shù)據(jù)庫、triggerer、executors、web server)

2. DAG 自身的監(jiān)控(日志、告警、SLA、性能分析)

寫這篇文章的出發(fā)點(diǎn)很簡單:很多團(tuán)隊(duì)一開始都低估了監(jiān)控的重要性,結(jié)果問題爆發(fā)時手忙腳亂。我自己也踩過不少坑,所以想用更接地氣的方式總結(jié)一下。

主動監(jiān)控 vs 抑制監(jiān)控

在正式展開之前,先厘清兩個概念:

? 主動監(jiān)控(active monitoring)定期去探測服務(wù)的健康狀態(tài),比如調(diào)用 /health 接口,如果發(fā)現(xiàn)掛了就觸發(fā)告警。?? 舉例:Prometheus 定時拉取 Airflow scheduler 的指標(biāo)。

? 抑制監(jiān)控(suppressive monitoring)系統(tǒng)定期主動匯報(bào)“我沒問題”,如果長時間沒收到消息,才認(rèn)為有問題。?? 舉例:用 Healthchecks 這類工具,讓 DAG 每次跑完就 ping 一下,如果沒收到,就認(rèn)為 SLA miss。

這兩個模式在 Airflow 運(yùn)維里都會用到。

一、監(jiān)控核心 Airflow 組件

Airflow 的核心組件如果掛了,整個系統(tǒng)就可能停擺。所以,至少要有一條監(jiān)控規(guī)則:它們是不是還活著?

最簡單的方式就是查詢 Web Server 的 /health/ API,返回的 JSON 能告訴你各個組件的狀態(tài)。

1. Scheduler

Scheduler 是 Airflow 的心臟,必須 7x24 小時健康運(yùn)轉(zhuǎn)。常見的指標(biāo)有:

? scheduler.scheduler_loop_durationScheduler 循環(huán)一次調(diào)度所需的時間。如果這個值越來越高,說明調(diào)度壓力過大,任務(wù)可能開始延遲甚至 miss SLA。

? scheduler.tasks.starving有多少任務(wù)因?yàn)橘Y源不夠而無法調(diào)度。長期高企,說明你的池(pool)或資源配置有問題。

? scheduler.tasks.executable等待執(zhí)行的任務(wù)數(shù)量。如果這個值一直很大,意味著 worker 不夠用了。

?? 小技巧:有些團(tuán)隊(duì)會加一個 canary DAG(只含一個簡單任務(wù)),用它來確認(rèn)調(diào)度器是否真的能調(diào)度任務(wù),而不僅僅是“活著”。

2. Metadata Database

元數(shù)據(jù)庫是 Airflow 的“黑匣子”,記錄了所有 DAG 和任務(wù)的運(yùn)行歷史。一旦出問題,后果極其嚴(yán)重。

需要重點(diǎn)關(guān)注:

? 連接池大小/使用率:防止連接被占滿。

? 查詢性能:延遲高可能拖慢整體系統(tǒng)。

? 磁盤空間:數(shù)據(jù)庫滿了,Airflow 基本就廢了。

? 備份狀態(tài):必須有災(zāi)備方案。

?? 我的建議:用云廠商的托管數(shù)據(jù)庫,別自己運(yùn)維 PostgreSQL/MySQL,省心又穩(wěn)。

3. Triggerer

Triggerer 負(fù)責(zé)異步任務(wù)的調(diào)度(deferrable operators),Airflow 2.0 之后特別重要。

監(jiān)控指標(biāo):

? triggers.blocked_main_thread:主線程被阻塞的次數(shù)。增長過快要警惕。

? triggers.running:當(dāng)前運(yùn)行的 triggers 數(shù)量。如果太多,說明要加 Triggerer 實(shí)例。

4. Executors / Workers

不同執(zhí)行器需要不同的監(jiān)控方式:

? Kubernetes Executor:重點(diǎn)關(guān)注 Pod 的 CPU/內(nèi)存資源使用,避免 OOM 或調(diào)度延遲。

? Celery Executor:

Worker 的 CPU/內(nèi)存

消息隊(duì)列(Redis/RabbitMQ)的健康度

隊(duì)列長度(queue length):如果任務(wù)堆積,說明 worker 數(shù)量不夠

?? 推薦用 Flower 來監(jiān)控 Celery,更直觀。

5. Web Server

Web Server 既是 UI,也是 REST API 接口,性能也要盯著:

? 響應(yīng)時間

? 錯誤率(4xx / 5xx)

? 請求速率

? 系統(tǒng)資源利用率

? 吞吐量

特別是你用 API 控制調(diào)度的時候,Web Server 的穩(wěn)定性至關(guān)重要。

二、監(jiān)控你的 DAGs

核心組件健康只是第一步,更重要的是確認(rèn) DAG 本身是否“靠譜”。

1. 日志(Logging)

Airflow 的日志是分層的:DAG → Task → 嘗試次數(shù)。你可以在 UI 里直接看,也可以把日志送到外部系統(tǒng)(S3、Elasticsearch、GCS 等)。

?? 寫自定義 Operator 時,用標(biāo)準(zhǔn)的 Python logging 模塊即可,Airflow 會幫你處理。

2. 告警(Alerting)

Airflow 提供了多種方式:

? Email:配置 email_on_failure 或 email_on_retry。

? Callbacks:更靈活,可以觸發(fā)自定義動作。常見的有:

on_failure_callback:強(qiáng)烈推薦,DAG 出問題必須有告警。

sla_miss_callback:DAG 超過 SLA 時觸發(fā)。

on_retry_callback / on_execute_callback:慎用,容易太吵。

?? 我的經(jīng)驗(yàn):少而精,別把團(tuán)隊(duì)淹沒在告警風(fēng)暴里。

3. SLA 監(jiān)控

Airflow 自帶的 SLA 功能不太好用,很多人都說“幾乎是壞掉的”。我更推薦用 Healthchecks 這種外部工具:

? 每次 DAG 成功就 ping 一下

? 如果長時間沒 ping 到,就自動觸發(fā)告警

這種方式更直觀,也符合“抑制監(jiān)控”的思路。

4. 性能分析(Profiling)

Airflow UI 自帶了一些好用的工具:

? Gantt 圖:看任務(wù)執(zhí)行順序和耗時,定位瓶頸。

? 任務(wù)持續(xù)時間趨勢:找出是否有任務(wù)越來越慢。

? Landing time:DAG 結(jié)束和任務(wù)完成之間的差值,可以反映 Scheduler 是否壓力過大。

其他常見指標(biāo):

? 任務(wù)啟動時間:對 K8s executor 特別有用,可以看出調(diào)度延遲。

? 任務(wù)失敗/重試次數(shù):穩(wěn)定性的重要參考。

? DAG 解析時間:如果 DAG 文件加載很慢,Scheduler 整體都會受影響。

總結(jié)

這一章我整理的重點(diǎn)是:

? 核心 Airflow 組件監(jiān)控:Scheduler、數(shù)據(jù)庫、Triggerer、Executors、Web Server。

? DAG 監(jiān)控:日志、告警、SLA、性能分析。

? 兩種監(jiān)控模式:主動 vs 抑制。

我的經(jīng)驗(yàn)是:別等到生產(chǎn)掛掉才去想“我們是不是應(yīng)該監(jiān)控一下”。Airflow 本質(zhì)上是個調(diào)度系統(tǒng),只有持續(xù)監(jiān)控,才能確保它真的在“調(diào)度”而不是“掉隊(duì)”。

責(zé)任編輯:武曉燕 來源: 科學(xué)隨想錄
相關(guān)推薦

2013-06-09 10:38:54

IT運(yùn)維管理運(yùn)維管理ITIL管理

2025-09-26 02:50:00

2014-01-21 09:55:21

運(yùn)維人員日志實(shí)踐

2015-07-23 08:48:29

運(yùn)維

2015-02-04 11:45:52

高效運(yùn)維

2025-04-30 05:00:00

批量運(yùn)維系統(tǒng)

2015-08-29 13:03:24

運(yùn)維技術(shù)沙龍MDSA

2015-11-03 16:03:09

AppDeploy運(yùn)維工具

2017-07-25 10:53:27

2015-08-05 09:53:34

運(yùn)維自動化

2025-02-13 07:42:35

2018-12-14 11:04:56

數(shù)據(jù)庫運(yùn)維智能

2015-09-01 09:23:38

360網(wǎng)絡(luò)運(yùn)維

2012-06-28 11:35:27

BSM北塔軟件

2011-03-21 14:43:42

2019-07-17 14:03:44

運(yùn)維DevOps實(shí)踐

2010-08-12 17:26:54

網(wǎng)站運(yùn)維監(jiān)控與報(bào)警機(jī)制

2017-10-09 09:12:35

攜程運(yùn)維架構(gòu)

2019-03-19 08:41:38

Linux運(yùn)維變更

2016-01-12 11:38:19

智能化運(yùn)維運(yùn)維業(yè)務(wù)
點(diǎn)贊
收藏

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