精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢 原創(chuàng)

發(fā)布于 2025-9-26 08:33
瀏覽
0收藏

整體思路

在日常運(yùn)維中,經(jīng)常會(huì)遇到類似的問題:明明系統(tǒng)前一天運(yùn)行正常,第二天登錄量突然下降,卻要花費(fèi)大量時(shí)間去手工檢查日志、排查 Prometheus 指標(biāo),再整理成報(bào)告發(fā)給業(yè)務(wù)方。這類重復(fù)、耗時(shí)的工作不僅影響效率,還容易出現(xiàn)遺漏。于是,我就產(chǎn)生了一個(gè)想法:能不能把這種巡檢工作自動(dòng)化?正好最近在研究 Prometheus 指標(biāo)采集、定時(shí)任務(wù)和大模型工作流,于是就設(shè)計(jì)了一個(gè)小實(shí)驗(yàn),把“登錄統(tǒng)計(jì)”作為切入點(diǎn),完整演示了如何實(shí)現(xiàn)自動(dòng)化巡檢的閉環(huán)。

通常在日常運(yùn)維中,我們會(huì)關(guān)注 CPU、磁盤、內(nèi)存等硬件資源的健康狀況,而這里我將巡檢對(duì)象替換成了“用戶登錄信息”,以此作為示例。流程是這樣的:首先通過自定義的 Prometheus Exporter 生成用戶登錄相關(guān)的指標(biāo)數(shù)據(jù);然后由 Prometheus Server 來采集這些指標(biāo);接著使用 crontab 配合定時(shí)腳本(inspector.sh)周期性地巡檢和獲取數(shù)據(jù);最后,腳本會(huì)調(diào)用 Dify 的工作流,將巡檢結(jié)果進(jìn)一步加工,結(jié)合知識(shí)庫(kù)和腳本邏輯生成一份清晰的報(bào)告。這樣做的意義在于:不僅實(shí)現(xiàn)了定時(shí)化、自動(dòng)化的巡檢,而且把數(shù)據(jù)采集、指標(biāo)處理和智能化的結(jié)果生成串聯(lián)起來,形成一個(gè)可復(fù)用的運(yùn)維自動(dòng)化方案。換句話說,這篇文章的核心,是通過“登錄指標(biāo)替代傳統(tǒng)硬件指標(biāo)”的例子,向讀者展示如何用 Prometheus + 定時(shí)任務(wù) + Dify 工作流,把常見的運(yùn)維巡檢場(chǎng)景落地成一個(gè)完整的自動(dòng)化閉環(huán)。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

接下來,我們來整理一下文章的順序。我們會(huì)先創(chuàng)建 Dify 工作流,工作流中根據(jù)采集到的用戶登錄情況,創(chuàng)建初步的運(yùn)維方案,然后通過工作流內(nèi)置的知識(shí)庫(kù)檢索生成詳細(xì)運(yùn)維方案。然后在創(chuàng)建定時(shí)巡檢的腳本 Inpector.sh 利用它調(diào)用工作流。接著設(shè)置定時(shí)任務(wù),定時(shí)從 Prometheus 中拉取 Metrics 指標(biāo)數(shù)據(jù)作為要監(jiān)控的信息,并且調(diào)用Inpector.sh 讓 Dify 工作流返回的信息作為方案生成最終的運(yùn)維執(zhí)行報(bào)告。

安裝 Dify

首先我們嘗試安裝 Dify,這里我們會(huì)選擇在本地使用 Docker 安裝 Dify。

前提條件

安裝 Dify 之前, 請(qǐng)確保你的機(jī)器已滿足最低安裝要求:

  • CPU >= 2 Core?
  • RAM >= 4 GiB

操作系統(tǒng)

軟件

描述

macOS 10.14 or later

Docker Desktop

為 Docker 虛擬機(jī)(VM)至少分配 2 個(gè)虛擬 CPU(vCPU) 和 8GB 初始內(nèi)存,否則安裝可能會(huì)失敗。

Linux platforms

Docker 19.03 or later

Docker Compose 1.28 or later

請(qǐng)參閱??安裝 Docker?? 和??安裝 Docker Compose???

以獲取更多信息。

Windows with WSL 2 enabled

Docker Desktop

我們建議將源代碼和其他數(shù)據(jù)綁定到 Linux 容器中時(shí),將其存儲(chǔ)在 Linux 文件系統(tǒng)中,而不是 Windows 文件系統(tǒng)中。

克隆 Dify 代碼倉(cāng)庫(kù)

克隆 Dify 源代碼至本地環(huán)境。

# 假設(shè)當(dāng)前最新版本為 0.15.3
 git clone https://github.com/langgenius/dify.git --branch 0.15.3

啟動(dòng)容器

進(jìn)入 Dify 源代碼的 Docker 目錄:

cd dify/docker

復(fù)制環(huán)境配置文件:

cp .env.example .env

可以修改 .env 中 Nginx 的端口,默認(rèn)的端口是 80 ,我們修改成 8085。避免與本機(jī)的 80 端口沖突。

EXPOSE_NGINX_PORT=8085

啟動(dòng) Docker 容器:

根據(jù)你系統(tǒng)上的 Docker Compose 版本,選擇合適的命令來啟動(dòng)容器。你可以通過 $ docker compose version 命令檢查版本,詳細(xì)說明請(qǐng)參考 ???Docker 官方文檔??:

如果版本是 Docker Compose V2,使用以下命令:

docker compose up -d

如果版本是 Docker Compose V1,使用以下命令:

docker-compose up -d

運(yùn)行命令后,你應(yīng)該會(huì)看到類似以下的輸出,顯示所有容器的狀態(tài)和端口映射:

[+] Running 11/11
 ? Network docker_ssrf_proxy_network Created 0.1s 
 ? Network docker_default Created 0.0s 
 ? Container docker-redis-1 Started 2.4s 
 ? Container docker-ssrf_proxy-1 Started 2.8s 
 ? Container docker-sandbox-1 Started 2.7s 
 ? Container docker-web-1 Started 2.7s 
 ? Container docker-weaviate-1 Started 2.4s 
 ? Container docker-db-1 Started 2.7s 
 ? Container docker-api-1 Started 6.5s 
 ? Container docker-worker-1 Started 6.4s 
 ? Container docker-nginx-1 Started 7.1s

最后檢查是否所有容器都正常運(yùn)行:

docker compose ps

在這個(gè)輸出中,你應(yīng)該可以看到包括 3 個(gè)業(yè)務(wù)服務(wù) api / worker / web,以及 6 個(gè)基礎(chǔ)組件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。

NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
 docker-api-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
 docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
 docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
 docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
 docker-sandbox-1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute 
 docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
 docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute 
 docker-web-1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
 docker-worker-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker About a minute ago Up About a minute 5001/tcp

通過這些步驟,你可以在本地成功安裝 Dify。通過 Docker Desktop 看到的就是如下圖的樣子。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

啟動(dòng) Dify

由于我們之前修改了入口的端口號(hào), 這里需要通過 8085 端口訪問 dify,如下:

???http://127.0.0.1:8085/install?

接著會(huì)進(jìn)入界面,設(shè)置管理員郵箱,名稱和密碼。

admin
 c12345678

然后按照下面頁(yè)面的方式,登錄就好了。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

配置 LLM

在用戶的“配置”界面,點(diǎn)擊“模型供應(yīng)商”,添加如下圖所示的供應(yīng)商。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

這里 DeepSeek 用來做模型推理,使用 SILICONFLOW 提供的 BAAI 模型完成向量數(shù)據(jù)庫(kù)的嵌入操作。

創(chuàng)建 workflow

工作流步驟描述如下:

  • 獲取參數(shù)(參數(shù)提取器):從用戶的自然語(yǔ)言中,提取登錄總?cè)藬?shù),登錄異常人數(shù)等信息。?
  • 得到方案(代碼執(zhí)行):通過代碼判斷異常登錄比例,從而提供基本解決方案。?
  • 細(xì)化方案(知識(shí)檢索):輸入基本解決方案,通過知識(shí)庫(kù)檢索詳細(xì)解決方案。在知識(shí)庫(kù)中保存著所有運(yùn)維的解決方案信息。?
  • 生成報(bào)表( LLM):根據(jù)詳細(xì)解決方案生成運(yùn)維報(bào)表。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

提取參數(shù)

參數(shù)提取器,需要將自然語(yǔ)言轉(zhuǎn)化為參數(shù),說白了就是要提取自然語(yǔ)言中的關(guān)鍵信息。本例中,登錄的總?cè)藬?shù)和登錄異常人數(shù)就是關(guān)鍵信息。此處會(huì)使用 LLM 幫助我們提取信息,因此需要給 LLM 指令如下:

提取 “總登錄人數(shù)”:文本中 “一共 XX 人登錄” 里的 “XX” 數(shù)值,對(duì)應(yīng)參數(shù)名 “total_login_count”(僅保留數(shù)字,如 “15680”);
 提取 “成功登錄人數(shù)”:文本中 “成功 XX 人” 里的 “XX” 數(shù)值,對(duì)應(yīng)參數(shù)名 “success_login_count”(僅保留數(shù)字,如 “14739”);
 提取 “失敗登錄人數(shù)”:文本中 “失敗 XX 人” 里的 “XX” 數(shù)值,對(duì)應(yīng)參數(shù)名 “failed_login_count”(僅保留數(shù)字,如 “941”);

獲取關(guān)鍵信息之后,會(huì)通過“代碼執(zhí)行”判斷采取的具體方案。由于“代碼執(zhí)行”是“參數(shù)提取器”的下游節(jié)點(diǎn),所以在“代碼執(zhí)行”中會(huì)對(duì)標(biāo)“參數(shù)提取器”中的兩個(gè)輸出參數(shù),作為自己節(jié)點(diǎn)的輸入?yún)?shù)。如下圖所示,total_login 和 failed_login_count 作為“參數(shù)提取器”輸出參數(shù),并作為“代碼執(zhí)行”的輸入?yún)?shù),輸入到“PYTHON3”的函數(shù)腳本中。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

執(zhí)行代碼

在完成提取參數(shù)之后,我們得到了登錄總?cè)藬?shù)和登錄失敗人數(shù)的關(guān)鍵信息,接著需要得到初步的解決方案。這里需要用到代碼執(zhí)行器,按照登錄失敗的比例進(jìn)行判斷,給出方案信息。

代碼執(zhí)行器,python 腳本如下:

def main(total_login: int, failed_login_count: int) -> dict:
 """ 
 參數(shù):
 total_login: 總登錄人數(shù)
 anomaly_count: 異常登錄人數(shù)
 
 返回:
 包含處理建議的字典
 """
 # 邊界情況處理
 if total_login == 0:
 return {"result": "總登錄人數(shù)為0,無(wú)法計(jì)算異常率,請(qǐng)檢查指標(biāo)采集是否正常"}
 
 # 計(jì)算異常率(保留2位小數(shù))
 anomaly_rate = round(failed_login_count / total_login * 100, 2)
 
 # 1級(jí):輕微異常(異常率≤2%)
 if anomaly_rate <= 2:
 suggestion = """
 1. 監(jiān)控層面:開啟5分鐘粒度的異常趨勢(shì)跟蹤,無(wú)需觸發(fā)告警
 2. 操作層面:抽樣檢查3-5條異常日志,確認(rèn)是否為用戶操作失誤
 3. 后續(xù)跟進(jìn):若10分鐘內(nèi)異常率持續(xù)上升至2%以上,手動(dòng)升級(jí)處理
 """.strip()
 
 # 2級(jí):一般異常(2%<異常率≤5%)
 elif anomaly_rate <= 5:
 suggestion = """
 1. 服務(wù)檢查:執(zhí)行kubectl get pods | grep login-service確認(rèn)服務(wù)存活
 2. 日志分析:按錯(cuò)誤類型統(tǒng)計(jì)(4xx/5xx),排查是否集中在特定區(qū)域
 3. 處理動(dòng)作:重啟異常服務(wù)實(shí)例,清理登錄相關(guān)緩存
 4. 通知:同步當(dāng)日值班運(yùn)維工程師關(guān)注
 """.strip()
 
 # 3級(jí):中度異常(5%<異常率≤10%)
 elif anomaly_rate <= 10:
 suggestion = """
 1. 緊急排查:檢查服務(wù)資源使用率(CPU<80%、內(nèi)存<85%),分析登錄SQL慢查詢
 2. 控制影響:封禁1分鐘內(nèi)失敗次數(shù)>20次的IP(臨時(shí)1小時(shí)),啟用緩存降級(jí)
 3. 協(xié)同響應(yīng):通知運(yùn)維團(tuán)隊(duì)全員,同步開發(fā)查看近期代碼變更
 4. 進(jìn)度跟蹤:每15分鐘輸出一次異常處理進(jìn)展
 """.strip()
 
 # 4級(jí):嚴(yán)重異常(10%<異常率≤20%)
 elif anomaly_rate <= 20:
 suggestion = """
 1. 資源擴(kuò)容:登錄服務(wù)實(shí)例緊急擴(kuò)容至原數(shù)量×2,數(shù)據(jù)庫(kù)連接數(shù)調(diào)至2000
 2. 服務(wù)降級(jí):關(guān)閉登錄積分等非核心功能,對(duì)非會(huì)員啟用驗(yàn)證碼
 3. 應(yīng)急響應(yīng):電話通知運(yùn)維負(fù)責(zé)人(15分鐘內(nèi)到場(chǎng)),啟動(dòng)應(yīng)急預(yù)案
 4. 進(jìn)度同步:每10分鐘向技術(shù)總監(jiān)匯報(bào)處理進(jìn)度
 """.strip()
 
 # 5級(jí):緊急異常(異常率>20%)
 else:
 suggestion = """
 1. 全網(wǎng)告警:觸發(fā)短信+電話告警(技術(shù)總監(jiān)、運(yùn)維/開發(fā)負(fù)責(zé)人)
 2. 系統(tǒng)處理:?jiǎn)?dòng)災(zāi)備系統(tǒng),實(shí)施流量限流(僅允許30%正常流量)
 3. 業(yè)務(wù)協(xié)同:通知業(yè)務(wù)負(fù)責(zé)人評(píng)估影響,成立臨時(shí)應(yīng)急小組
 4. 高層匯報(bào):每5分鐘在應(yīng)急群更新進(jìn)展,30分鐘向管理層匯報(bào)
 """.strip()
 
 return {"result": suggestion}

