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

ELK 處理 Spring Boot 日志,不錯!

開發 前端
在本教程中,我們主要了解了什么是 ELK,然后通過實際操作和大家一起搭建了一個 ELK 日志分析平臺,并且接入了 Logback 和 Nginx 兩種日志。

大家好,我是不才陳某~

在排查線上異常的過程中,查詢日志總是必不可缺的一部分。現今大多采用的微服務架構,日志被分散在不同的機器上,使得日志的查詢變得異常困難。

工欲善其事,必先利其器。如果此時有一個統一的實時日志分析平臺,那可謂是雪中送碳,必定能夠提高我們排查線上問題的效率。本文帶您了解一下開源的實時日志分析平臺 ELK 的搭建及使用。

ELK 簡介

ELK 是一個開源的實時日志分析平臺,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分組成。

Logstash

Logstash 主要用于收集服務器日志,它是一個開源數據收集引擎,具有實時管道功能。Logstash 可以動態地將來自不同數據源的數據統一起來,并將數據標準化到您所選擇的目的地。

Logstash 收集數據的過程主要分為以下三個部分:

  • 輸入:數據(包含但不限于日志)往往都是以不同的形式、格式存儲在不同的系統中,而 Logstash 支持從多種數據源中收集數據(File、Syslog、MySQL、消息中間件等等)。
  • 過濾器:實時解析和轉換數據,識別已命名的字段以構建結構,并將它們轉換成通用格式。
  • 輸出:Elasticsearch 并非存儲的唯一選擇,Logstash 提供很多輸出選擇。

Elasticsearch

Elasticsearch (ES)是一個分布式的 Restful 風格的搜索和數據分析引擎,它具有以下特點:

  • 查詢:允許執行和合并多種類型的搜索 — 結構化、非結構化、地理位置、度量指標 — 搜索方式隨心而變。
  • 分析:Elasticsearch 聚合讓您能夠從大處著眼,探索數據的趨勢和模式。
  • 速度:很快,可以做到億萬級的數據,毫秒級返回。
  • 可擴展性:可以在筆記本電腦上運行,也可以在承載了 PB 級數據的成百上千臺服務器上運行。
  • 彈性:運行在一個分布式的環境中,從設計之初就考慮到了這一點。
  • 靈活性:具備多個案例場景。支持數字、文本、地理位置、結構化、非結構化,所有的數據類型都歡迎。

Kibana

Kibana 可以使海量數據通俗易懂。它很簡單,基于瀏覽器的界面便于您快速創建和分享動態數據儀表板來追蹤 Elasticsearch 的實時數據變化。其搭建過程也十分簡單,您可以分分鐘完成 Kibana 的安裝并開始探索 Elasticsearch 的索引數據?—?沒有代碼、不需要額外的基礎設施。另外,歡迎關注公眾號碼猿技術專欄,后臺回復“1111”,阿里內部Java性能調優手冊!

對于以上三個組件在 《ELK 協議棧介紹及體系結構》 一文中有具體介紹,這里不再贅述。

在 ELK 中,三大組件的大概工作流程如下圖所示,由 Logstash 從各個服務中采集日志并存放至 Elasticsearch 中,然后再由 Kiabana 從 Elasticsearch 中查詢日志并展示給終端用戶。

圖 1. ELK 的大致工作流程

ELK 實現方案

通常情況下我們的服務都部署在不同的服務器上,那么如何從多臺服務器上收集日志信息就是一個關鍵點了。本篇文章中提供的解決方案如下圖所示:

圖 2. 本文提供的 ELK 實現方案

如上圖所示,整個 ELK 的運行流程如下:

  1. 在微服務(產生日志的服務)上部署一個 Logstash,作為 Shipper 角色,主要負責對所在機器上的服務產生的日志文件進行數據采集,并將消息推送到 Redis 消息隊列。
  2. 另用一臺服務器部署一個 Indexer 角色的 Logstash,主要負責從 Redis 消息隊列中讀取數據,并在 Logstash 管道中經過 Filter 的解析和處理后輸出到 Elasticsearch 集群中存儲。
  3. Elasticsearch 主副節點之間數據同步。
  4. 單獨一臺服務器部署 Kibana 讀取 Elasticsearch 中的日志數據并展示在 Web 頁面。

通過這張圖,相信您已經大致清楚了我們將要搭建的 ELK 平臺的工作流程,以及所需組件。下面就讓我們一起開始搭建起來吧。

