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

OpenTelemetry 實戰:從零實現應用指標監控

開發 前端
metrics 的使用相對于 trace 更簡單一些,不需要理解復雜的 context、span 等概念,只需要搞清楚有哪幾種 metrics 類型,分別應用在哪些不同的場景即可。

前言

在上一篇文章:OpenTelemetry 實戰:從零實現分布式鏈路追蹤講解了鏈路相關的實戰,本次我們繼續跟進如何使用 OpenTelemetry 集成 metrics 監控。

建議對指標監控不太熟的朋友可以先查看這篇前菜文章:從 Prometheus 到 OpenTelemetry:指標監控的演進與實踐

名稱

作用

語言

版本

java-demo

發送 gRPC 請求的客戶端

Java

opentelemetry-agent: 2.4.0/SpringBoot: 2.7.14

k8s-combat

提供 gRPC 服務的服務端

Golang

go.opentelemetry.io/otel: 1.28/ Go: 1.22

Jaeger

trace 存儲的服務端以及 TraceUI 展示

Golang

jaegertracing/all-in-one:1.56

opentelemetry-collector-contrib

OpenTelemetry 的 collector 服務端,用于收集 trace/metrics/logs 然后寫入到遠端存儲

Golang

otel/opentelemetry-collector-contrib:0.98.0

Prometheus

作為 metrics 的存儲和展示組件,也可以用 VictoriaMetrics 等兼容 Prometheus 的存儲替代。

Golang

quay.io/prometheus/prometheus:v2.49.1





快速開始

以上是加入 metrics 之后的流程圖,在原有的基礎上會新增一個 Prometheus 組件,collector 會將 metrics 指標數據通過遠程的 remote write 的方式寫入到 Prometheus 中。

Prometheus 為了能兼容 OpenTelemetry 寫入過來的數據,需要開啟相關特性才可以。

如果是 docker 啟動的話需要傳入相關參數:

docker run  -d -p 9292:9090 --name prometheus \
-v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
quay.io/prometheus/prometheus:v2.49.1 \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.console.templates=/etc/prometheus/consoles \
--enable-feature=exemplar-storage \
--enable-feature=otlp-write-receiver

--enable-feature=otlp-write-receiver 最主要的就是這個參數,用于開啟接收 OTLP 格式的數據。

但使用這個 Push 特性就會喪失掉 Prometheus 的許多 Pull 特性,比如服務發現,定時抓取等,不過也還好,Push 和 Pull 可以同時使用,原本使用 Pull 抓取的組件依然不受影響。

修改 OpenTelemetry-Collector

接著我們需要修改下 Collector 的配置:

exporters:
  debug:
  otlp:
    endpoint: "jaeger:4317"
    tls:
      insecure: true
  otlphttp/prometheus:
    endpoint: http://prometheus:9292/api/v1/otlp
    tls:
      insecure: true      

processors:
  batch:

service:
  pipelines:
    traces:
      receivers:
      - otlp
      processors: [batch]
      exporters:
      - otlp
      - debug        
    metrics:
      exporters:
      - otlphttp/prometheus
      - debug
      processors:
      - batch
      receivers:
      - otlp

這里我們在 exporter 中新增了一個 otlphttp/prometheus 的節點,用于指定導出 prometheus 的 endpoint 地址。

同時我們還需要在 server.metrics.exporters 中配置相同的 key: otlphttp/prometheus。

需要注意的是這里我們一定得是配置在 metrics.exporters 這個節點下,如果配置在 traces.exporters 下時,相當于是告訴 collector 講 trace 的數據導出到 otlphttp/prometheus.endpoint 這個 endpoint 里了。

所以重點是需要理解這里的配對關系。

運行效果

這樣我們只需要將應用啟動之后就可以在 Prometheus 中查詢到應用上報的指標了。

java -javaagent:opentelemetry-javaagent-2.4.0-SNAPSHOT.jar \
-Dotel.traces.exporter=otlp \
-Dotel.metrics.exporter=otlp \
-Dotel.logs.exporter=none \
-Dotel.service.name=java-demo \
-Dotel.exporter.otlp.protocol=grpc \
-Dotel.propagators=tracecontext,baggage \
-Dotel.exporter.otlp.endpoint=http://127.0.0.1:5317 -jar target/demo-0.0.1-SNAPSHOT.jar

