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

Sentry 監控 - Distributed Tracing 分布式跟蹤

安全 應用安全 分布式
分布式跟蹤(Distributed tracing)通過捕獲軟件系統之間的交互來提供相關錯誤和事務的連接視圖。通過跟蹤,Sentry 可以跟蹤您的軟件性能并顯示跨多個系統的錯誤影響。

[[427023]]

本文轉載自微信公眾號「黑客下午茶」,作者為少。轉載本文請聯系黑客下午茶公眾號。

目錄

  • 什么是跟蹤?
    • 為什么要跟蹤?
    • 跟蹤(Traces)、事務(Transactions和跨度(Spans)
    • 示例:調查緩慢的頁面加載
    • 更多示例
    • 跟蹤數據模型
    • 更多信息
  • 數據采樣
    • 跟蹤中的一致性

分布式跟蹤(Distributed tracing)通過捕獲軟件系統之間的交互來提供相關錯誤和事務的連接視圖。通過跟蹤,Sentry 可以跟蹤您的軟件性能并顯示跨多個系統的錯誤影響。通過服務追溯問題將您的前端連接到您的后端。

  • https://docs.sentry.io/product/sentry-basics/tracing/distributed-tracing/

啟用性能監控以擴充您現有的錯誤數據,跟蹤從前端到后端的交互。通過跟蹤,Sentry 可以跟蹤您的軟件性能,測量吞吐量和延遲等指標,并顯示跨多個系統的錯誤影響。跟蹤使 Sentry 成為更完整的監控解決方案,幫助您更快地診斷問題并衡量應用程序的整體健康狀況。Sentry 中的跟蹤提供了以下見解:

  • 特定錯誤事件或 issue 發生了什么
  • 導致應用程序出現瓶頸或延遲 issue 的條件
  • 消耗時間最多的端點或操作

什么是跟蹤?

首先,請注意跟蹤不是什么:跟蹤不是分析。盡管分析和跟蹤的目標有相當多的重疊,雖然它們都可用于診斷應用程序中的問題,但它們在測量內容和數據記錄方式方面有所不同。

profiler 可以測量應用程序操作的多個方面:執行的指令數、各種進程使用的內存量、給定函數調用所花費的時間量等等。生成的 profile 是這些測量值的統計匯總。

  • https://en.wikipedia.org/wiki/Profiling_(computer_programming)

另一方面,tracing tool 關注發生了什么(以及何時),而不是發生了多少次或花費了多長時間。結果跟蹤(resulting trace)是在程序執行期間發生的事件日志,通常跨多個系統。盡管跟蹤最常見 - 或者,就 Sentry 的跟蹤而言,總是 - 包括時間戳(timestamps),允許計算持續時間,但測量性能并不是它們的唯一目的。它們還可以顯示互連系統交互的方式,以及一個系統中的問題可能導致另一個系統出現問題的方式。

  • https://en.wikipedia.org/wiki/Tracing_(software)

為什么要跟蹤?

應用程序通常由互連的組件組成,這些組件也稱為服務。作為一個例子,讓我們看一個現代 Web 應用程序,它由以下組件組成,由網絡邊界分隔:

  • Frontend (Single-Page Application) 前端
  • Backend (REST API) 后端
  • Task Queue 任務隊列
  • Database Server 數據庫服務器
  • Cron Job Scheduler 定時任務調度器

這些組件中的每一個都可以在不同的平臺上用不同的語言編寫。每個都可以使用 Sentry SDK 單獨檢測以捕獲錯誤數據或崩潰報告,但該檢測不能提供完整的圖片,因為每個部分都是單獨考慮的。跟蹤允許您將所有數據聯系在一起。

在我們的示例 Web 應用程序中,跟蹤意味著能夠跟蹤從前端到后端和后端的請求,從請求創建的任何后臺任務(background tasks)或通知作業(notification jobs)中提取數據。這不僅可以讓您關聯 Sentry 錯誤報告,查看一個服務中的錯誤如何傳播到另一個服務,而且還可以讓您更深入地了解哪些服務可能對應用程序的整體性能產生負面影響。

在學習如何在您的應用程序中啟用跟蹤之前,了解一些關鍵術語以及它們之間的關系會有所幫助。

跟蹤(Traces)、事務(Transactions和跨度(Spans)

trace 表示您要測量或跟蹤的整個操作的記錄 - 例如頁面加載、用戶在應用程序中完成某些操作的實例或后端的 cron job。當跟蹤包括多個服務中的工作時,例如上面列出的服務,它被稱為分布式跟蹤,因為跟蹤分布在這些服務中。

每個 trace 由一個或多個稱為 transactions 的樹狀結構組成,其節點稱為 spans。在大多數情況下,每個 transaction 代表被調用服務的單個實例,并且該 transaction 中的每個 span 代表該服務執行單個工作單元,無論是調用該服務中的函數還是調用不同的服務。這是一個示例跟蹤,分解為事務(transactions)和跨度(spans):

由于事務(transaction)具有樹結構,因此頂級跨度(top-level spans)本身可以分解為更小的跨度(smaller spans),這反映了一個函數可能調用許多其他更小的函數的方式;這是使用父子隱喻來表達的,因此每個跨度都可能是多個其他子跨度的父跨度。此外,由于所有樹都必須有一個根,因此每個事務中的一個跨度始終代表事務本身,而事務中的所有其他跨度都從該根跨度下降。這是上圖中事務之一的放大視圖:

為了使所有這些更具體,讓我們再次考慮我們的示例 Web 應用程序。

示例:調查緩慢的頁面加載

假設您的 Web 應用程序加載緩慢,您想知道原因。要使您的應用程序首先進入可用狀態,必須發生很多事情:對后端的多個請求,可能是一些工作 - 包括對數據庫或外部 API 的調用 - 在返回響應之前完成,并由瀏覽器處理以呈現所有 將返回的數據轉化為對用戶有意義的內容。那么這個過程的哪一部分會減慢速度?

假設在這個簡化的示例中,當用戶在瀏覽器中加載應用程序時,每個服務中都會發生以下情況:

  • Browser(瀏覽器)
    • HTML、CSS 和 JavaScript 各 1 個請求
    • 1 次渲染任務,觸發 2 次 JSON 數據請求 ^
  • Backend(后端)
    • 3 個提供靜態文件(HTML、CSS 和 JS)的請求
    • 2 個 JSON 數據請求 - 1 個需要調用數據庫 - 1 個需要調用外部 API 并在將結果返回到前端之前處理結果^
  • Database Server(數據庫服務器)
    • 1 查詢以檢查身份驗證
    • 1 查詢獲取數據
    • 1 個請求需要 2 次查詢

注意:外部 API 并未準確列出,因為它是外部的,因此您看不到它的內部。

在此示例中,整個頁面加載過程(包括上述所有過程)由單個 trace 表示。該跟蹤將由以下事務(transactions)組成:

  • 1 個瀏覽器事務(用于頁面加載)
  • 5 個后端事務(每個請求一個)
  • 1 個數據庫服務器事務(用于單個 DB 請求)

每個事務將被分解為跨度(spans)如下:

  • 瀏覽器頁面加載事務:7 個 span
    • 2 個子 span,每個 JSON 請求一個
    • 1 個根 span 代表整個頁面加載
    • HTML、CSS 和 JS 請求各 1 個(共 3 個)
    • 渲染任務的 1 個 span,它本身包含

讓我們在這里暫停一下以說明一個重點:此處列出的瀏覽器事務中的一些(盡管不是全部)跨度與前面列出的后端事務有直接對應關系。具體來說,瀏覽器事務中的每個請求跨度對應于后端中的一個單獨的請求事務。在這種情況下,當一個服務中的跨度引起后續服務中的事務時,我們將原始跨度稱為事務及其根跨度的父跨度。在下圖中,波浪線代表這種父子關系。

在我們的示例中,除了初始瀏覽器頁面加載事務之外的每個事務都是另一個服務中一個跨度的子項,這意味著除了瀏覽器事務根之外的每個根跨度都有一個父跨度(盡管在不同的服務中)。

在 fully-instrumented 的系統(其中每個服務都啟用了跟蹤的系統)中,這種模式將始終適用。唯一的無父 span 將是初始 transaction 的根;每隔一個 span 都會有一個父級。此外,parents 和 children 將始終生活在同一個服務中,除非在子 span 是子 transaction 的根的情況下,在這種情況下,父 span 將在調用服務中,而子 transaction/child 根 span 將在被調用服務中。

換句話說,一個 fully-instrumented 的系統創建一個跟蹤,它本身就是一個連接的樹——每個事務都是一個子樹——在這棵樹中,子樹/事務之間的邊界正是服務之間的邊界。上圖顯示了我們示例的完整跟蹤樹的一個分支。

現在,為了完整起見,回到我們的 spans:

  • 后端 HTML/CSS/JS 請求事務:每個 1 個 span
    • 代表整個請求的 1 個根跨度(瀏覽器跨度的子項)^
  • 帶有數據庫調用事務的后端請求:2 個 span
    • 1 個表示整個請求的根跨度(瀏覽器跨度的子項)
    • 1 個跨度用于查詢數據庫(數據庫服務器事務的父級)^
  • 帶有 API 調用事務的后端請求:3 個 span
    • 1 個表示整個請求的根跨度(瀏覽器跨度的子項)
    • API 請求的 1 個跨度(與數據庫調用不同,不是父跨度,因為 API 是外部的)
    • 1 個跨度用于處理 API 數據^
  • 數據庫服務器請求事務:3 個 span
    • 1 個代表整個請求的根跨度(上面后端跨度的子項)
    • 1 跨度用于身份驗證查詢
    • 1 個跨度用于查詢檢索數據的

總結一下這個例子:在檢測了所有服務之后,您可能會發現——出于某種原因——是數據庫服務器中的身份驗證查詢(auth query)導致了速度變慢,占了完成整個頁面加載過程所需時間的一半以上。跟蹤無法告訴你為什么會發生這種情況,但至少現在你知道該去哪里找了!

更多示例

本節包含更多跟蹤示例,分為事務(transaction)和跨度(span)。

衡量特定的用戶動作

如果您的應用程序涉及電子商務,您可能希望測量從用戶單擊“提交訂單(Submit Order)”到訂單確認出現之間的時間,包括跟蹤向支付處理器提交費用和發送訂單確認電子郵件。整個過程是一個跟蹤,通常您會有事務 (T) 和跨度 (S) 用于:

  • 瀏覽器全過程(T 和根跨度 S)
    • 對后端的 XHR 請求* (S)
    • 渲染確認 screen(S)^
  • 您的后端對該請求的處理(T 和根跨度 S)
    • 計算總數的函數(Function)調用 (S)
    • 存儲訂單數據庫(DB)調用* (S)
    • 對支付處理器的 API 調用 (S)
    • 電子郵件確認排隊* (S) ^
  • 您的數據庫更新客戶訂單歷史的工作(T 和根跨度 S)
    • 單個 SQL 查詢 (S) ^
  • 發送電子郵件的排隊任務(T 和根跨度 S)
    • 用于填充電子郵件模板的函數調用 (S)
    • 對電子郵件發送服務的 API 調用 (S)

注意:帶星號的跨度表示作為后續事務(及其根跨度)的父跨度。

監控后臺進程

如果您的后端定期輪詢外部服務的數據,對其進行處理、緩存,然后將其轉發給內部服務,則發生這種情況的每個實例都是一個跟蹤,您通常會有以下事務 (T) 和跨度 (S):

  • 完成整個過程的 cron job(T 和根跨度 S)
    • API 調用外部服務 (S)
    • Processing 函數 (S)
    • 調用緩存服務* (S)
    • API 調用內部服務* (S) ^
  • 在您的緩存服務中完成的工作(T 和根跨度 S)
    • 檢查現有數據的緩存 (S)
    • 在緩存中存儲新數據 (S) ^
  • 您的內部服務對請求的處理(T 和根跨度 S)
    • 服務可能為處理請求而做的任何事情 (S)

注意:帶星號的跨度表示作為后續事務(及其根跨度)的父跨度。

跟蹤數據模型

“給我看你的流程圖而隱藏你的表,我仍然莫名其妙。如果給我看你的表,那么我將不再需要你的流程圖,因為它們太明顯了。”

Fred Brooks, 《The Mythical Man-Month》(人月神話)

雖然這個理論很有趣,但最終任何數據結構都是由它包含的數據類型定義的,數據結構之間的關系由它們之間的鏈接如何記錄來定義。跟蹤、事務和跨度也不例外。

Traces(跟蹤)

Traces 本身并不是一個實體。相反,跟蹤被定義為共享一個 trace_id 值的所有事務的集合。

Transactions(事務)

Transactions 與其根跨度共享其大部分屬性(開始和結束時間、標簽等),因此下面描述的跨度的相同選項在事務中可用,并且在任一位置設置它們是等效的。

Transactions 還有一個不包含在跨度中的附加屬性,稱為 transaction_name,它在 UI 中用于標識 transaction。transaction_name 值的常見示例包括后端請求事務的端點路徑(如 /store/checkout/ 或 api/v2/users//)、cron job 事務的任務名稱(如 data.cleanup.delete_inactive_users)和 URL( 像 https://docs.sentry.io/performance-monitoring/distributed-tracing/) 用于頁面加載事務。

Spans(跨度)

transaction 中的大部分數據駐留在事務包含的單個 span 中。span 數據包括:

  • parent_span_id: 將 span 與其父 span 聯系起來
  • op: 標識跨度正在測量的操作類型或類別的短字符串
  • start_timestamp: span 打開時
  • end_timestamp: span 關閉時
  • description: span 操作的較長描述,唯一標識 span,但跨 span 實例保持一致(可選)
  • status: 指示操作狀態的短 code(可選)
  • tags: key-value 對保存有關跨度的附加數據(可選)
  • data: 關于 span 的任意結構的附加數據(可選)

op 和 description 屬性一起使用的示例是 op: sql.query 和 description: SELECT * FROM users WHERE last_active < %s。 status 屬性通常用于指示 span 操作的成功或失敗,或者在 HTTP 請求的情況下用于 response code。最后,tags 和 data 允許您將更多上下文信息附加到 span,例如 function: middleware.auth.is_authenticated 用于函數調用或 request: {url: ..., headers: ... , body: ...} 用于 HTTP 請求。

更多信息

關于跟蹤、事務和跨度以及它們相互關聯的方式的一些更重要的點:

Trace Duration(跟蹤持續時間)

因為 trace 只是 transaction 的集合,所以 trace 沒有自己的開始和結束時間。相反,trace 在其最早的 transaction 開始時開始,并在其最新的 transaction 結束時結束。因此,您無法直接明確地開始或結束 trace。相反,您通過在該 trace 中創建第一個 transaction 來創建 trace,并通過完成它包含的所有 transaction 來完成 trace。

Async Transactions(異步事務)

由于異步進程的可能性,子事務(child transaction)可能比包含其父跨度(parent span)的事務的壽命長很多數量級。例如,如果后端 API 調用啟動了一個長時間運行的處理任務,然后立即返回響應,則后端事務將在異步任務事務完成之前很久完成(并且其數據將被發送到 Sentry)。異步性還意味著 transaction 發送到(和接收)Sentry 的順序與創建它們的順序沒有任何關系。(相比之下,同一 trace 中 transaction 的接收順序與完成順序相關,但由于傳輸時間的可變性等因素,相關性遠非完美。)

Orphan Transactions(孤兒事務)

理論上,在一個 fully instrumented 的系統中,每個 trace 應該只包含一個 transaction 和一個 span(transaction的根),沒有父項,即原始服務中的 transaction。但是,在實踐中,您可能不會在每一項服務中都啟用 trace,或者檢測的服務可能由于網絡中斷或其他不可預見的情況而無法報告 transaction。發生這種情況時,您可能會在跟蹤層次結構中看到間隙。具體來說,您可能會在 span 的中途看到其父 span 尚未記錄為任何已知 transaction 的一部分的 transaction。這種非發起、無父 transaction 被稱為孤兒事務。

Nested Spans(嵌套跨度)

盡管我們上面的示例在其層次結構中有四個級別(跟蹤trace、事務transaction、跨度span、子跨度child span),但跨度嵌套的深度沒有設置限制。但是,存在實際限制:發送到 Sentry 的事務有效負載具有最大允許大小,并且與任何類型的日志記錄一樣,需要在數據的粒度與其可用性之間取得平衡。

Zero-duration Spans(零持續時間跨度)

跨度可能具有相同的開始時間和結束時間,因此被記錄為不占用時間。這可能是因為 span 被用作標記(例如在瀏覽器的 Performance API 中完成的),或者因為操作花費的時間少于測量分辨率(這將因服務而異)。

https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark

Clock Skew(時鐘偏移)

如果您從多臺機器收集 transaction,您可能會遇到 clock skew,其中一個 transaction 中的時間戳與另一個 transaction 中的時間戳不一致。例如,如果您的后端進行數據庫調用,則后端事務在邏輯上應該在數據庫事務之前開始。但是,如果每臺機器(分別托管后端和數據庫的機器)上的系統時間未同步到通用標準,則情況可能并非如此。排序也有可能是正確的,但是兩個記錄的時間范圍沒有以準確反映實際發生的方式排列。為了減少這種可能性,我們建議使用網絡時間協議 (NTP) 或您的云提供商的時鐘同步服務。

如何發送數據

單個 span 不會發送到 Sentry;相反,整個 transaction 作為一個單位發送。這意味著 Sentry 的服務器不會記錄任何 span 數據,直到它們所屬的 transaction 被關閉和分派。然而,反過來就不是這樣了——盡管沒有 transaction 就不能發送 span,但 transaction 仍然有效,并且會被發送,即使它們包含的唯一 span 是它們的根 span。

數據采樣

當您在跟蹤設置中啟用采樣時,您可以選擇要發送到 Sentry 的已收集交易的百分比。例如,如果您有一個每分鐘接收 1000 個請求的端點,0.25 的采樣率將導致每分鐘大約 250 個事務 (25%) 被發送到 Sentry。(這個數字是近似的,因為每個請求要么被跟蹤,要么被獨立和偽隨機地跟蹤,概率為 25%。因此,以同樣的方式,100 個公平硬幣,在翻轉時會導致大約 50 個正面,SDK 將“決定” 在大約 250 個案例中收集跟蹤。)因為您知道采樣百分比,所以您可以推斷您的總流量。

在收集跟蹤時,我們建議對您的數據進行采樣,原因有兩個。首先,雖然捕獲單個跟蹤的開銷最小,但捕獲每個頁面加載或每個 API 請求的跟蹤可能會給您的系統增加不希望的負載量。其次,啟用采樣可以讓您更好地管理發送到 Sentry 的事件數量,以便您可以根據組織的需求對其進行定制。

選擇采樣率時,目標是不要收集太多數據(鑒于上述原因),而是收集足夠的數據,以便得出有意義的結論。如果您不確定要選擇什么速率,我們建議從一個較低的值開始,并隨著您對流量模式和流量的了解逐漸增加,直到找到一個速率,使您能夠平衡性能和流量與數據準確性之間的關系。

跟蹤中的一致性

對于涉及多個事務的跟蹤,Sentry 使用 “基于頭部(head-based)” 的方法:在原始服務中做出采樣決策,然后將該決策傳遞給所有后續服務。要了解這是如何工作的,讓我們回到上面的 webapp示例。考慮兩個用戶 A 和 B,他們都在各自的瀏覽器中加載應用程序。當 A 加載應用程序時,SDK 偽隨機“決定”收集跟蹤,而當 B 加載應用程序時,SDK “決定”不收集跟蹤。當每個瀏覽器向您的后端發出請求時,它會在這些請求的標題中包含“yes, please collect transactions)”或“no, don't collect transactions this time”的決定。

當您的后端處理來自 A 瀏覽器的請求時,它會看到 “yes” 的決定,收集事務和跨度數據,并將其發送給 Sentry。此外,它在向后續服務(如您的數據庫服務器)發出的任何請求中都包含“yes”決定,這些服務同樣會收集數據,將數據發送給 Sentry,并將決定傳遞給它們調用的任何服務。通過這個過程,A的跟蹤中的所有相關事務都被收集并發送到 Sentry。

另一方面,當您的后端處理來自 B 瀏覽器的請求時,它會看到 “no” 決定,因此它不會收集和發送事務和跨度數據到 Sentry。然而,它在將決策傳播到后續服務方面做與在 A 的情況下所做的相同的事情,告訴他們也不要收集或發送數據。然后他們又告訴他們調用的任何服務不要發送數據,這樣就不會收集到來自 B 跟蹤的事務。

 

簡而言之:這種 head-based 的方法的結果是,決策在原始服務中作出一次,并傳遞給所有后續服務,要么收集給定跟蹤的所有事務,要么不收集任何事務,因此不應存在任何不完整的跟蹤。

 

責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2021-10-06 05:04:47

監控

2017-01-16 14:51:26

京東分布式服務CallGraph

2021-03-23 22:43:09

Grafana Tem分布式跟蹤開源

2018-03-13 16:42:26

分布式服務跟蹤

2011-04-01 14:54:23

zabbix漢化分布式監控

2021-06-09 09:00:00

微服務架構技術

2019-10-10 09:16:34

Zookeeper架構分布式

2023-05-29 14:07:00

Zuul網關系統

2019-06-19 15:40:06

分布式鎖RedisJava

2017-09-01 05:35:58

分布式計算存儲

2011-04-01 10:18:12

zabbix

2018-09-29 08:44:24

開源分布式系統

2018-03-02 16:11:29

Spring Clou分布式服務跟蹤

2021-06-17 14:29:39

Linkerd 分布式跟蹤Linkerd 2.1

2017-10-27 08:40:44

分布式存儲剪枝系統

2023-10-26 18:10:43

分布式并行技術系統

2020-11-24 09:36:19

分布式監控系統

2018-01-12 16:51:48

華為

2022-10-21 16:16:42

分布式系統優化

2024-03-01 09:53:34

點贊
收藏

51CTO技術棧公眾號

唐朝av高清盛宴| 色噜噜狠狠永久免费| 日本天堂在线| 免费的国产精品| 欧美激情精品久久久久久大尺度| 图片区小说区区亚洲五月| 伊人网视频在线| 极品裸体白嫩激情啪啪国产精品| 色噜噜久久综合| 麻豆md0077饥渴少妇| 日韩有码第一页| 久久国内精品自在自线400部| 精品偷拍各种wc美女嘘嘘| 亚洲77777| 国产v日韩v欧美v| 国产精品久久久久久久久久免费看| 欧美在线欧美在线| 青青青在线免费观看| 美女久久久久| 欧美成人a∨高清免费观看| 欧美大尺度做爰床戏| 欧美人与性动交α欧美精品济南到| 国产一区啦啦啦在线观看| 69久久夜色精品国产7777| 久久福利免费视频| 精品免费一区二区| 亚洲黄页网在线观看| 超碰在线免费av| 电影一区二区| 欧美日韩在线视频首页| 欧美aaa在线观看| 成a人片在线观看www视频| 99re亚洲国产精品| 99热国产免费| 国产三级视频在线播放| 日本伊人色综合网| 日韩av片电影专区| 日本在线播放视频| 国产视频亚洲| 69久久夜色精品国产69乱青草| 在哪里可以看毛片| 高潮按摩久久久久久av免费| 日韩亚洲欧美在线| 中文字幕欧美视频| 无码国模国产在线观看| 欧美高清激情brazzers| 青青草av网站| 亚洲一区二区三区四区| 一本到三区不卡视频| 国产91对白刺激露脸在线观看| av中文字幕一区二区三区| 91农村精品一区二区在线| 黄色一区三区| 手机看片福利在线观看| 99免费精品在线| 久久九九视频| 国产视频第一页在线观看| 久久免费看少妇高潮| 久久久久久99| 国产三区四区在线观看| 亚洲国产激情av| 亚洲视频精品一区| 国产原创精品视频| 一区二区在线观看不卡| 亚洲精品天堂成人片av在线播放| 国产尤物视频在线| 国产亚洲午夜高清国产拍精品| 亚洲www视频| 国产黄a三级三级三级| 国产一区二区三区免费在线观看| 欧洲精品在线视频| 久久久精品毛片| 久久精品国产免费看久久精品| 午夜精品久久久99热福利| 国产91av视频| 日日夜夜精品免费视频| 国产剧情久久久久久| 精品人妻久久久久一区二区三区| 免播放器亚洲一区| 91在线中文字幕| 无码国产精品一区二区免费16| 国产在线精品视频| 国产精品久久亚洲7777| 日韩a在线观看| 国产精品国模大尺度视频| 日韩视频一二三| 密臀av在线播放| 欧美日韩一区二区欧美激情| 性xxxxxxxxx| 国产精品美女久久久久久不卡 | 国产九色91回来了| 蜜臀久久99精品久久久画质超高清 | 99久久99| 欧美男男激情freegay| 综合色天天鬼久久鬼色| 久艹在线免费观看| 国产一区二区主播在线| 精品精品欲导航| 免费黄色在线网址| 精品1区2区3区4区| 国产精品欧美激情| 天堂网在线资源| 亚洲欧洲www| 国产福利视频在线播放| 久久在线观看| 亚洲一区二区久久| 日本一区二区三区免费视频| 蜜臀久久久久久久| 玖玖玖精品中文字幕| 麻豆影视在线观看_| 精品久久久久久国产91| 亚洲精品免费一区亚洲精品免费精品一区| www.成人爱| 欧美一区二区精美| 久久久久久亚洲中文字幕无码| 日韩中文av| 美女福利视频一区| 中文字幕第315页| xnxx国产精品| 日韩精品视频在线观看视频| 电影一区二区| 亚洲女成人图区| 久久精品国产亚洲av高清色欲| 亚洲天堂成人| 91久热免费在线视频| 国产三级视频在线| 欧美日韩国产一区二区| 精品国产午夜福利在线观看| 精品一区二区三区中文字幕老牛| 国产亚洲美女精品久久久| 亚洲国产综合久久| 国产乱子轮精品视频| 亚洲福利av在线| 不卡av播放| 日韩国产欧美区| 国产无遮挡又黄又爽又色| 国产精品亚洲第一 | 无码日韩精品一区二区免费| 欧美成人三级视频网站| 一区二区视频免费| 久久久99精品久久| 精品国产成人av在线免| 日韩av字幕| 97人洗澡人人免费公开视频碰碰碰| 啦啦啦免费高清视频在线观看| 久久久久91| 欧美精品一区二区三区在线四季| 99免在线观看免费视频高清| 色又黄又爽网站www久久| 久久久精品人妻无码专区| 亚洲最黄网站| 精品久久久久亚洲| 午夜伦理福利在线| 国产丝袜视频一区| 国产一级免费视频| 国产婷婷色一区二区三区在线| 蜜桃传媒视频第一区入口在线看| www.亚洲黄色| 亚洲国产一区二区a毛片| 911亚洲精选| 日韩网站在线| 欧美另类网站| 福利视频亚洲| 久久精品国产成人| 亚洲国产精品国自产拍久久| 亚洲福利电影网| 怡红院一区二区| 亚洲综合不卡| 亚洲精品国产精品国自产观看| 成人超碰在线| 亚洲国产精品久久精品怡红院| 久艹在线观看视频| 国产成人av福利| 国模无码视频一区二区三区| 午夜精品福利影院| 国产精品丝袜白浆摸在线| 黄色网页在线观看| 日韩av网站大全| 天天干天天插天天射| 一区在线中文字幕| 怡红院一区二区| 日韩高清欧美激情| 在线观看三级网站| 欧美调教视频| 国产在线精品播放| av电影院在线看| 中文字幕欧美日韩精品| 亚洲av永久纯肉无码精品动漫| 国产精品久久久久久久浪潮网站| 国产精品后入内射日本在线观看| 日本在线视频一区二区三区| 国模极品一区二区三区| 青青青草网站免费视频在线观看| 亚洲a一区二区| 1024手机在线观看你懂的| 国产成人综合在线观看| 能在线观看的av| 91精品精品| 久久99导航| 精品国产亚洲一区二区三区在线| 日韩中文字幕免费| 午夜福利理论片在线观看| 欧美午夜一区二区三区免费大片| 久久av无码精品人妻系列试探| 国产精品久久久免费| 亚洲视频在线二区| 亚洲超碰在线观看| 国产精品视频午夜| 国产精品论坛| 九九精品视频在线| 国产女主播在线直播| 精品久久久久av影院| 91亚洲国产成人精品一区| 狠狠色香婷婷久久亚洲精品| 三级影片在线看| 国产亚洲欧美激情| 国产精品无码永久免费不卡| 国产一区二区精品久久99| av免费网站观看| 亚洲日本视频| www.一区二区.com| 久久久久久久久久久妇女| 欧美一区二区福利| 欧美sss在线视频| 亚洲一区二区三区xxx视频| 黄色精品视频| 国产九九在线观看| 日韩午夜免费视频| 日本福利视频在线观看| 日韩dvd碟片| 欧美高清性xxxxhd| 国产精品45p| 成人午夜电影免费在线观看| 欧美天堂一区二区| 国产精品女人久久久久久| 欧美天堂视频| 青草青草久热精品视频在线网站| 欧美熟妇交换久久久久久分类| 亚洲高清免费观看高清完整版在线观看| 亚洲av毛片在线观看| 麻豆精品久久久| 日日摸天天爽天天爽视频| 中国女人久久久| 中文字幕无码精品亚洲35| 红杏aⅴ成人免费视频| 国产精品亚洲片夜色在线| 欧美黄色网页| 国产成人激情视频| 欧美日韩不卡| 国产精品白嫩美女在线观看| 三上悠亚亚洲一区| 国产精品国产福利国产秒拍| 视频在线日韩| 国产精品永久免费在线| 91大神在线观看线路一区| 国产精品免费看久久久香蕉| 日韩在线免费| 国产主播欧美精品| 91精品一久久香蕉国产线看观看| 久久久精品久久| 欧美尤物美女在线| 久久视频在线视频| 国产视频在线播放| 九九久久国产精品| sm在线观看| 69久久夜色精品国产69| 日韩欧美看国产| 国产精品高潮粉嫩av| 国产成年精品| 不卡一区二区三区视频| 国产伦乱精品| 秋霞久久久久久一区二区| 国产探花在线精品一区二区| 日韩亚洲视频在线| 婷婷亚洲最大| 91动漫在线看| 日韩和的一区二区| 亚洲精品国产久| 成a人片国产精品| 永久免费毛片在线观看| 亚洲人亚洲人成电影网站色| www.av视频在线观看| 色噜噜久久综合| 精品人妻一区二区三区蜜桃| 亚洲黄页网在线观看| 91在线网址| 欧美激情啊啊啊| 美女福利一区二区| 成人免费大片黄在线播放| 成人线上播放| 污视频在线免费观看一区二区三区 | 久久av偷拍| 国产精品18久久久| 91亚色免费| 猫咪成人在线观看| 亚洲精品视频一区二区三区| 中文字幕一区二区三区久久网站| 国产精品对白一区二区三区| 狠狠一区二区三区| 亚洲免费不卡| 日韩午夜av| www.成人黄色| 久久久精品国产99久久精品芒果 | 国产一级片久久| 在线观看免费一区| 男人的天堂a在线| 色老头一区二区三区在线观看| 国产美女性感在线观看懂色av | 欧美大喷水吹潮合集在线观看| 国内精品第一页| 性欧美13一14内谢| 亚洲一区二区三区自拍| 少妇久久久久久久| 精品国产一区二区国模嫣然| 99青草视频在线播放视| 91精品国产91久久久久久吃药| av丝袜在线| 成人免费观看a| 精品无人区麻豆乱码久久久| 男人日女人下面视频| 国产精品亚洲一区二区三区在线 | 日本精品一区二区三区四区| 国产精品一区二区不卡| 日韩av片在线免费观看| 欧美性xxxx18| 欧美 日韩 国产 成人 在线 91 | 免费在线黄色电影| 欧美肥老妇视频| 99综合99| 一区二区三区久久网| 三级影片在线观看欧美日韩一区二区| 日韩有码免费视频| 成人aaaa免费全部观看| 免费无码毛片一区二区app| 欧美精品第1页| 国产高清视频在线| 国产精品mp4| 国产欧美日韩精品一区二区免费| 正在播放一区| 外国精品视频在线观看| 国产亚洲欧美另类中文| videos性欧美另类高清| 精品久久精品久久| 亚洲黄页一区| 成人资源av| 国产人成网在线播放va免费| 午夜精品美女自拍福到在线| 涩涩屋成人免费视频软件| www国产免费| 国产福利精品一区二区| 欧美爱爱小视频| 日韩欧美的一区二区| 国内高清免费在线视频| 国产精品久久久久久久免费大片 | 欧美大香线蕉线伊人久久| 精品91在线| 少妇被狂c下部羞羞漫画| 午夜久久久影院| 欧美偷拍视频| 国产精品久久久久av免费| 日产午夜精品一线二线三线| 在线观看免费视频高清游戏推荐| 粉嫩蜜臀av国产精品网站| 精品少妇爆乳无码av无码专区| 五月天激情综合| 国产美女www爽爽爽| 中文字幕亚洲综合久久筱田步美| 91探花在线观看| 乱一区二区三区在线播放| 久久午夜影视| 日本一级片免费| 欧美va在线播放| 亚洲性受xxx喷奶水| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 亚洲国产精品一区| 国产色视频一区二区三区qq号| 亚洲欧美日韩国产综合| 不卡的日韩av| 午夜精品理论片| 日韩黄色大片| 少妇精品无码一区二区| 狠狠色狠狠色综合日日五| 成人在线播放视频| 91影院未满十八岁禁止入内| 中文日韩在线| 成年人视频软件| 欧美精品一区二区三区四区| 亚洲欧洲高清| 日韩精品一区二区三区电影| 成人免费观看av| 中文字幕理论片| 久久久久久久成人| 日韩欧美高清在线播放| 亚洲熟女乱综合一区二区| 色婷婷亚洲精品| 性网站在线观看| 天堂√在线观看一区二区| 丰满少妇久久久久久久| 国产第一页在线观看| 九九视频直播综合网|