如上腳本所示,它是針對(duì)登錄系統(tǒng)異常的自動(dòng)化分析與處置建議工具,核心功能是基于總登錄人數(shù)與異常登錄人數(shù),通過計(jì)算異常率(保留 2 位小數(shù))并匹配 5 級(jí)異常分級(jí)標(biāo)準(zhǔn),輸出精準(zhǔn)的對(duì)應(yīng)處理方案。腳本首先會(huì)處理 “總登錄人數(shù)為 0” 的邊界情況,提示檢查指標(biāo)采集有效性;在正常計(jì)算場(chǎng)景下,會(huì)根據(jù)異常率≤2%(輕微異常)、2%-5%(一般異常)、5%-10%(中度異常)、10%-20%(嚴(yán)重異常)、>20%(緊急異常)的不同區(qū)間,分別生成從監(jiān)控跟蹤、日志抽樣到資源擴(kuò)容、災(zāi)備啟動(dòng)、跨團(tuán)隊(duì)協(xié)同響應(yīng)等不同粒度的操作建議,涵蓋監(jiān)控策略、服務(wù)檢查、資源調(diào)整、人員通知、進(jìn)度跟蹤等全流程動(dòng)作。

需要注意的是,這里返回的“建議”方案只是初步方案會(huì)為后期詳細(xì)方案的搜索和生成提供重要指引。

創(chuàng)建知識(shí)庫(kù)

在完成初步方案的生成之后,我們需要針對(duì)初步方案搜索“運(yùn)維知識(shí)庫(kù)”,從而生成更加詳細(xì)的方案。這里需要提前將知識(shí)庫(kù)建立起來。

如下圖所示,在 Dify 中點(diǎn)擊“知識(shí)庫(kù)”,并且“創(chuàng)建知識(shí)庫(kù)”。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

如下圖所示,通過“選擇文件”導(dǎo)入文件。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

這里導(dǎo)入的文件就是我們的“運(yùn)維知識(shí)庫(kù)”。如下圖所示,文件內(nèi)容按照操作類型,使用場(chǎng)景進(jìn)行分類。可以通過“代碼執(zhí)行”提供的解決方案在該文檔中查找更多信息,從而細(xì)化解決方案。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

接著選擇文檔切割的方式以及文本嵌入的方式,如下圖所示。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

界面中可設(shè)置文本分段相關(guān)參數(shù),如分段標(biāo)識(shí)符(這里是\n\n,即兩個(gè)換行符,用于標(biāo)識(shí)文本分段位置)、分段最大長(zhǎng)度(500 tokens,tokens 是模型處理文本的基本單位,限制單段文本長(zhǎng)度)、分段重疊長(zhǎng)度(50 tokens,控制相鄰分段間重疊的 token 數(shù)量);還有文本預(yù)處理規(guī)則,比如替換連續(xù)空格、換行符等;以及索引方式(提供 “高質(zhì)量” 和 “經(jīng)濟(jì)” 兩種,影響檢索精度與成本)和Embedding 模型(這里選擇的是BAAI/bge - m3,Embedding 模型用于將文本轉(zhuǎn)化為向量表示,助力后續(xù)檢索等操作)。

這里需要補(bǔ)充一下,知識(shí)庫(kù)嵌入時(shí)需要文本切割和上下文覆蓋(分段覆蓋)的原因:

  • 文本切割:大語(yǔ)言模型(LLM)在處理文本時(shí),存在上下文窗口限制(即能同時(shí)處理的文本長(zhǎng)度有限)。知識(shí)庫(kù)中的文本可能很長(zhǎng),若不進(jìn)行切割,超出模型上下文窗口的部分就無(wú)法被有效處理。通過按照一定規(guī)則(如基于 token 數(shù)量、特定分隔符等)切割文本,能讓每一段文本都處于模型可處理的長(zhǎng)度范圍內(nèi),從而保證文本能被 Embedding 模型正確編碼為向量,便于后續(xù)的檢索、匹配等操作。?
  • 上下文覆蓋(分段覆蓋):文本在自然語(yǔ)義上是連貫的,當(dāng)進(jìn)行切割時(shí),可能會(huì)把一個(gè)完整的語(yǔ)義單元(比如一個(gè)完整的知識(shí)點(diǎn)、邏輯表述)分割到兩個(gè)不同的文本段中。設(shè)置分段重疊長(zhǎng)度,能讓相鄰的文本段之間有部分內(nèi)容重疊。這樣一來,在后續(xù)基于向量檢索等操作時(shí),即使一個(gè)問題或查詢涉及的內(nèi)容處于兩個(gè)文本段的 “分割處”,由于有重疊部分,也能更好地捕捉到完整的語(yǔ)義信息,避免因文本切割而丟失上下文關(guān)聯(lián),提升知識(shí)庫(kù)檢索和問答的準(zhǔn)確性。