# Run go app
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:5317 OTEL_RESOURCE_ATTRIBUTES=service.name=k8s-combat
./k8s-combat

因為我們在 collector 中開啟了 Debug 的 exporter,所以可以看到以下日志:

2024-07-22T06:34:08.060Z info MetricsExporter {"kind": "exporter", "data_type": "metrics", "name": "debug", "resource metrics": 1, "metrics": 18, "data points": 44}

此時是可以說明指標上傳成功的。

然后我們打開 Prometheus 的地址:http://127.0.0.1:9292/graph便可以查詢到 Java 應用和 Go 應用上報的指標。

圖片圖片

OpenTelemetry 的 javaagent 會自動上報 JVM 相關的指標。

而在 Go 程序中我們還是需要顯式的配置一些埋點:

func initMeterProvider() *sdkmetric.MeterProvider {  
    ctx := context.Background()  
  
    exporter, err := otlpmetricgrpc.New(ctx)  
    if err != nil {  
       log.Printf("new otlp metric grpc exporter failed: %v", err)  
    }  
    mp := sdkmetric.NewMeterProvider(  
       sdkmetric.WithReader(sdkmetric.NewPeriodicReader(exporter)),  
       sdkmetric.WithResource(initResource()),  
    )    otel.SetMeterProvider(mp)  
    return mp  
}

mp := initMeterProvider()
defer func() {
 if err := mp.Shutdown(context.Background()); err != nil {
  log.Printf("Error shutting down meter provider: %v", err)
 }
}()

和 Tracer 類似,我們首先也得在 main 函數中調用 initMeterProvider() 函數來初始化 Meter,此時它會返回一個 sdkmetric.MeterProvider 對象。

OpenTelemetry Go 的 SDK 中已經提供了對 go runtime 的自動埋點,我們只需要調用相關函數即可:

err := runtime.Start(runtime.WithMinimumReadMemStatsInterval(time.Second))
if err != nil {
    log.Fatal(err)
}

之后我們啟動應用,在 Prometheus 中就可以看到  Go  應用上報的相關指標了。

圖片圖片

圖片圖片

runtime_uptime_milliseconds_total  Go 的運行時指標。

Prometheus 中展示指標的 UI 能力有限,通常我們都是配合 grafana 進行展示的。

圖片圖片

手動上報指標

當然除了 SDK 自動上報的指標之外,我們也可以類似于 trace 那樣手動上報一些指標;

比如我就想記錄某個函數調用的次數。

var meter =  otel.Meter("test.io/k8s/combat")  
apiCounter, err = meter.Int64Counter(  
    "api.counter",  
    metric.WithDescription("Number of API calls."),  
    metric.WithUnit("{call}"),  
)  
if err != nil {  
    log.Err(err)  
}

func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {  
    defer apiCounter.Add(ctx, 1)  
    return &pb.HelloReply{Message: fmt.Sprintf("hostname:%s, in:%s, md:%v", name, in.Name, md)}, nil  
}

只需要創建一個 Int64Counter 類型的指標,然后在需要埋點處調用它的函數 apiCounter.Add(ctx, 1) 即可。

圖片圖片

之后便可以在 Prometheus 中查到這個指標了。

除此之外 OpenTelemetry 中的 metrics 定義和 Prometheus 也是類似的,還有以下幾種類型:

  • Counter:單調遞增計數器,比如可以用來記錄訂單數、總的請求數。
  • UpDownCounter:與 Counter 類似,只不過它可以遞減。
  • Gauge:用于記錄隨時在變化的值,比如內存使用量、CPU 使用量等。
  • Histogram:通常用于記錄請求延遲、響應時間等。

在 Java 中也提供有類似的 API 可以完成自定義指標:

messageInCounter = meter    
        .counterBuilder(MESSAGE_IN_COUNTER)    
        .setUnit("{message}")    
        .setDescription("The total number of messages received for this topic.")    
        .buildObserver();

對于 Gauge 類型的數據用法如下,使用 buildWithCallback 回調函數上報數據,OpenTelemetry 會在框架層面每 30s 回調一次。