ELK 平臺搭建

本節主要介紹搭建 ELK 日志平臺,包括安裝 Indexer 角色的 Logstash,Elasticsearch 以及 Kibana 三個組件。完成本小節,您需要做如下準備:

  1. 一臺 Ubuntu 機器或虛擬機,作為入門教程,此處省略了 Elasticsearch 集群的搭建,且將 Logstash(Indexer)、Elasticsearch 以及 Kibana 安裝在同一機器上。
  2. 在 Ubuntu 上安裝 JDK,注意 Logstash 要求 JDK 在 1.7 版本以上。
  3. Logstash、Elasticsearch、Kibana 安裝包,您可以在 此頁面 下載。

安裝 Logstash

解壓壓縮包:

tar -xzvf logstash-7.3.0.tar.gz

顯示更多簡單用例測試,進入到解壓目錄,并啟動一個將控制臺輸入輸出到控制臺的管道。

cd logstash-7.3.0  
elk@elk:~/elk/logstash-7.3.0$ bin/logstash -e 'input { stdin {} } output { { stdout {} } }'

顯示更多看到如下日志就意味著 Logstash 啟動成功。

圖 3. Logstash 啟動成功日志

在控制臺輸入 Hello Logstash ,看到如下效果代表 Logstash 安裝成功。

清單 1. 驗證 Logstash 是否啟動成功Hello Logstash

{  
    "@timestamp" => 2019-08-10T16:11:10.040Z,  
          "host" => "elk",  
      "@version" => "1",  
       "message" => "Hello Logstash"  
}

安裝 Elasticsearch

解壓安裝包:

tar -xzvf elasticsearch-7.3.0-linux-x86_64.tar.gz

啟動 Elasticsearch:

cd elasticsearch-7.3.0/  
bin/elasticsearch

在啟動 Elasticsearch 的過程中我遇到了兩個問題在這里列舉一下,方便大家排查。

問題一 :內存過小,如果您的機器內存小于 Elasticsearch 設置的值,就會報下圖所示的錯誤。解決方案是,修改 elasticsearch-7.3.0/config/jvm.options 文件中的如下配置為適合自己機器的內存大小,若修改后還是報這個錯誤,可重新連接服務器再試一次。

圖 4. 內存過小導致 Elasticsearch 啟動報錯

問題二 ,如果您是以 root 用戶啟動的話,就會報下圖所示的錯誤。解決方案自然就是添加一個新用戶啟動 Elasticsearch,至于添加新用戶的方法網上有很多,這里就不再贅述。

圖 5. Root 用戶啟動 Elasticsearch 報錯

啟動成功后,另起一個會話窗口執行 curl http://localhost:9200 命令,如果出現如下結果,則代表 Elasticsearch 安裝成功。

清單 2. 檢查 Elasticsearch 是否啟動成功

elk@elk:~$ curl http://localhost:9200  
{  
  "name" : "elk",  
  "cluster_name" : "elasticsearch",  
  "cluster_uuid" : "hqp4Aad0T2Gcd4QyiHASmA",  
  "version" : {  
    "number" : "7.3.0",  
    "build_flavor" : "default",  
    "build_type" : "tar",  
    "build_hash" : "de777fa",  
    "build_date" : "2019-07-24T18:30:11.767338Z",  
    "build_snapshot" : false,  
    "lucene_version" : "8.1.0",  
    "minimum_wire_compatibility_version" : "6.8.0",  
    "minimum_index_compatibility_version" : "6.0.0-beta1"  
  },  
  "tagline" : "You Know, for Search"  
}

安裝 Kibana

解壓安裝包:

tar -xzvf kibana-7.3.0-linux-x86_64.tar.gz

修改配置文件 config/kibana.yml ,主要指定 Elasticsearch 的信息。

清單 3. Kibana 配置信息#Elasticsearch主機地址

elasticsearch.hosts: "http://ip:9200"  
# 允許遠程訪問  
server.host: "0.0.0.0"  
# Elasticsearch用戶名 這里其實就是我在服務器啟動Elasticsearch的用戶名  
elasticsearch.username: "es"  
# Elasticsearch鑒權密碼 這里其實就是我在服務器啟動Elasticsearch的密碼  
elasticsearch.password: "es"

啟動 Kibana:

cd kibana-7.3.0-linux-x86_64/bin  
./kibana

在瀏覽器中訪問 http://ip:5601 ,若出現以下界面,則表示 Kibana 安裝成功。