接著,我們就可以設(shè)置“知識(shí)檢索”的內(nèi)容,如下圖所示,選擇“查詢變量”為“代碼執(zhí)行”的 result 也就是返回的“結(jié)果”,我們可以回想一下在“代碼執(zhí)行”中會(huì)返回“初步的方案”,這里以result 變量的方式輸入到“知識(shí)檢索”中。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

換句話說,就是將“代碼執(zhí)行”得到的初步解決方案放到知識(shí)庫(kù)中進(jìn)行檢索,從而得到細(xì)化之后的解決方案。

大模型生成報(bào)告

好了,到了這里就需要將細(xì)化之后的解決方案生成運(yùn)維報(bào)告,指導(dǎo)運(yùn)維工程師處理登錄異常的問題。我們需要利用大模型加上提示詞完成,如下圖所示,在系統(tǒng)提示詞中處理登錄總?cè)藬?shù)和失敗人數(shù)以外,還需要加入“上下文”。 這個(gè)“上下文”就是從知識(shí)庫(kù)中檢索出來的細(xì)化之后的方案。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

測(cè)試工作流

通過上面一頓操作,工作流就創(chuàng)建完畢了,接著讓我們測(cè)試工作流是否正常運(yùn)行。

如下圖所示,在工作流的“開始”節(jié)點(diǎn),添加參數(shù)“user_query”,顧名思義就是用輸入的參數(shù),用來接受用戶輸入的內(nèi)容。然后,點(diǎn)擊右上角的“運(yùn)行”按鈕,在“user_query”中輸入請(qǐng)求。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

輸入請(qǐng)求內(nèi)容如下,很明顯包含了登錄總?cè)藬?shù),成功登錄人數(shù),以及失敗人數(shù)的信息。

一共 2350 人登錄,成功 2218 人,失敗 132 人。

可以在右邊欄中看到結(jié)果和追蹤信息。如下圖所示,可以查看工作流每個(gè)步驟的執(zhí)行時(shí)間和執(zhí)行內(nèi)容, 在“結(jié)束”節(jié)點(diǎn)中可以看到最終結(jié)果。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

Agent 接入工作流

在完成工作流之后,我們還可以將工作流接入到 Dify 的 Agent 中,這是為了方便客戶端進(jìn)行更好的使用,比如我們可以與工作流進(jìn)行對(duì)話,詢問一些運(yùn)維相關(guān)的處理意見。

需要注意的是,在本例中這個(gè)步驟屬于支線任務(wù),可做可不做,接入 Agent 的做法是讓我們對(duì) Dify 工作流有更好的使用。并不是僅僅給自動(dòng)化巡檢任務(wù)賦能,還可以一魚多吃,把工作流接入到對(duì)話應(yīng)用中。如果對(duì)這個(gè)不感興趣的同學(xué),可以直接跳過這個(gè)環(huán)節(jié)。

在接入 Agent 之前,需要發(fā)布工作流,并且“發(fā)布為工具”,如下圖所示。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

在 Agent 中會(huì)通過工具調(diào)用的方式引用工作流的能力。

接著, 如下圖所示,創(chuàng)建 Agent。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

然后,編輯 Agent 內(nèi)容,如下圖所示。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

提示詞的部分,如下:

接受登錄相關(guān)信息。
 例如:“一共 2350 人登錄,成功 2218 人,失敗 132 人。” 得到登錄異常的處理方法。
 調(diào)用工作流 login_inspect

通過舉例的方式告訴 Agent 提示詞“長(zhǎng)什么樣子”(Few-Shot),并且告訴 LLM 調(diào)用對(duì)應(yīng)的工作流:login_inspect。 這個(gè)名字就是我們把工作流發(fā)布為工具的時(shí)候,起的名字。

在右上方選擇一個(gè)處理用戶自然語(yǔ)言的模型,這里選擇我們已經(jīng)定義的 DeepSeek 模型。然后就可以在下方的輸入框中提問,讓 Agent 調(diào)用工作流給出答案了。

輸入如下問題:

一共 2350 人登錄,成功 2218 人,失敗 132 人。

提問之后,可以通過下圖看到結(jié)果。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

很明顯,在輸入與登錄相關(guān)的信息之后,Agent 會(huì)調(diào)用工作流 login_inspect ,并且從工作流返回的字段 "tool response" 明顯看到返回的信息。 在最下方,是 Agent 結(jié)合 LLM 潤(rùn)色得到的最終回復(fù)。

當(dāng)然,我們可以通過右上角的“發(fā)布”按鈕,將 Agent 發(fā)布給其他的運(yùn)維人員使用。

編寫定時(shí)任務(wù)腳本

完成工作流的開發(fā)之后,我們需要由一個(gè)定時(shí)任務(wù)獲取 Prometheus Server 的指標(biāo)數(shù)據(jù),也就是用戶登錄的數(shù)據(jù),然后再調(diào)用 Dify 工作流對(duì)其進(jìn)行詳細(xì)方案的分析。

具體而言,腳本的主要作用是對(duì)用戶登錄情況進(jìn)行自動(dòng)化巡檢與報(bào)告生成。它會(huì)定期從 Prometheus 中獲取關(guān)鍵指標(biāo),包括總登錄次數(shù)、登錄成功次數(shù)和失敗次數(shù),并通過指定路徑的 jq 工具進(jìn)行數(shù)據(jù)解析與匯總。隨后,腳本會(huì)將整理后的結(jié)果轉(zhuǎn)換為結(jié)構(gòu)化文本,調(diào)用本地 Workflow 服務(wù)進(jìn)行進(jìn)一步分析,并輸出直觀的中文結(jié)果。為了保證結(jié)果的可追溯性,腳本會(huì)將每次的分析結(jié)果按時(shí)間戳保存為 JSON 文件存放在 report 目錄中。

先上腳本,再展開講解。