public static void registerObservers() {      
    Meter meter = MetricsRegistration.getMeter();      
      
    meter.gaugeBuilder("pulsar_producer_num_msg_send")      
            .setDescription("The number of messages published in the last interval")      
            .ofLongs()      
            .buildWithCallback(      
                    r -> recordProducerMetrics(r, ProducerStats::getNumMsgsSent));  
  
private static void recordProducerMetrics(ObservableLongMeasurement observableLongMeasurement, Function<ProducerStats, Long> getter) {      
    for (Producer producer : CollectionHelper.PRODUCER_COLLECTION.list()) {      
        ProducerStats stats = producer.getStats();      
        String topic = producer.getTopic();      
        if (topic.endsWith(RetryMessageUtil.RETRY_GROUP_TOPIC_SUFFIX)) {      
            continue;      
        }        observableLongMeasurement.record(getter.apply(stats),      
                Attributes.of(PRODUCER_NAME, producer.getProducerName(), TOPIC, topic));      
    }}

更多具體用法可以參考官方文檔鏈接:https://opentelemetry.io/docs/languages/java/instrumentation/#metrics

如果我們不想將數據通過 collector 而是直接上報到 Prometheus 中,使用 OpenTelemetry 框架也是可以實現的。

我們只需要配置下環境變量:

export OTEL_METRICS_EXPORTER=prometheus

這樣我們就可以訪問 http://127.0.0.1:9464/metrics 獲取到當前應用暴露出來的指標,此時就可以在 Prometheus 里配置好采集 job 來獲取數據。

scrape_configs:
  - job_name: "k8s-combat"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["k8s-combat:9464"]

這就是典型的 Pull 模型,而 OpenTelemetry 推薦使用的是 Push 模型,數據由 OpenTelemetry 進行采集然后推送到 Prometheus。

這兩種模式各有好處:


Pull模型

Push 模型

優點

可以在一個集中的配置里管理所有的抓取端點,也可以為每一個應用單獨配置抓取頻次等數據。

在 OpenTelemetry 的 collector中可以集中對指標做預處理之后再將過濾后的數據寫入 Prometheus,更加的靈活。

缺點

1. 預處理指標比較麻煩,所有的數據是到了 Prometheus 后再經過relabel處理后再寫入存儲。

2. 需要配置服務發現

1. 額外需要維護一個類似于 collector 這樣的指標網關的組件

比如我們是用和 Prometheus 兼容的 VictoriaMetrics 采集了 istio 的相關指標,但里面的指標太多了,我們需要刪除掉一部分。

就需要在采集任務里編寫規則:

apiVersion: operator.victoriametrics.com/v1beta1  
kind: VMPodScrape  
metadata:  
  name: isito-pod-scrape  
spec:  
  podMetricsEndpoints:  
    - scheme: http  
      scrape_interval: "30s"  
      scrapeTimeout: "30s"  
      path: /stats/prometheus  
      metricRelabelConfigs:  
        - regex: ^envoy_.*|^url\_\_\_\_.*|istio_request_bytes_sum|istio_request_bytes_count|istio_response_bytes_sum|istio_request_bytes_sum|istio_request_duration_milliseconds_sum|istio_response_bytes_count|istio_request_duration_milliseconds_count|^ostrich_apigateway.*|istio_request_messages_total|istio_response_messages_total  
          action: drop_metrics  
  namespaceSelector:  
    any: true

換成在 collector 中處理后,這些邏輯都可以全部移動到 collector 中集中處理。

總結

metrics 的使用相對于 trace 更簡單一些,不需要理解復雜的 context、span 等概念,只需要搞清楚有哪幾種 metrics 類型,分別應用在哪些不同的場景即可。

參考鏈接:

  • https://prometheus.io/docs/prometheus/latest/feature_flags/#otlp-receiver
  • https://opentelemetry.io/docs/languages/java/instrumentation/#metrics
  • https://opentelemetry.io/docs/languages/go/instrumentation/#metrics

責任編輯:武曉燕 來源: crossoverJie
相關推薦

2024-08-21 08:09:17

2024-09-04 08:09:51

2024-06-14 08:19:45

2024-04-08 08:09:10

埋點收集數據StartRocks數據存儲

2023-08-30 07:20:58

2025-02-17 07:45:29

2020-05-18 14:55:34

監控系統架構技術

2021-10-14 08:07:33

Go 應用Prometheus監控

2025-10-14 02:45:00

Serilog.NET架構

2023-09-05 07:28:02

Java自動埋點

2025-10-31 07:10:00

裝飾器Python代碼

2021-08-15 22:52:30

前端H5拼圖

2024-04-16 08:09:36

JavapulsarAPI

2020-09-24 11:46:03

Promise

2023-04-27 07:06:09

Categraf夜鶯

2023-12-25 11:18:12

OpenTeleme應用日志Loki

2021-04-20 08:31:59

應用監控高可用

2023-11-07 14:30:28

Python開發

2021-05-07 08:20:52

前端開發技術熱點

2023-01-07 08:09:41

零代碼Dooring組件
點贊
收藏

51CTO技術棧公眾號

久久xxxx精品视频| 日韩精品免费一区二区夜夜嗨 | 最新av网站在线观看| 久久99国产精品麻豆| 欧美精品福利在线| 手机看片福利视频| 97青娱国产盛宴精品视频| 日韩欧美亚洲综合| 亚洲第一综合| 欧美性猛交 xxxx| 日本vs亚洲vs韩国一区三区| 精品自在线视频| 久久精品视频18| 哺乳一区二区三区中文视频| 欧美自拍丝袜亚洲| 欧美久久在线观看| 色哟哟免费在线观看| av网站免费线看精品| 成人a在线视频| 日韩视频在线观看一区| 欧美ab在线视频| 亚洲一区二区精品| av无码一区二区三区| 亚洲天堂网站| 欧美日韩一区二区在线观看| 欧美成人免费在线观看视频| 国产黄网站在线观看| 国产偷v国产偷v亚洲高清| 国产精品一区二区三区免费观看 | 青青草成人在线观看| 久久男人资源视频| 一区二区在线观看免费视频| 成人情趣视频网站| 国产视频丨精品|在线观看| 性生活在线视频| 性欧美video另类hd尤物| 欧美日韩国产丝袜另类| 成年人深夜视频| 国产传媒在线播放| 国产精品久久久久影院| 欧美午夜精品久久久久免费视| 亚洲精品免费在线观看视频| 狠狠色丁香久久婷婷综合_中| 国产精品欧美日韩一区二区| 日韩中文字幕在线观看视频| 亚洲国产专区校园欧美| 欧美大片免费观看| 久久中文免费视频| 婷婷综合五月| 日韩一区二区三区在线播放| 天天躁日日躁aaaa视频| 亚洲制服欧美另类| 日韩精品免费在线视频| 星空大象在线观看免费播放| 99re热精品视频| 亚洲精品一区二区三区福利| 久久久久久婷婷| 激情小说一区| 日韩精品在线视频观看| 亚洲国产欧美视频| 一本色道久久综合亚洲精品酒店| 日韩精品中文字幕有码专区| 一级国产黄色片| 丝袜美腿综合| 国产一区二区三区久久精品 | 国模吧一区二区三区| 日本三级2019| 性欧美videos另类喷潮| 国产精品 欧美在线| 中文字幕一区二区三区人妻四季| 捆绑调教美女网站视频一区| 国产精品永久免费视频| 国产剧情精品在线| 成人自拍视频在线观看| 精品无人区一区二区三区竹菊| 亚洲三级中文字幕| 欧美激情一区二区在线| 欧美三级午夜理伦三级老人| 久久青青色综合| 黑人巨大精品欧美一区免费视频| 苍井空浴缸大战猛男120分钟| avav成人| 精品国产乱码91久久久久久网站| 亚洲av成人无码一二三在线观看| 色综合综合色| 欧美成人中文字幕在线| 韩国av免费观看| 蜜桃视频在线观看一区二区| 97久久精品午夜一区二区| 午夜小视频在线播放| 欧美激情一区二区三区蜜桃视频| 亚洲综合激情五月| 欧美办公室脚交xxxx| 欧美在线高清视频| 欧美图片自拍偷拍| 国产影视精品一区二区三区| 欧美精品日韩www.p站| 99久久精品国产亚洲| 国产一区二区三区久久久| 国产精品一区视频网站| 波多野结衣在线影院| 一区二区三区中文在线| 成年人在线看片| 999精品视频在线观看| 亚洲激情中文字幕| 91麻豆免费视频网站| 91久久夜色精品国产九色| 国产精品欧美在线| 性xxxx搡xxxxx搡欧美| 最新高清无码专区| 国产日韩一区二区在线观看| 精品视频在线观看网站| 亚洲欧美在线看| 久久精品视频国产| 九九国产精品视频| 欧美精品中文字幕一区二区| 日本欧美电影在线观看| 欧美剧情片在线观看| 一级性生活大片| 国产精品红桃| 91视频88av| 自拍视频在线播放| 色综合色狠狠综合色| 久草视频福利在线| 午夜久久美女| 亚洲va久久久噜噜噜久久天堂| 精品电影在线| 狠狠做深爱婷婷久久综合一区 | 波多野结衣在线电影| 成人v精品蜜桃久久一区| 午夜啪啪免费视频| 久久av影院| 在线成人免费网站| 婷婷激情五月综合| 久久久亚洲高清| 欧美 丝袜 自拍 制服 另类| 国产精品xxx在线观看| 久久躁狠狠躁夜夜爽| 自拍偷拍色综合| 国产亚洲美州欧州综合国| 日本成年人网址| 日韩激情啪啪| 欧美中文字幕视频| 青青视频在线观| 欧美日韩国产色视频| 国产激情视频网站| 国产一级久久| 久热国产精品视频一区二区三区| 7777kkk亚洲综合欧美网站| 精品国免费一区二区三区| 欧美爱爱小视频| 国产91综合网| 成人性免费视频| 日韩中出av| 国产成人精品在线观看| 成人免费在线电影| 欧美日韩国产a| 精品无码一区二区三区蜜臀| 国产一区二区三区黄视频| 一区二区三区三区在线| av一级久久| 色综合天天狠天天透天天伊人| 亚洲国产精品久久久久久6q| 亚洲va欧美va天堂v国产综合| 在线观看av中文字幕| 新狼窝色av性久久久久久| 无遮挡亚洲一区| 国产精品视频一区二区三区| 久久99精品久久久久久琪琪| 欧美 日韩 国产 成人 在线| 日韩欧美有码在线| 蜜桃av免费在线观看| 国产精品亚洲成人| 欧美深夜福利视频| 欧美三级伦理在线| 亚洲bt天天射| 国产一二在线播放| 亚洲最新av在线网站| 国产日韩免费视频| 天天av天天翘天天综合网色鬼国产| 精品少妇人妻一区二区黑料社区| 蜜桃久久久久久久| 男人天堂手机在线视频| 美女久久久久| 亚洲www在线观看| 欧美gv在线观看| 精品国产一区二区三区在线观看| 亚洲黄色在线播放| 91激情在线视频| 日韩视频中文字幕在线观看| 91小视频在线观看| 九九九九九伊人| 亚洲制服av| 亚洲免费视频播放| 国产成人精品免费视| 亚洲综合第一页| 欧美日韩精品免费观看视欧美高清免费大片| 在线观看成人黄色| 欧美 日韩 国产 精品| 欧美日韩一级视频| 天堂网一区二区三区| 一区视频在线播放| 伊人网在线视频观看| 国产成人亚洲综合a∨婷婷| 日本黄色三级大片| 国产在线不卡| 中文字幕欧美人与畜| 日韩电影不卡一区| 99久久国产免费免费| 国产综合色在线观看| 91精品国产色综合| 青青在线视频| 日韩中文字幕在线免费观看| 色视频在线观看福利| 欧美一区二区三区视频在线| 伊人久久中文字幕| 欧美日韩午夜视频在线观看| 久久久久97国产| 1000精品久久久久久久久| 美女久久久久久久久久| 成人av电影在线| 免费欧美一级片| 久久精品999| 亚洲精品怡红院| 久久精品官网| 青青艹视频在线| 夜夜夜久久久| 97在线国产视频| 欧美午夜在线视频| 特色特色大片在线| 久久久久久免费视频| 亚洲aⅴ天堂av在线电影软件| 伊甸园亚洲一区| 欧美精品久久久| 久久精品论坛| 国产日韩欧美亚洲一区| av成人男女| 国产精品.com| 国产精品成人自拍| 国产精品永久入口久久久| www.豆豆成人网.com| 国产麻豆一区二区三区在线观看| 嫩呦国产一区二区三区av| 亚洲一区二区免费| av不卡一区| 九色一区二区| 中文字幕中文字幕精品| 欧美日韩国产高清视频| 沈樵精品国产成av片| 日本一区二区三区视频在线观看 | 色香欲www7777综合网| 热99在线视频| 欧美精品资源| 成人av番号网| 日韩激情欧美| 精品国产乱码久久久久久久软件| 五月国产精品| 天堂一区二区三区| 91精品秘密在线观看| 91大学生片黄在线观看| 亚洲激情欧美| 欧美激情国产精品日韩| 日韩av在线发布| 亚洲xxx在线观看| 国产精品99久久久久久宅男| 中文字幕一二三| 91老师国产黑色丝袜在线| 国产三级av在线播放| 亚洲三级久久久| 国产在线欧美在线| 色一情一乱一乱一91av| 亚洲无码精品在线观看| 日韩久久久精品| 无码精品人妻一区二区| 这里只有精品久久| 羞羞的视频在线观看| 国产91成人在在线播放| 天然素人一区二区视频| 97超碰资源| 国产剧情在线观看一区| 三级网在线观看| 9色精品在线| 九色porny自拍| 成人永久免费视频| 精品亚洲aⅴ无码一区二区三区| 中文字幕亚洲成人| 久久久午夜影院| 欧美精品久久一区| 婷婷国产在线| 久久精品99久久久久久久久| 日韩伦理精品| 亚洲影院污污.| 九九精品在线| av片在线免费| 男女男精品视频| 一女三黑人理论片在线| 国产精品乱人伦中文| 亚洲日本韩国在线| 欧美一区二区观看视频| 国产永久免费高清在线观看| 欧美日韩xxxxx| 成人毛片免费| 久热国产精品视频一区二区三区| 亚洲精品99| 孩娇小videos精品| 99久久99久久精品免费看蜜桃| 很污很黄的网站| 狠狠色狠色综合曰曰| 朝桐光av在线一区二区三区| 一区三区二区视频| 少妇视频在线观看| 成人h视频在线观看| 久久精品亚洲人成影院| 久久九九国产视频| av色综合久久天堂av综合| 欧美老熟妇一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 天天操天天干天天| 欧美日本在线视频中文字字幕| 国产精品美女午夜爽爽| 欧美中文娱乐网| 性伦欧美刺激片在线观看| 在线观看成人动漫| 亚洲一区精品在线| www.久久伊人| 久久综合国产精品台湾中文娱乐网| 九九九伊在线综合永久| 欧美日韩成人一区二区三区| 亚洲国产综合在线看不卡| 免费国偷自产拍精品视频| 亚洲欧美自拍偷拍色图| 中文永久免费观看| 色午夜这里只有精品| 日韩漫画puputoon| 手机看片福利永久国产日韩| 久久亚洲欧洲| 中文字幕高清视频| 欧美日韩亚洲一区二区三区| 亚洲av成人无码网天堂| 欧美性视频网站| 婷婷综合一区| 日韩av在线第一页| 91影院在线免费观看| 成年人免费看毛片| 亚洲精品videossex少妇| 高h视频在线播放| 国产欧美亚洲日本| 在线亚洲免费| 国产在线观看h| 欧洲精品中文字幕| 日本在线免费| 91精品黄色| 99热这里只有精品8| 奇米777第四色| 一本久久a久久精品亚洲| 黄色在线小视频| 国产精品视频区| 我不卡手机影院| av在线天堂网| 欧美日韩免费看| 69久久夜色| 亚洲va久久久噜噜噜| 亚洲国产二区| 麻豆精品免费视频| 欧美日韩的一区二区| sm国产在线调教视频| 国产二区一区| 久久蜜桃资源一区二区老牛| 国产免费嫩草影院| 欧美成人精品3d动漫h| 国产美女高潮在线| 日韩在线第一区| 国产91露脸合集magnet| a v视频在线观看| 中文字幕在线成人| 欧美视频二区欧美影视| 日本韩国欧美在线观看| 日本一区二区三区dvd视频在线| 国产永久免费视频| 韩国日本不卡在线| 成人亚洲一区| 日批视频在线看| 色天天综合色天天久久| 久操免费在线| 欧美二区在线看| 国产真实乱对白精彩久久| 你懂的国产视频| 久久综合色88| 久久99国内| 香蕉视频免费网站| 欧美午夜在线观看| 国产乱码在线| 亚洲春色综合另类校园电影| 成人爱爱电影网址| 91麻豆视频在线观看| 91av在线免费观看视频| 五月精品视频| 国产毛片久久久久久久| 欧美大片国产精品| 91p九色成人|