圖 6. Kibana 啟動成功界面

圖片圖片

ELK 日志平臺安裝完成后,下面我們就將通過具體的例子來看下如何使用 ELK,下文將分別介紹如何將 Spring Boot 日志和 Nginx 日志交由 ELK 分析。

在 Spring Boot 中使用 ELK

首先我們需要創建一個 Spring Boot 的項目,之前我寫過一篇文章介紹 如何使用 AOP 來統一處理 Spring Boot 的 Web 日志 ,本文的 Spring Boot 項目就建立在這篇文章的基礎之上。

修改并部署 Spring Boot 項目

在項目 resources 目錄下創建 spring-logback.xml 配置文件。

清單 4. Spring Boot 項目 Logback 的配置

<?xml versinotallow="1.0" encoding="UTF-8"?>  
<configuration debug="false">  
    <contextName>Logback For demo Mobile</contextName>  
    <property name="LOG_HOME" value="/log" />  
    <springProperty scope="context" name="appName" source="spring.application.name"  
                    defaultValue="localhost" />  
    ...  
  
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        ...  
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} ${appName} -%msg%n</pattern>  
        </encoder>  
        ...  
    </appender>  
    ...  
</configuration>

以上內容省略了很多內容,您可以在源碼中獲取。在上面的配置中我們定義了一個名為 ROLLING_FILE 的 Appender 往日志文件中輸出指定格式的日志。而上面的 pattern 標簽正是具體日志格式的配置,通過上面的配置,我們指定輸出了時間、線程、日志級別、logger(通常為日志打印所在類的全路徑)以及服務名稱等信息。

將項目打包,并部署到一臺 Ubuntu 服務器上。

清單 5. 打包并部署 Spring Boot 項目

# 打包命令  
mvn package -Dmaven.test.skip=true  
# 部署命令  
java -jar sb-elk-start-0.0.1-SNAPSHOT.jar

查看日志文件, logback 配置文件中我將日志存放在 /log/sb-log.log 文件中,執行 more /log/sb-log.log 命令,出現以下結果表示部署成功。

圖 7. Spring Boot 日志文件

配置 Shipper 角色 Logstash

Spring Boot 項目部署成功之后,我們還需要在當前部署的機器上安裝并配置 Shipper 角色的 Logstash。Logstash 的安裝過程在 ELK 平臺搭建小節中已有提到,這里不再贅述。

安裝完成后,我們需要編寫 Logstash 的配置文件,以支持從日志文件中收集日志并輸出到 Redis 消息管道中,Shipper 的配置如下所示。

清單 6. Shipper 角色的 Logstash 的配置

input {  
    file {  
        path => [  
            # 這里填寫需要監控的文件  
            "/log/sb-log.log"  
        ]  
    }  
}  
  
output {  
    # 輸出到redis  
    redis {  
        host => "10.140.45.190"   # redis主機地址  
        port => 6379              # redis端口號  
        db => 8                   # redis數據庫編號  
        data_type => "channel"    # 使用發布/訂閱模式  
        key => "logstash_list_0"  # 發布通道名稱  
    }  
}

其實 Logstash 的配置是與前面提到的 Logstash 管道中的三個部分(輸入、過濾器、輸出)一一對應的,只不過這里我們不需要過濾器所以就沒有寫出來。上面配置中 Input 使用的數據源是文件類型的,只需要配置上需要收集的本機日志文件路徑即可。Output 描述數據如何輸出,這里配置的是輸出到 Redis。

Redis 的配置 data_type 可選值有 channel 和 list 兩個。channel 是 Redis 的發布/訂閱通信模式,而 list 是 Redis 的隊列數據結構,兩者都可以用來實現系統間有序的消息異步通信。

channel 相比 list 的好處是,解除了發布者和訂閱者之間的耦合。舉個例子,一個 Indexer 在持續讀取 Redis 中的記錄,現在想加入第二個 Indexer,如果使用 list ,就會出現上一條記錄被第一個 Indexer 取走,而下一條記錄被第二個 Indexer 取走的情況,兩個 Indexer 之間產生了競爭,導致任何一方都沒有讀到完整的日志。

channel 就可以避免這種情況。這里 Shipper 角色的配置文件和下面將要提到的 Indexer 角色的配置文件中都使用了 channel 。

配置 Indexer 角色 Logstash