#!/bin/bash

 # ===== 配置部分 =====
 API_KEY="app-QO7DYA9uxq2HApfSVSKKHC0Y"
 BASE_URL="http://127.0.0.1:8085/v1"
 USER_ID="local-user-001"
 PROM_URL="http://localhost:9090"
 LOG_FILE="inspector.log"

 # ===== jq 路徑 =====
 JQ_CMD="/Users/cuihao/opt/anaconda3/bin/jq"

 # ===== 日志函數(shù) =====
 log() {
 TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
 echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
 }

 log "腳本開始執(zhí)行"

 # ===== 查詢 Prometheus 指標(biāo) =====
 log "查詢 Prometheus: 總登錄次數(shù)"
 TOTAL_LOGINS=$(curl -s "${PROM_URL}/api/v1/query?query=user_login_total" \
 | $JQ_CMD '[.data.result[] | .value[1] | tonumber] | add')
 TOTAL_LOGINS=${TOTAL_LOGINS:-0}
 log "總登錄次數(shù): $TOTAL_LOGINS"

 log "查詢 Prometheus: 登錄成功次數(shù)"
 SUCCESS_LOGINS=$(curl -s "${PROM_URL}/api/v1/query?query=user_login_total" \
 | $JQ_CMD '[.data.result[] | select(.metric.login_status=="success") | .value[1] | tonumber] | add')
 SUCCESS_LOGINS=${SUCCESS_LOGINS:-0}
 log "登錄成功次數(shù): $SUCCESS_LOGINS"

 log "查詢 Prometheus: 登錄失敗次數(shù)"
 FAIL_LOGINS=$(curl -s "${PROM_URL}/api/v1/query?query=user_login_total" \
 | $JQ_CMD '[.data.result[] | select(.metric.login_status=="failed") | .value[1] | tonumber] | add')
 FAIL_LOGINS=${FAIL_LOGINS:-0}
 log "登錄失敗次數(shù): $FAIL_LOGINS"

 # ===== 生成 Workflow 輸入文本 =====
 INPUT_TEXT="用戶登錄統(tǒng)計(jì):總登錄次數(shù): ${TOTAL_LOGINS},登錄成功: ${SUCCESS_LOGINS},登錄失敗: ${FAIL_LOGINS}"
 SAFE_INPUT_TEXT=$(echo "$INPUT_TEXT" | $JQ_CMD -Rs .)
 log "生成 Workflow 輸入文本: $INPUT_TEXT"

 # ===== 調(diào)用 Workflow =====
 log "?? 正在調(diào)用 Workflow ..."
 RESPONSE=$(curl -s -X POST "${BASE_URL}/workflows/run" \
 -H "Authorization: Bearer ${API_KEY}" \
 -H "Content-Type: application/json" \
 -d "{
 \"inputs\": {
 \"user_query\": $SAFE_INPUT_TEXT
 },
 \"response_mode\": \"blocking\",
 \"user\": \"${USER_ID}\"
 }")

 log "收到 Workflow 原始響應(yīng): $RESPONSE"

 # ===== 輸出結(jié)果 =====
 echo "? Workflow 返回結(jié)果:"
 RESULT=$(echo "${RESPONSE}" | $JQ_CMD -r '.data.outputs["tool response"]')
 echo "$RESULT"
 log "Workflow 中文結(jié)果: $RESULT"

 log "腳本執(zhí)行完成"

 # ===== 保存報(bào)告 =====
 TIMESTAMP=$(date +"%Y%m%d%H%M%S")
 REPORT_DIR="/Users/cuihao/docker/dify/report"
 mkdir -p "$REPORT_DIR"
 REPORT_FILE="${REPORT_DIR}/inspector_${TIMESTAMP}.json"
 echo "$RESULT" > "$REPORT_FILE"
 log "Workflow 結(jié)果已保存到: $REPORT_FILE"

 log "腳本執(zhí)行完成"

腳本分為四步:

配置與日志

定義了 API_KEY、Prometheus 地址、Workflow 服務(wù)地址、日志文件等基本參數(shù)。

使用 log() 函數(shù)統(tǒng)一記錄執(zhí)行過程和結(jié)果,保證排查時(shí)可追溯。

采集指標(biāo)

通過 curl 調(diào)用 Prometheus 的 HTTP API,分別獲取三個(gè)核心指標(biāo):

  • ?總登錄次數(shù)?
  • 登錄成功次數(shù)?
  • 登錄失敗次數(shù)?

用 jq 解析 Prometheus 返回的 JSON 數(shù)據(jù),并計(jì)算對(duì)應(yīng)數(shù)值。

生成分析輸入 & 調(diào)用 Workflow

將三個(gè)指標(biāo)拼接成一句中文描述(如“總登錄次數(shù) 100,成功 95,失敗 5”)。

通過 jq 將文本轉(zhuǎn)為 JSON 安全字符串。

調(diào)用本地運(yùn)行的 Workflow 服務(wù)接口,把指標(biāo)數(shù)據(jù)作為輸入,等待返回分析結(jié)果。

結(jié)果輸出與歸檔

在終端和日志中打印 Workflow 的中文結(jié)果。

同時(shí)將結(jié)果保存為 JSON 文件,按時(shí)間戳命名,存放在 report 目錄下,方便后續(xù)留存和比對(duì)。

細(xì)心的你可能發(fā)現(xiàn)了,這個(gè)腳本中定義了工作流的 key,我們需要通過它調(diào)用 Dify 的工作流。下面就來看看如何申請(qǐng)這個(gè) Key。

生成 workflow API 密鑰

如下圖所示,在 Dify 工作室右上角點(diǎn)擊“API 密鑰” 按鈕,在彈出框中選擇“創(chuàng)建密鑰”,請(qǐng)保存好你的密鑰。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

生成好的密鑰大概長(zhǎng)下面這個(gè)樣子。

app-QO7DYA9uxq2HApfSVSKKHC0Y

接著可以通過如下命令執(zhí)行腳本,從而測(cè)試能否調(diào)用 Dify 的工作流。

執(zhí)行腳本命令如下:

chmod +x inspector.sh
 ./inspector.sh

如果執(zhí)行完畢之后,在 report 目錄下看到 report 文件,說明執(zhí)行成功了。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

配置定時(shí)任務(wù)

由于我用的 Mac OS,為了方便使用 crontab 協(xié)助我完成定時(shí)任務(wù)的執(zhí)行。crontab 是類 Unix 操作系統(tǒng)(如 Linux、macOS)中用于定時(shí)執(zhí)行任務(wù)的工具,其核心是通過 crontab 命令管理定時(shí)任務(wù)列表(即 crontab 文件),并由系統(tǒng)后臺(tái)的 cron 守護(hù)進(jìn)程持續(xù)監(jiān)聽、觸發(fā)任務(wù)。用戶可通過 crontab -e 編輯任務(wù),每條任務(wù)需遵循 “分 時(shí) 日 月 周 命令” 的固定時(shí)間格式(例如 0 2 * * * /home/backup.sh 表示每天凌晨 2 點(diǎn)執(zhí)行備份腳本),支持使用通配符(如 * 代表所有值)、范圍符(如 1-5 代表周一到周五)靈活設(shè)定執(zhí)行周期,適用于日志切割、數(shù)據(jù)備份、系統(tǒng)監(jiān)控等重復(fù)性操作,無(wú)需人工干預(yù)即可實(shí)現(xiàn)任務(wù)的自動(dòng)化定時(shí)運(yùn)行。

通過如下命令,打開當(dāng)前用戶的 crontab 文件(通常是 vim / nano)。

crontab -e

在 crontab 中輸入如下內(nèi)容,指定要執(zhí)行的文件和日志輸出文件。

*/5 * * * * /bin/bash /Users/cuihao/docker/dify/inspector.sh >> /Users/cuihao/docker/dify/inspector.log 2>&1

這里執(zhí)行的文件就是我們的inspector.sh 腳本文件,它幫助我們調(diào)用 Dify 的工作流,并且返回詳細(xì)的方案信息,接著生成報(bào)告。另外日志輸出文件,是針對(duì) crontab 的執(zhí)行情況的日志。

查看 crontab 任務(wù):

crontab -l

查看 crontab 任務(wù)執(zhí)行狀態(tài):

sudo launchctl list | grep cron

測(cè)試整體流程

好了,萬(wàn)事俱備只欠東風(fēng),通過如下程序生成 Metrics 指標(biāo)數(shù)據(jù)寫入到 Prometheus 中,這樣就有了測(cè)試數(shù)據(jù)。

from prometheus_client import start_http_server, Counter
 import random
 import time

 # 定義登錄指標(biāo)(與告警規(guī)則中的標(biāo)簽完全匹配)
 LOGIN_COUNT = Counter(
 'user_login_total',
 '用戶登錄總次數(shù)及狀態(tài)統(tǒng)計(jì)',
 ['user_type', 'login_status', 'ip_region'] # 包含規(guī)則中用到的user_type、login_status
 )

 def simulate_login(failure_rate=0.2):
 """模擬登錄行為,可指定失敗率(默認(rèn)20%,確保觸發(fā)15%閾值)"""
 # 70%普通用戶,30%管理員(與規(guī)則2的admin類型匹配)
 user_type = random.choices(['normal', 'admin'], weights=[0.7, 0.3])[0]
 
 # 按指定失敗率生成登錄狀態(tài)(默認(rèn)20%失敗,超過15%閾值)
 login_status = random.choices(
 ['success', 'failed'],
 weights=[1 - failure_rate, failure_rate]
 )[0]
 
 # 隨機(jī)地區(qū)(規(guī)則未用到,但不影響)
 ip_region = random.choice(['beijing', 'shanghai', 'guangzhou'])
 
 # 記錄指標(biāo)(標(biāo)簽與規(guī)則中的篩選條件完全對(duì)應(yīng))
 LOGIN_COUNT.labels(
 user_type=user_type,
 login_status=login_status,
 ip_reginotallow=ip_region
 ).inc()
 
 # 打印失敗日志,方便觀察觸發(fā)情況
 if login_status == 'failed':
 print(f"[失敗] 用戶類型: {user_type},地區(qū): {ip_region}")

 if __name__ == '__main__':
 # 啟動(dòng)指標(biāo)服務(wù)(9091端口,與Prometheus配置一致)
 start_http_server(9091)
 print("Exporter運(yùn)行中:http://localhost:9091/metrics")
 print("開始模擬登錄(高失敗率,確保觸發(fā)告警)...")
 
 # 持續(xù)模擬登錄(每0.5秒1次,快速累積數(shù)據(jù),匹配規(guī)則的2分鐘窗口)
 while True:
 simulate_login(failure_rate=0.3) # 20%失敗率,超過15%閾值
 time.sleep(0.5)

此時(shí),crontab 已經(jīng)開始運(yùn)行了,由于我們?cè)O(shè)置的是 5 分鐘執(zhí)行一次crontab 定義的inspector.sh 腳本。 所以,稍微等待就可以看看inspector_crontab.log 文件中 crontab 任務(wù)的執(zhí)行情況了。

如下所示:

[2025-09-16 15:45:00] 腳本開始執(zhí)行
 [2025-09-16 15:45:00] 查詢 Prometheus: 總登錄次數(shù)
 [2025-09-16 15:45:00] 總登錄次數(shù): 10113
 [2025-09-16 15:45:00] 查詢 Prometheus: 登錄成功次數(shù)
 [2025-09-16 15:45:00] 登錄成功次數(shù): 7117
 [2025-09-16 15:45:00] 查詢 Prometheus: 登錄失敗次數(shù)
 [2025-09-16 15:45:00] 登錄失敗次數(shù): 2996
 [2025-09-16 15:45:00] 生成 Workflow 輸入文本: 用戶登錄統(tǒng)計(jì):總登錄次數(shù): 10113,登錄成功: 7117,登錄失敗: 2996
 [2025-09-16 15:45:00] ?? 正在調(diào)用 Workflow ...
 ......
 ### **電商平臺(tái)登錄異常應(yīng)急響應(yīng)執(zhí)行報(bào)告**

 **報(bào)告生成時(shí)間:** 2023-10-27 15:00
 **事件主題:** 電商平臺(tái)登錄接口失敗率異常告警
 **報(bào)告人:** 運(yùn)維工程師

 ---

 #### **一、 事件摘要**

 * **事件發(fā)生時(shí)間:** 2023-10-27 14:30 (監(jiān)控系統(tǒng)觸發(fā)告警)
 * **事件級(jí)別:** **緊急異常(5級(jí))**
 * **核心指標(biāo):**
 * 登錄請(qǐng)求總數(shù):11,888
 * 登錄失敗數(shù):3,527
 * **計(jì)算失敗率:** (3,527 / 11,888) * 100% ≈ **29.7%**
 * **事件現(xiàn)象:** 平臺(tái)登錄接口出現(xiàn)大量失敗請(qǐng)求,失敗率高達(dá)29.7%,遠(yuǎn)超2%的健康閾值,嚴(yán)重影響用戶正常登錄體驗(yàn),存在重大業(yè)務(wù)風(fēng)險(xiǎn)。
 * **初步判斷:** 此失敗率屬于災(zāi)難性級(jí)別,可能原因包括:認(rèn)證服務(wù)集群故障、數(shù)據(jù)庫(kù)連接池耗盡、緩存(Redis)失效或過載、網(wǎng)絡(luò)分區(qū)、或遭受惡意撞庫(kù)攻擊等。