配置好 Shipper 角色的 Logstash 后,我們還需要配置 Indexer 角色 Logstash 以支持從 Redis 接收日志數據,并通過過濾器解析后存儲到 Elasticsearch 中,其配置內容如下所示。

清單 7. Indexer 角色的 Logstash 的配置

input {  
    redis {  
        host      => "192.168.142.131"    # redis主機地址  
        port      => 6379               # redis端口號  
        db        => 8                  # redis數據庫編號  
        data_type => "channel"          # 使用發布/訂閱模式  
        key       => "sb-logback"  # 發布通道名稱  
    }  
}  
  
filter {  
     #定義數據的格式  
     grok {  
       match => { "message" => "%{TIMESTAMP_ISO8601:time} \[%{NOTSPACE:threadName}\] %{LOGLEVEL:level}  %{DATA:logger} %{NOTSPACE:applicationName} -(?:.*=%{NUMBER:timetaken}ms|)"}  
     }  
}  
  
output {  
    stdout {}  
    elasticsearch {  
        hosts => "localhost:9200"  
        index => "logback"  
   }  
}

與 Shipper 不同的是,Indexer 的管道中我們定義了過濾器,也正是在這里將日志解析成結構化的數據。下面是我截取的一條 logback 的日志內容:

清單 8. Spring Boot 項目輸出的一條日志

2019-08-11 18:01:31.602 [http-nio-8080-exec-2] INFO  c.i.s.aop.WebLogAspect sb-elk -接口日志  
POST請求測試接口結束調用:耗時=11ms,result=BaseResponse{code=10000, message='操作成功'}

在 Filter 中我們使用 Grok 插件從上面這條日志中解析出了時間、線程名稱、Logger、服務名稱以及接口耗時幾個字段。Grok 又是如何工作的呢?

  1. message 字段是 Logstash 存放收集到的數據的字段, match = {"message" => ...} 代表是對日志內容做處理。
  2. Grok 實際上也是通過正則表達式來解析數據的,上面出現的 TIMESTAMP_ISO8601 、 NOTSPACE 等都是 Grok 內置的 patterns。
  3. 我們編寫的解析字符串可以使用 Grok Debugger 來測試是否正確,這樣避免了重復在真實環境中校驗解析規則的正確性。

查看效果

經過上面的步驟,我們已經完成了整個 ELK 平臺的搭建以及 Spring Boot 項目的接入。下面我們按照以下步驟執行一些操作來看下效果。

啟動 Elasticsearch,啟動命令在 ELK 平臺搭建 小節中有提到,這里不贅述(Kibana 啟動同)。啟動 Indexer 角色的 Logstash。

# 進入到 Logstash 的解壓目錄,然后執行下面的命令  
bin/logstash -f indexer-logstash.conf

啟動 Kibana。

啟動 Shipper 角色的 Logstash。

# 進入到 Logstash 的解壓目錄,然后執行下面的命令  
            bin/logstash -f shipper-logstash.conf

調用 Spring Boot 接口,此時應該已經有數據寫入到 ES 中了。

在瀏覽器中訪問 http://ip:5601 ,打開 Kibana 的 Web 界面,并且如下圖所示添加 logback 索引。

圖 8. 在 Kibana 中添加 Elasticsearch 索引

圖片圖片

進入 Discover 界面,選擇 logback 索引,就可以看到日志數據了,如下圖所示。

圖 9. ELK 日志查看

圖片圖片

在 Nginx 中使用 ELK

相信通過上面的步驟您已經成功的搭建起了自己的 ELK 實時日志平臺,并且接入了 Logback 類型的日志。但是實際場景下,幾乎不可能只有一種類型的日志,下面我們就再在上面步驟的基礎之上接入 Nginx 的日志。

當然這一步的前提是我們需要在服務器上安裝 Nginx,具體的安裝過程網上有很多介紹,這里不再贅述。查看 Nginx 的日志如下(Nginx 的訪問日志默認在 /var/log/nginx/access.log 文件中)。

清單 9. Nginx 的訪問日志

192.168.142.1 - - [17/Aug/2019:21:31:43 +0800] "GET /weblog/get-test?name=elk HTTP/1.1"  
200 3 "http://192.168.142.131/swagger-ui.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)  
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"

同樣,我們需要為此日志編寫一個 Grok 解析規則,如下所示:

清單 10. 針對 Nginx 訪問日志的 Grok 解析規則