由于篇幅有限,我們展示一部分的 crontab 日志。從日志中可以看出,腳本采集到 Prometheus Server 的 Metrics 數(shù)據(jù),以及啟動(dòng) Dify 工作流都成功了,并且看到了詳細(xì)的處理方案和執(zhí)行步驟。

最后,來到 report 目錄下面。如圖所示,可以看到以 report+時(shí)間為名字的 json 文件被創(chuàng)建,并且文件中可以看到報(bào)告內(nèi)容。

運(yùn)維新突破:Prometheus+DeepSeek+Dify實(shí)現(xiàn)自動(dòng)巡檢-AI.x社區(qū)

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
蜜桃视频一区| 在线高清欧美| 国产午夜精品在线观看| 国产精品丝袜高跟| 久视频在线观看| 亚洲第一福利社区| 欧美精品日韩精品| 日韩视频免费播放| 最新97超碰在线| 国产aⅴ精品一区二区三区色成熟| 一区二区三区四区激情| 国产精品久久国产三级国电话系列 | 黄色18在线观看| 国产清纯白嫩初高生在线观看91| 成人精品福利视频| 日本午夜精品理论片a级app发布| 国产亚洲一卡2卡3卡4卡新区| 555www色欧美视频| 日韩欧美国产免费| 大地资源网3页在线观看| 91免费国产在线| 91久久久国产精品| 亚洲中文一区二区| 亚洲承认在线| xxxxx成人.com| 免费看黄色的视频| 国产精品主播在线观看| 欧美人与性动xxxx| 黑鬼大战白妞高潮喷白浆| 岛国成人毛片| 欧美高清在线精品一区| 久久综合九色综合久99| 性网爆门事件集合av| 奇米亚洲午夜久久精品| 亚洲精品456在线播放狼人| 污色网站在线观看| 不卡一二三区| 午夜欧美在线一二页| 国产高清免费在线| 啊v视频在线| 久久先锋影音av| 国产综合第一页| www.黄色av| 久久99精品久久久久久动态图| 日本精品久久久| 国产精品第56页| 午夜久久99| 欧美xxxx14xxxxx性爽| 日韩不卡av在线| 国产成人一区| 亚洲欧美精品中文字幕在线| www.88av| 欧美日韩麻豆| 亚洲精品国产精品国自产在线 | 国产免费一区二区三区视频| 超清av在线| www.成人网.com| 97免费资源站| 亚洲国产精品久久久久爰性色| 国产最新精品精品你懂的| 国产欧美久久久久久| 久久这里只有精品9| 日韩va欧美va亚洲va久久| 热久久这里只有| 日日夜夜操视频| 日韩国产成人精品| 国产精品久久久久久影视| 青青青手机在线视频| 欧美日韩有码| 爽爽爽爽爽爽爽成人免费观看| 国产精品无码久久久久一区二区| 丝袜美腿一区二区三区动态图| 日韩成人在线视频| 国产精品无码午夜福利| 国产一区二区区别| 自拍偷拍免费精品| 国产中文av在线| 欧美1区免费| 欧美精品video| 天堂网av手机版| 麻豆九一精品爱看视频在线观看免费| 国产成人极品视频| 夜夜爽8888| 国产一区二区精品久久| 成人黄动漫网站免费| 欧洲成人一区二区三区| 久久老女人爱爱| 亚洲毛片aa| 青春草免费在线视频| 午夜精品一区二区三区电影天堂 | 东方aⅴ免费观看久久av| 国产乱码精品一区二区三区中文 | 色综合久久中文字幕综合网小说| 国产无套内射又大又猛又粗又爽| 亚洲欧美日韩在线观看a三区| 国产精品扒开腿做爽爽爽的视频| 91亚洲精品国偷拍自产在线观看| 国产成人免费视频网站高清观看视频| 精品日本一区二区三区| 国产精品麻豆一区二区三区| 亚洲日本在线观看| 欧美日韩二三区| 欧美91在线|欧美| 亚洲电影免费观看高清| 青青青视频在线播放| 欧美女人交a| 在线观看欧美视频| 一区二区三区四区五区| 天天操天天干天天操天天干| 欧美日韩视频网站| 6080午夜不卡| 国精产品一区一区三区免费视频| 99久久.com| 欧美中文字幕在线观看| av高清一区二区| 国产日韩在线不卡| 久久99中文字幕| 日韩黄色碟片| 精品偷拍一区二区三区在线看| 国产免费久久久久| 日韩中文字幕av电影| 99视频在线播放| 在线观看完整版免费| 婷婷久久综合九色综合绿巨人| 天天干天天草天天| 亚洲精品亚洲人成在线| 九九久久国产精品| 伊人久久一区二区| 久久久噜噜噜久久中文字幕色伊伊| 日韩精品一区二区三区电影| 国产亚洲一区二区手机在线观看| 精品国产制服丝袜高跟| 亚洲精品卡一卡二| 免费精品视频在线| 欧美另类网站| 国产高潮在线| 精品少妇一区二区三区视频免付费| 奇米网一区二区| 视频在线观看一区二区三区| 国产综合 伊人色| 丁香高清在线观看完整电影视频 | 国产精品人人爽| 国产午夜精品久久| 男人亚洲天堂网| 色老板在线视频一区二区| 欧美精品videossex性护士| 国产人妖在线播放| 亚洲精选一二三| 性欧美在线视频| 99精品小视频| 国产在线视频不卡| 黄色网在线播放| 在线播放欧美女士性生活| 免费在线观看a级片| 精品一区二区三区视频在线观看| 亚洲国产精品www| 成人亚洲网站| 久久久电影免费观看完整版| 91激情在线观看| 中文字幕中文在线不卡住| 97超碰成人在线| 99国产精品免费视频观看| 国产欧美日韩中文字幕| 黄网站视频在线观看| 91精品国产91久久久久久一区二区 | 欧美国产在线观看| 天堂中文视频在线| 久久综合av| 正在播放国产一区| 艳妇乳肉豪妇荡乳av无码福利 | 周于希免费高清在线观看| 亚洲精品美女在线观看播放| 亚洲午夜18毛片在线看| 久久免费视频色| 午夜两性免费视频| 国产精品久久占久久| 91传媒视频在线观看| 久久国产精品黑丝| 日韩精品免费在线| 美女黄页在线观看| 亚洲乱码国产乱码精品精的特点| 美女又黄又免费的视频| 亚洲精品影院在线观看| 欧美一区观看| 亚洲欧洲日韩精品在线| 久久久久久久久中文字幕| 欧美91精品久久久久国产性生爱| 欧美亚洲免费在线一区| 色婷婷在线视频观看| caoporn国产一区二区| 少妇人妻互换不带套| 亚洲精品99| 黑人另类av| 精品久久毛片| 欧美激情精品在线| 免费在线视频你懂得| 91麻豆精品国产91久久久久| 日本少妇在线观看| 国产精品理论在线观看| 蜜桃色一区二区三区| 日韩激情一二三区| 美国av在线播放| 亚洲精品亚洲人成在线| 91网站在线免费观看| 中文一区一区三区高中清不卡免费| 在线观看国产欧美| 婷婷五月综合激情| 在线91免费看| 五月天婷婷导航| 亚洲一区在线观看免费观看电影高清 | 一级二级三级视频| 午夜精品国产更新| 成人信息集中地| 97精品国产97久久久久久久久久久久| 污网站免费在线| 国产精品嫩草99av在线| 特色特色大片在线| 国产一区二区三区四区五区| 成人高清在线观看| 高清一区二区中文字幕| 国产999视频| 丰满大乳少妇在线观看网站| 久久婷婷国产麻豆91天堂| 伦理片一区二区三区| 精品捆绑美女sm三区| 一级做a爱片久久毛片| 日韩欧美有码在线| 黄色一级片免费看| 一区二区三区日韩精品| 激情五月深爱五月| 久久先锋影音av鲁色资源网| 日韩www视频| 国产成a人无v码亚洲福利| 蜜臀av免费观看| 玖玖在线精品| 免费观看日韩毛片| 日韩午夜av| 欧洲精品一区二区三区久久| 欧美ab在线视频| 9999在线观看| 日韩一区二区在线| 日韩久久在线| 女人丝袜激情亚洲| 欧美极品jizzhd欧美| 老司机凹凸av亚洲导航| 成人综合av网| 高清精品xnxxcom| 国产伦精品一区二区| 66精品视频在线观看| 91在线看网站| 8x国产一区二区三区精品推荐| 亚洲最大的av网站| 精品国产18久久久久久二百| 亚洲字幕一区二区| 日韩欧美中文字幕在线视频| 成人午夜一级二级三级| 91成人精品观看| 亚洲专区国产精品| 最新国产精品精品视频| 国产区一区二区| 无码少妇一区二区三区| 日本不卡一区二区三区在线观看| 国产一区二区三区91| 亚欧洲精品在线视频免费观看| 日韩黄色大片| 在线观看污视频| 韩国av一区| 无码人妻精品一区二区三区在线| 久久午夜影视| 亚洲国产成人va在线观看麻豆| 激情综合网av| 亚洲少妇中文字幕| 久久综合九色综合97婷婷女人| xxxxx在线观看| 中文字幕中文字幕在线一区 | 波多野结衣加勒比| 久久亚洲一级片| 日韩在线视频免费看| 亚洲精品福利视频网站| 国产一级做a爰片在线看免费| 舔着乳尖日韩一区| 最新国产中文字幕| 日韩三级精品电影久久久| 手机av在线免费观看| 亚洲夜晚福利在线观看| 国产美女在线观看| 欧美一区在线直播| 亚洲资源在线| 精品一区2区三区| 日韩在线二区| 僵尸世界大战2 在线播放| 视频一区免费在线观看| 国产精品久久久久久久99| 9l国产精品久久久久麻豆| 手机看片国产日韩| 亚洲午夜久久久久久久久电影网| 国产精品suv一区| 日韩一级免费一区| 黄色在线小视频| 欧美激情亚洲自拍| 国产69精品久久| 国产综合欧美在线看| 91亚洲国产成人久久精品| 水蜜桃色314在线观看| 日韩av一级电影| 亚洲狠狠婷婷综合久久久久图片| 日韩一区在线播放| yjizz国产| 日韩欧美高清dvd碟片| 黄色网址在线播放| 久久免费少妇高潮久久精品99| 免费成人毛片| 欧美高清性xxxxhd| 在线成人黄色| 在线一区二区不卡| 久久久久久电影| 日韩av在线播| 欧美一区二区三区在线看| 第九色区av在线| 欧美亚洲国产另类| 99久久人爽人人添人人澡| 永久久久久久| 免费精品视频最新在线| 人妻av无码一区二区三区| 亚洲成人免费观看| 精品乱子伦一区二区| 日韩性xxxx爱| 亚洲精品一区三区三区在线观看| 久久99精品久久久水蜜桃| 伊人久久大香线蕉精品组织观看| 一级在线免费视频| 国产亚洲制服色| 中文字幕在线看人| 亚洲激情视频在线观看| 丁香花视频在线观看| 成人综合av网| 欧美日韩免费观看一区=区三区| 在线黄色免费看| 国产精品国产三级国产三级人妇| 樱花视频在线免费观看| 国产视频综合在线| 2020国产在线| 国产精品视频福利| 亚洲国产一区二区三区a毛片| 亚洲丝袜在线观看| 亚洲精品综合在线| 99热这里是精品| 欧美成人精品在线视频| 视频一区日韩精品| 久久综合久久久久| 不卡一区二区三区四区| 亚洲性图第一页| 亚洲黄网站在线观看| av中文字幕免费在线观看| 久久精品国产欧美激情| 久久av偷拍| 日本手机在线视频| 97久久超碰精品国产| 久久中文字幕免费| 亚洲欧美激情四射在线日| 第四色男人最爱上成人网| 午夜精品一区二区三区在线观看| 六月丁香综合在线视频| 美女福利视频网| 91精品国产综合久久久久久久久久 | 亚洲人成在线电影| 国产a亚洲精品| 在线视频91| 成人手机电影网| 国产精品久久久久久99| 国产一区二区黄| 91嫩草国产线观看亚洲一区二区| 久操手机在线视频| a美女胸又www黄视频久久| 在线观看 亚洲| www.欧美精品一二三区| 超碰cao国产精品一区二区| 国产欧美在线一区| 国产精品美女视频| 午夜久久久久久久久久| 欧美亚洲伦理www| 日韩啪啪电影网| 精品视频站长推荐| 欧美熟乱第一页| 天使と恶魔の榨精在线播放| 欧美精品久久久| 精品中文字幕一区二区| 久久久久久久久久91| 亚洲欧美另类中文字幕| 57pao成人永久免费| 国产超级av在线| 中文字幕一区二区三区在线播放 | 国产成人在线免费看| 欧美国产欧美综合| 亚洲精品无amm毛片| 国产成人aa精品一区在线播放| 中文av一区| 一道本在线观看| 欧美r级电影在线观看| 免费污视频在线一区|