%{IPV4:ip} \- \- \[%{HTTPDATE:time}\] "%{NOTSPACE:method} %{DATA:requestUrl}  
HTTP/%{NUMBER:httpVersion}" %{NUMBER:httpStatus} %{NUMBER:bytes}  
"%{DATA:referer}" "%{DATA:agent}"

完成上面這些之后的關鍵點是 Indexer 類型的 Logstash 需要支持兩種類型的輸入、過濾器以及輸出,如何支持呢?首先需要給輸入指定類型,然后再根據不同的輸入類型走不同的過濾器和輸出,如下所示。

清單 11. 支持兩種日志輸入的 Indexer 角色的 Logstash 配置

input {  
    redis {  
        type      => "logback"  
        ...  
    }  
    redis {  
       type       => "nginx"  
       ...  
    }  
}  
  
filter {  
     if [type] == "logback" {  
         ...  
     }  
     if [type] == "nginx" {  
         ...  
     }  
}  
  
output {  
    if [type] == "logback" {  
        ...  
    }  
    if [type] == "nginx" {  
       ...  
    }  
}

我的 Nginx 與 Spring Boot 項目部署在同一臺機器上,所以還需修改 Shipper 類型的 Logstash 的配置以支持兩種類型的日志輸入和輸出,其配置文件的內容可 點擊這里獲取。

以上配置完成后,我們按照 查看效果 章節中的步驟,啟動 ELK 平臺、Shipper 角色的 Logstash、Nginx 以及 Spring Boot 項目,然后在 Kibana 上添加 Nignx 索引后就可同時查看 Spring Boot 和 Nginx 的日志了,如下圖所示。

圖 10. ELK 查看 Nginx 日志

圖片圖片

ELK 啟動

在上面的步驟中,ELK 的啟動過程是我們一個一個的去執行三大組件的啟動命令的。而且還是在前臺啟動的,意味著如果我們關閉會話窗口,該組件就會停止導致整個 ELK 平臺無法使用,這在實際工作過程中是不現實的,我們剩下的問題就在于如何使 ELK 在后臺運行。

根據 《Logstash 最佳實踐》 一書的推薦,我們將使用 Supervisor 來管理 ELK 的啟停。首先我們需要安裝 Supervisor,在 Ubuntu 上執行 apt-get install supervisor 即可。安裝成功后,我們還需要在 Supervisor 的配置文件中配置 ELK 三大組件(其配置文件默認為 /etc/supervisor/supervisord.conf 文件)。

清單 12. ELK 后臺啟動

[program:elasticsearch]  
envirnotallow=JAVA_HOME="/usr/java/jdk1.8.0_221/"  
directory=/home/elk/elk/elasticsearch  
user=elk  
command=/home/elk/elk/elasticsearch/bin/elasticsearch  
  
[program:logstash]  
envirnotallow=JAVA_HOME="/usr/java/jdk1.8.0_221/"  
directory=/home/elk/elk/logstash  
user=elk  
command=/home/elk/elk/logstash/bin/logstash -f /home/elk/elk/logstash/indexer-logstash.conf  
  
[program:kibana]  
envirnotallow=LS_HEAP_SIZE=5000m  
directory=/home/elk/elk/kibana  
user=elk  
command=/home/elk/elk/kibana/bin/kibana

按照以上內容配置完成后,執行 sudo supervisorctl reload 即可完成整個 ELK 的啟動,而且其默認是開機自啟。當然,我們也可以使用 sudo supervisorctl start/stop [program_name] 來管理單獨的應用。另外,歡迎關注公眾號碼猿技術專欄,后臺回復“9527”,送你一份Spring Cloud Aliababa實戰視頻!

結束語

在本教程中,我們主要了解了什么是 ELK,然后通過實際操作和大家一起搭建了一個 ELK 日志分析平臺,并且接入了 Logback 和 Nginx 兩種日志。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2024-09-27 12:27:31

2021-03-01 23:26:41

日志Spring BootAOP

2022-05-12 11:38:26

Java日志Slf4j

2022-04-08 16:27:48

SpringBoot異常處理

2021-05-18 07:30:36

開發Spring Boot日志

2025-10-14 07:59:41

2022-02-08 17:07:54

Spring BooSpring Aop日志記錄

2025-02-07 09:11:04

JSON對象策略

2019-04-15 08:32:25

Spring Boot日志門面模式

2022-04-27 08:55:01

Spring外部化配置

2023-09-19 22:41:30

控制器HTTP

2021-04-20 10:50:38

Spring Boot代碼Java

2025-01-08 10:35:26

代碼開發者Spring

2022-10-26 07:14:25

Spring 6Spring業務

2021-08-11 05:00:48

Spring 日志手段

2025-10-27 01:00:00

2023-11-30 07:00:56

SpringBoot處理器

2025-02-13 00:34:22

Spring對象系統

2023-09-24 13:55:42

Spring應用程序

2021-07-20 08:32:16

Kubernetes日志平臺
點贊
收藏

51CTO技術棧公眾號

亚洲人视频在线| 国产精品一区二区三区四区五区| 麻豆久久久av免费| 国产成人无码精品亚洲| 欧美精品系列| 日韩视频一区二区三区在线播放| 男女猛烈激情xx00免费视频| 国产毛片av在线| 国产一区二区三区在线观看精品| 91av在线影院| 91高清免费观看| 女同另类激情重口| 欧美精品久久99久久在免费线 | 爱爱的免费视频| 日韩黄色三级在线观看| 精品久久久久久中文字幕| 亚洲一区综合| 精品视频一二三| 国产成人精品亚洲777人妖| 国产精品高潮粉嫩av| 精品在线视频观看| 欧美韩日高清| 亚洲午夜av电影| 亚洲精品乱码久久久久久不卡 | 国产精品一区二区三区在线观| 波多野结衣家庭主妇| 亚洲国产精品第一区二区| 中文字幕亚洲自拍| 在线观看日韩精品视频| 中文字幕av一区二区三区四区| 欧美日韩免费在线视频| 国产精品亚洲二区在线观看| 第四色日韩影片| 亚洲视频在线一区| 亚洲精品一卡二卡三卡四卡| 天堂a√在线| www.日本不卡| 国产精品一级久久久| 国产乱人乱偷精品视频a人人澡| 日本伊人色综合网| 国产成人精品久久亚洲高清不卡| xxxxxx国产| 韩国久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一级特黄高清视频| 日韩免费av| 中文字幕精品视频| 大胸美女被爆操| 成人av国产| 色小说视频一区| 日韩视频在线观看免费视频| 国产中文字幕一区二区三区| 亚洲人成电影网站色| 亚洲av无码一区二区二三区| 超碰精品在线观看| 亚洲电影中文字幕| 国产夫妻性爱视频| 亚洲97av| 中文精品99久久国产香蕉| 婷婷综合在线视频| 日韩在线综合| 久久影视电视剧免费网站清宫辞电视 | 人妻无码一区二区三区四区| 亚洲小说区图片区都市| 亚洲国产综合91精品麻豆| 男人日女人视频网站| 色在线中文字幕| 一本一本大道香蕉久在线精品| 天天摸天天碰天天添| 欧美va在线| 91.com在线观看| 永久看看免费大片| 久久综合五月婷婷| 亚洲色图17p| 日本裸体美女视频| 国产精品xvideos88| 97在线免费观看| 久久人妻免费视频| 久久精品国产秦先生| av一区二区三区免费| 亚洲欧洲综合在线| 欧美国产欧美综合| 亚洲精品少妇一区二区| 麻豆视频在线看| 欧美日韩一区二区三区四区| 国产精品一区二区在线免费观看| 欧美在线导航| 最近2019中文字幕mv免费看 | 视频三区在线| 亚洲永久免费av| 亚洲人成色77777| 国产精品1区在线| 亚洲精品国产精品久久清纯直播| 国产99在线 | 亚洲| 欧美va亚洲va日韩∨a综合色| 97国产在线视频| 中文字幕免费高清在线观看| 成人综合在线观看| 天堂av一区二区| 国产91足控脚交在线观看| 欧美亚洲日本一区| 涩视频在线观看| 成人羞羞视频在线看网址| 欧美激情精品久久久久久免费印度| 免费污污视频在线观看| 国产大片一区二区| 午夜精品一区二区在线观看的| 日本伦理一区二区| 欧美久久久久久久久久| 国产亚洲色婷婷久久99精品91| 国产另类xxxxhd高清| 欧美裸体一区二区三区| 在线免费观看日韩av| 亚洲精品中文字幕乱码| 国产成人综合av| 免费激情视频网站| 亚洲欧美日韩国产手机在线 | 亚洲激情视频在线| 日本黄色录像视频| 日韩精品一卡二卡三卡四卡无卡| 91久久大香伊蕉在人线| 成全电影播放在线观看国语| 精品色蜜蜜精品视频在线观看| 中文字幕剧情在线观看| 精品一区av| 国产成人精品国内自产拍免费看 | 99久久er热在这里只有精品15 | 久久裸体视频| 国产亚洲精品自在久久| 在线中文字幕第一页| 欧美日韩国产片| 公肉吊粗大爽色翁浪妇视频| 国产精品久久久久久模特 | 亚洲欧美国产中文| 亚洲理论电影片| 97**国产露脸精品国产| 免费观看的毛片| 亚洲一区二区不卡免费| 深夜做爰性大片蜜桃| 99久久精品国产亚洲精品| 国产精品视频自在线| 成人动漫在线免费观看| 在线观看av不卡| 国产成人免费观看网站| 日韩av在线发布| 热re99久久精品国产99热 | 国产精品小说在线| 91在线不卡| 51精品久久久久久久蜜臀| 羞羞在线观看视频| 韩国午夜理伦三级不卡影院| 最新不卡av| 精品一区二区三区中文字幕在线 | 免费网站观看www在线观| 国产精品亚洲第一区在线暖暖韩国| 欧美精品一区二区性色a+v| 四虎影视精品永久在线观看| 久久躁日日躁aaaaxxxx| 午夜精品在线播放| 亚洲午夜三级在线| av无码一区二区三区| 免费久久99精品国产自在现线| 蜜桃传媒视频麻豆第一区免费观看 | 亚洲成在线观看| 91精品小视频| 久久综合导航| 亚洲午夜精品福利| 国产在线不卡一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 天堂成人在线观看| 色94色欧美sute亚洲线路一久 | 国产精品久久久久久久电影| www.亚洲.com| 日韩一级黄色大片| 中文字幕亚洲精品在线| 国产欧美精品日韩区二区麻豆天美| 日韩精品视频一二三| 国语精品一区| 日本一区不卡| 在线综合色站| 日韩av电影在线网| 黄色小网站在线观看| 欧美大肚乱孕交hd孕妇| 国产精品久免费的黄网站| 国产精品天干天干在线综合| 亚洲熟女一区二区三区| 久热re这里精品视频在线6| 亚洲一区二区自拍偷拍| jizz久久精品永久免费| 国产精彩精品视频| 日本在线观看高清完整版| 亚洲图片在区色| www.欧美国产| 91国内精品野花午夜精品| 天天看片中文字幕| 久久久国产精品不卡| 色婷婷一区二区三区在线观看| 91久久综合| 亚洲一区二区精品在线观看| 九九热播视频在线精品6| 国产精品视频自拍| 性欧美xxx69hd高清| 欧美精品亚州精品| 成人动漫在线播放| 日韩精品极品视频| 国产偷人妻精品一区二区在线| 欧美日韩美女在线观看| 在线免费看av网站| 久久久久久黄色| 高清中文字幕mv的电影| 极品少妇xxxx精品少妇偷拍| 欧美在线观看成人| 欧美高清日韩| 亚洲精品一区二区三区蜜桃久| 欧美日韩导航| 国产精品久久久久久久久久直播| 九七电影院97理论片久久tvb| 26uuu另类亚洲欧美日本老年| 免费毛片在线看片免费丝瓜视频 | 欧美一区2区三区4区公司二百| 日韩在线观看中文字幕| 成人妇女淫片aaaa视频| 日韩欧美少妇| 国产成人97精品免费看片| a天堂资源在线| 九九综合九九综合| 国产成人l区| 日韩中文字幕av| 99reav在线| 中文字幕精品av| 国产黄在线观看免费观看不卡| 亚洲国产99精品国自产| www.97超碰| 日韩一区二区三区在线观看 | 国产主播一区二区| 拔插拔插华人永久免费| 麻豆精品国产91久久久久久| 天天操天天摸天天爽| 久久国产一二区| 熟女性饥渴一区二区三区| 国产日产高清欧美一区二区三区| 成人性免费视频| 在线视频观看日韩| 久久久久久久中文| 99在线精品视频在线观看| 少妇人妻在线视频| 亚洲综合社区| 成人在线看视频| 日韩1区2区日韩1区2区| 成人免费xxxxx在线视频| 日韩精品亚洲一区二区三区免费| 久久久久久久久久福利| 青青草国产精品亚洲专区无| 在线免费视频一区| 精品一区二区三区免费毛片爱| 一二三级黄色片| 丁香天五香天堂综合| 男人的天堂影院| 99国产欧美另类久久久精品 | 亚洲男人天堂一区| 久久视频免费看| 精品久久久中文| 国产精品久久久久久久久夜色| 欧美日韩在线观看一区二区| 91tv国产成人福利| 日韩西西人体444www| 免费看av毛片| 国产香蕉精品视频一区二区三区| 毛片免费不卡| 欧美国产乱视频| 国产高清不卡| 91久久在线播放| 久久久免费毛片| 日本日本精品二区免费| 国产精品成人a在线观看| 成人小视频在线观看免费| 亚洲精品1区| 免费涩涩18网站入口| 国产精品一区免费在线观看| 五十路六十路七十路熟婆| 日本一区二区成人| 青青青在线视频| 91国偷自产一区二区开放时间 | 欧美综合在线观看视频| 久久精品国产一区二区三| 亚洲熟妇一区二区| 久久精品视频免费观看| 国产福利视频网站| 五月天视频一区| 中文字幕一二区| 欧美精品一区二区三| 国产色a在线| 欧美夫妻性生活xx| 日韩中文视频| 国产精品麻豆免费版| 成人黄色av| 99视频在线免费播放| 激情丁香综合五月| 中文字幕一区二区三区人妻电影| 国产精品久久久久久久久晋中| 国产精品1234区| 777午夜精品免费视频| 日韩欧美电影在线观看| 久久久精品2019中文字幕神马| 神马久久午夜| 91丨九色丨国产| 欧美肥老太太性生活| 日日橹狠狠爱欧美超碰| 国产一区中文字幕| 山东少妇露脸刺激对白在线| 五月婷婷激情综合| 亚洲AV无码成人片在线观看| 一本色道久久综合亚洲精品小说| av资源网在线播放| 91黄色国产视频| 97人人精品| 日本999视频| 91小视频在线| 国产第一页第二页| 欧美一级xxx| 久久黄色美女电影| 国产精品福利在线| 欧美日韩xxxx| 国产精品50p| 成人美女视频在线看| 91 在线视频| 欧美人xxxx| 国产视频第一区| 热re99久久精品国产66热| 久久影院资源站| 18禁网站免费无遮挡无码中文| 国产成人小视频| 少妇久久久久久被弄高潮| 91精品国产综合久久香蕉麻豆| 求av网址在线观看| 国产精品丝袜高跟| 成人3d精品动漫精品一二三| 精品少妇无遮挡毛片| 久久久国产精品午夜一区ai换脸| 国产三级av片| 精品小视频在线| 欧美大片免费| 日韩欧美一区二区三区四区五区| 午夜在线视频观看日韩17c| 丰满少妇一区二区三区| 大桥未久av一区二区三区| 亚洲av成人精品一区二区三区在线播放 | 深夜av在线| 久久精品国产精品青草色艺| 日韩香蕉视频| 一本加勒比北条麻妃| 色网综合在线观看| 成人欧美一区| 91免费的视频在线播放| 欧美在线播放| 国产婷婷在线观看| 大荫蒂欧美视频另类xxxx| 欧美777四色影视在线| 国产精品久久久av| 国产精品久久久久久久久久10秀| 爱豆国产剧免费观看大全剧苏畅| 亚洲欧美视频一区| 人妻精品一区二区三区| 欧美又大又粗又长| 成人影院在线| 伊人免费视频二| 欧美日韩国产专区| www.视频在线.com| 91传媒免费看| 免费视频久久| 永久免费毛片在线观看| 91精品国产手机| 波多野结衣在线播放| 区一区二区三区中文字幕| 韩国三级中文字幕hd久久精品| 久久国产精品波多野结衣| 日韩av在线最新| 国产精品亚洲成在人线| 老司机午夜免费福利视频| 99国产精品久久久久久久久久| а中文在线天堂| 精品少妇一区二区30p| 亚洲资源网你懂的| 杨幂一区二区国产精品| 福利微拍一区二区| 午夜视频成人| 狠狠色伊人亚洲综合网站色| 另类欧美日韩国产在线| 国产无遮挡aaa片爽爽| 亚洲香蕉成视频在线观看| 久久精品免视看国产成人| 国产亚洲天堂网| 亚洲欧美电影一区二区| 黄色在线网站| 99re在线视频观看| 日本成人在线视频网站| 精品少妇theporn| 最近中文字幕日韩精品| 亚洲+变态+欧美+另类+精品| 特级黄色片视频|