校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Docker安裝ELK并實現(xiàn)JSON格式日志分析的方法

Docker安裝ELK并實現(xiàn)JSON格式日志分析的方法

熱門標簽:AI電銷機器人 源碼 外呼系統(tǒng)打哪顯哪 北海市地圖標注app 新科美甲店地圖標注 新邵電銷機器人企業(yè) 高德地圖標注論壇 湖北ai智能電銷機器人 江西外呼系統(tǒng) 蘭州ai電銷機器人招商

ELK是什么

ELK是elastic公司提供的一套完整的日志收集以及前端展示的解決方案,是三個產(chǎn)品的首字母縮寫,分別是ElasticSearch、Logstash和Kibana。

其中Logstash負責對日志進行處理,如日志的過濾、日志的格式化等;ElasticSearch具有強大的文本搜索能力,因此作為日志的存儲容器;而Kibana負責前端的展示。

ELK搭建架構如下圖:

加入了filebeat用于從不同的客戶端收集日志,然后傳遞到Logstash統(tǒng)一處理。

ELK的搭建

因為ELK是三個產(chǎn)品,可以選擇依次安裝這三個產(chǎn)品。

這里選擇使用Docker安裝ELk。

Docker安裝ELk也可以選擇分別下載這三個產(chǎn)品的鏡像并運行,但是本次使用直接下載elk的三合一鏡像來安裝。

因此首先要保證已經(jīng)有了Docker的運行環(huán)境,Docker運行環(huán)境的搭建請查看:https://blog.csdn.net/qq13112...

拉取鏡像

有了Docker環(huán)境之后,在服務器運行命令:

docker pull sebp/elk

這個命令是在從Docker倉庫下載elk三合一的鏡像,總大小為2個多G,如果發(fā)現(xiàn)下載速度過慢,可以將Docker倉庫源地址替換為國內源地址。

下載完成之后,查看鏡像:

docker images

Logstash配置

/usr/config/logstash目錄下新建beats-input.conf,用于日志的輸入:

input {
 beats {
  port => 5044
 }
}

新建output.conf,用于日志由Logstash到ElasticSearch的輸出:

output {
 elasticsearch {
  hosts => ["localhost"]
  manage_template => false
  index => "%{[@metadata][beat]}"
 }
}

其中的index為輸出到ElasticSearch后的index

運行容器

有了鏡像之后直接啟動即可:

docker run -d -p 5044:5044 -p 5601:5601 -p 9203:9200 -p 9303:9300 -v /var/data/elk:/var/lib/elasticsearch -v /usr/config/logstash:/etc/logstash/conf.d --name=elk sebp/elk

-d的意思是后臺運行容器;

-p的意思是宿主機端口:容器端口,即將容器中使用的端口映射到宿主機上的某個端口,ElasticSearch的默認端口是9200和9300,由于我的機器上已經(jīng)運行了3臺ElasticSearch實例,因此此處將映射端口進行了修改;

-v的意思是宿主機的文件|文件夾:容器的文件|文件夾,此處將容器中elasticsearch 的數(shù)據(jù)掛載到宿主機的/var/data/elk上,以防容器重啟后數(shù)據(jù)的丟失;并且將logstash的配置文件掛載到宿主機的/usr/config/logstash目錄。

--name的意思是給容器命名,命名是為了之后操作容器更加方便。

如果你之前搭建過ElasticSearch的話,會發(fā)現(xiàn)搭建的過程中有各種錯誤,但是使用docker搭建elk的過程中并沒有出現(xiàn)那些錯誤。

運行后查看容器:

docker ps

查看容器日志:

docker logs -f elk

進入容器:

docker exec -it elk /bin/bash

修改配置后重啟容器:

docker restart elk

查看kinaba

瀏覽器輸入http://my_host:5601/
即可看到kinaba界面。此時ElasticSearch中還沒有數(shù)據(jù),需要安裝Filebeat采集數(shù)據(jù)到elk中。

Filebeat搭建

Filebeat用于采集數(shù)據(jù)并上報到Logstash或者ElasticSearch,在需要采集日志的服務器上下載Filebeat并解壓即可使用

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.1-linux-x86_64.tar.gz

tar -zxvf filebeat-6.2.1-linux-x86_64.tar.gz

修改配置文件

進入filebeat,修改filebeat.yml。

filebeat.prospectors:
- type: log
 #需要設置為true配置才能生效
 enabled: true
 path:
  #配置需要采集的日志路徑
  - /var/log/*.log
 #可以打一個tag以后分類使用
 tag: ["my_tag"]
 #對應ElasticSearch的type
 document_type: my_type
setup.kibana:
 #此處為kibana的ip及端口,即kibana:5601
 host: ""
output.logstash:
 #此處為logstash的ip及端口,即logstash:5044
 host: [""]
 #需要設置為true,否則不生效
 enabled: true
#如果想直接從Filebeat采集數(shù)據(jù)到ElasticSearch,則可以配置output.elasticsearch的相關配置

運行Filebeat

運行:

./filebeat -e -c filebeat.yml -d "publish"

此時可以看到Filebeat會將配置的path下的log發(fā)送到Logstash;然后在elk中,Logstash處理完數(shù)據(jù)之后就會發(fā)送到ElasticSearch。但我們想做的是通過elk進行數(shù)據(jù)分析,因此導入到ElasticSearch的數(shù)據(jù)必須是JSON格式的。

這是之前我的單條日志的格式:

 2019-10-22 10:44:03.441 INFO rmjk.interceptors.IPInterceptor Line:248 - {"clientType":"1","deCode":"0fbd93a286533d071","eaType":2,"eaid":191970823383420928,"ip":"xx.xx.xx.xx","model":"HONOR STF-AL10","osType":"9","path":"/applicationEnter","result":5,"session":"ef0a5c4bca424194b29e2ff31632ee5c","timestamp":1571712242326,"uid":"130605789659402240","v":"2.2.4"}

導入之后不好分析,之后又想到使用Logstash的filter中的grok來處理日志使之變成JSON格式之后再導入到ElasticSearch中,但是由于我的日志中的參數(shù)是不固定的,發(fā)現(xiàn)難度太大了,于是轉而使用Logback,將日志直接格式化成JSON之后,再由Filebeat發(fā)送。

Logback配置

我的項目是Spring Boot,在項目中加入依賴:

<dependency>
 <groupId>net.logstash.logback</groupId>
 <artifactId>logstash-logback-encoder</artifactId>
 <version>5.2</version>
</dependency>

然后在項目中的resource目錄下加入logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!--
    說明:
    1、日志級別及文件
      日志記錄采用分級記錄,級別與日志文件名相對應,不同級別的日志信息記錄到不同的日志文件中
      例如:error級別記錄到log_error_xxx.log或log_error.log(該文件為當前記錄的日志文件),而log_error_xxx.log為歸檔日志,
      日志文件按日期記錄,同一天內,若日志文件大小等于或大于2M,則按0、1、2...順序分別命名
      例如log-level-2013-12-21.0.log
      其它級別的日志也是如此。
    2、文件路徑
      若開發(fā)、測試用,在Eclipse中運行項目,則到Eclipse的安裝路徑查找logs文件夾,以相對路徑../logs。
      若部署到Tomcat下,則在Tomcat下的logs文件中
    3、Appender
      FILEERROR對應error級別,文件名以log-error-xxx.log形式命名
      FILEWARN對應warn級別,文件名以log-warn-xxx.log形式命名
      FILEINFO對應info級別,文件名以log-info-xxx.log形式命名
      FILEDEBUG對應debug級別,文件名以log-debug-xxx.log形式命名
      stdout將日志信息輸出到控制上,為方便開發(fā)測試使用
  -->
  <contextName>service</contextName>
  <property name="LOG_PATH" value="logs"/>
  <!--設置系統(tǒng)日志目錄-->
  <property name="APPDIR" value="doctor"/>

  <!-- 日志記錄器,日期滾動記錄 -->
  <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
    <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節(jié)點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
      而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
      <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
      命名日志文件,例如log-error-2013-12-21.0.log -->
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>2MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <!-- 追加方式記錄日志 -->
    <append>true</append>
    <!-- 日志文件的格式 -->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
      <charset>utf-8</charset>
    </encoder>
    <!-- 此日志文件只記錄info級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>error</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <!-- 日志記錄器,日期滾動記錄 -->
  <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
    <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節(jié)點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
      而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
      <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
      命名日志文件,例如log-error-2013-12-21.0.log -->
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>2MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <!-- 追加方式記錄日志 -->
    <append>true</append>
    <!-- 日志文件的格式 -->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
      <charset>utf-8</charset>
    </encoder>
    <!-- 此日志文件只記錄info級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>warn</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <!-- 日志記錄器,日期滾動記錄 -->
  <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
    <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節(jié)點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
      而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
      <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
      命名日志文件,例如log-error-2013-12-21.0.log -->
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>2MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <!-- 追加方式記錄日志 -->
    <append>true</append>
    <!-- 日志文件的格式 -->
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
      <charset>utf-8</charset>
    </encoder>
    <!-- 此日志文件只記錄info級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>info</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <appender name="jsonLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日志文件的路徑及文件名 -->
    <file>${LOG_PATH}/${APPDIR}/log_IPInterceptor.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_PATH}/${APPDIR}/log_IPInterceptor.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
      <jsonFactoryDecorator class="net.logstash.logback.decorate.CharacterEscapesJsonFactoryDecorator">
        <escape>
          <targetCharacterCode>10</targetCharacterCode>
          <escapeSequence>\u2028</escapeSequence>
        </escape>
      </jsonFactoryDecorator>
      <providers>
        <pattern>
          <pattern>
            {
            "timestamp":"%date{ISO8601}",
            "uid":"%mdc{uid}",
            "requestIp":"%mdc{ip}",
            "id":"%mdc{id}",
            "clientType":"%mdc{clientType}",
            "v":"%mdc{v}",
            "deCode":"%mdc{deCode}",
            "dataId":"%mdc{dataId}",
            "dataType":"%mdc{dataType}",
            "vid":"%mdc{vid}",
            "did":"%mdc{did}",
            "cid":"%mdc{cid}",
            "tagId":"%mdc{tagId}"
            }
          </pattern>
        </pattern>
      </providers>
    </encoder>
  </appender>
  <!-- 彩色日志 -->
  <!-- 彩色日志依賴的渲染類 -->
  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
  <conversionRule conversionWord="wex"
          converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
  <conversionRule conversionWord="wEx"
          converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
  <!-- 彩色日志格式 -->
  <property name="CONSOLE_LOG_PATTERN"
       value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!--encoder 默認配置為PatternLayoutEncoder-->
    <encoder>
      <pattern>${CONSOLE_LOG_PATTERN}</pattern>
      <charset>utf-8</charset>
    </encoder>
    <!--此日志appender是為開發(fā)使用,只配置最底級別,控制臺輸出的日志級別是大于或等于此級別的日志信息-->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>debug</level>
    </filter>
  </appender>

  <!-- 指定項目中某個包,當有日志操作行為時的日志記錄級別 -->
  <!-- rmjk.dao.mappe為根包,也就是只要是發(fā)生在這個根包下面的所有日志操作行為的權限都是DEBUG -->
  <!-- 級別依次為【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
  <logger name="rmjk.dao.mapper" level="DEBUG"/>
  <logger name="rmjk.service" level="DEBUG"/>
  <!--顯示日志-->
  <logger name="org.springframework.jdbc.core" additivity="false" level="DEBUG">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILEINFO"/>
  </logger>
  <!-- 打印json日志  -->
  <logger name="IPInterceptor" level="info" additivity="false">
    <appender-ref ref="jsonLog"/>
  </logger>

  <!-- 生產(chǎn)環(huán)境下,將此級別配置為適合的級別,以免日志文件太多或影響程序性能 -->
  <root level="INFO">
    <appender-ref ref="FILEERROR"/>
    <appender-ref ref="FILEWARN"/>
    <appender-ref ref="FILEINFO"/>

    <!-- 生產(chǎn)環(huán)境將請stdout,testfile去掉 -->
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

其中的關鍵為:

<logger name="IPInterceptor" level="info" additivity="false">
   <appender-ref ref="jsonLog"/>
</logger>

在需要打印的文件中引入slf4j:

 private static final Logger LOG = LoggerFactory.getLogger("IPInterceptor");

MDC中放入需要打印的信息:

MDC.put("ip", ipAddress);
MDC.put("path", servletPath);
MDC.put("uid", paramMap.get("uid") == null ? "" : paramMap.get("uid").toString());

此時如果使用了LOG.info("msg")的話,打印的內容會輸入到日志的message中,日志格式如下:

修改Logstash配置

修改/usr/config/logstash目錄下的beats-input.conf:

input {
 beats {
  port => 5044
  codec => "json"
 }
}

只加了一句codec => "json",但是Logstash會按照JSON格式來解析輸入的內容。

因為修改了配置,重啟elk:

docker restart elk

這樣,當我們的日志生成完畢之后,使用Filebeat導入到elk中,就可以通過Kibana來進行日志分析了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:黃石 黔東 大理 自貢 阿克蘇 海南 南陽 池州

巨人網(wǎng)絡通訊聲明:本文標題《Docker安裝ELK并實現(xiàn)JSON格式日志分析的方法》,本文關鍵詞  Docker,安裝,ELK,并,實現(xiàn),JSON,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Docker安裝ELK并實現(xiàn)JSON格式日志分析的方法》相關的同類信息!
  • 本頁收集關于Docker安裝ELK并實現(xiàn)JSON格式日志分析的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩美一区二区三区| 欧美国产日本韩| 国产一区二区视频在线播放| 欧美激情一区二区三区在线| 成人97人人超碰人人99| 亚洲国产另类av| 久久久综合九色合综国产精品| 91麻豆国产福利在线观看| 蜜桃久久av一区| 亚洲视频一区二区在线| 日韩欧美国产一区二区在线播放 | 日韩午夜激情视频| av电影在线观看不卡| 日本免费新一区视频| 亚洲精品国产品国语在线app| 日韩小视频在线观看专区| 中文字幕二三区不卡| 91精品国产免费久久综合| 99久久99久久精品免费观看| 欧美二区三区的天堂| 欧美性色黄大片| 大陆成人av片| 韩国理伦片一区二区三区在线播放| 亚洲欧美精品午睡沙发| 精品999久久久| 日韩一二三区视频| 91精品免费观看| 国产精品91xxx| 看国产成人h片视频| 偷窥少妇高潮呻吟av久久免费| 亚洲精品视频在线观看网站| 久久亚洲捆绑美女| 欧美一区二区三区四区高清| 91搞黄在线观看| 91美女视频网站| 成人激情动漫在线观看| 懂色av噜噜一区二区三区av| 国产精品99久久久久久宅男| 国产一区二区三区在线观看免费视频| 免费观看91视频大全| 蜜臀国产一区二区三区在线播放| 天天色综合天天| 日韩国产在线观看| 肉肉av福利一精品导航| 日本亚洲一区二区| 欧美aⅴ一区二区三区视频| 日韩国产欧美一区二区三区| 蜜臀a∨国产成人精品| 九九国产精品视频| 国产成人99久久亚洲综合精品| www.激情成人| 欧美午夜精品理论片a级按摩| 欧美自拍偷拍午夜视频| 欧美日韩aaa| 精品乱人伦一区二区三区| 国产喷白浆一区二区三区| 国产精品日韩成人| 性欧美疯狂xxxxbbbb| 久久精品久久99精品久久| 国产精品资源在线观看| 91视频在线观看| 日韩一区国产二区欧美三区| 久久综合九色综合97婷婷女人| 国产精品美女久久久久aⅴ | 日韩一区二区精品| 国产精品视频九色porn| 亚洲综合视频在线| 久久99久久精品欧美| 成人激情文学综合网| 在线成人高清不卡| 日本一区免费视频| 日本在线不卡视频| 91热门视频在线观看| 日韩一区二区在线免费观看| 日韩码欧中文字| 奇米色一区二区| 在线观看www91| 国产偷v国产偷v亚洲高清| 日韩精品欧美精品| 成人激情av网| 日韩免费高清电影| 亚洲第一主播视频| 99免费精品在线观看| 欧美精品一区二区三区蜜桃 | 国产福利一区二区三区视频在线| 欧美日韩激情在线| 亚洲欧美一区二区在线观看| 国产一区二区三区在线观看免费| 欧美一区二区三区视频免费 | 欧美成人福利视频| 日韩在线观看一区二区| 欧美在线免费观看视频| 中文字幕中文在线不卡住| 国产另类ts人妖一区二区| 日韩欧美一区二区在线视频| 亚洲一区成人在线| 99久久精品国产毛片| 欧美国产97人人爽人人喊| 韩国成人在线视频| 精品国产第一区二区三区观看体验| 亚洲成人免费看| 91麻豆精品国产自产在线| 午夜电影网亚洲视频| 欧美精选午夜久久久乱码6080| 一区二区三区.www| 欧美又粗又大又爽| 亚洲一区二区在线播放相泽| 欧美三级视频在线播放| 亚欧色一区w666天堂| 精品裸体舞一区二区三区| 国产91对白在线观看九色| 欧美一区二区三区在线看 | 欧美视频一区二区三区在线观看| 18成人在线观看| 94-欧美-setu| 欧美国产一区二区在线观看| 国产一区二区精品久久91| 欧美mv日韩mv亚洲| 奇米综合一区二区三区精品视频| 精品奇米国产一区二区三区| 色综合天天做天天爱| 国产精品一区一区| 奇米影视一区二区三区| 亚洲一区二区视频在线观看| 中文字幕+乱码+中文字幕一区| 日韩美女一区二区三区四区| 91激情五月电影| av影院午夜一区| 韩国女主播一区| 精品无人区卡一卡二卡三乱码免费卡 | 韩国女主播一区二区三区| 国产精品美女久久久久av爽李琼| 欧美系列日韩一区| 国产在线观看一区二区| 亚洲乱码国产乱码精品精可以看| 日韩一区和二区| 91视频国产资源| 国产精品99久久久久久久vr| 亚洲福利国产精品| 中文字幕在线一区免费| 欧美一区二区免费观在线| 91色乱码一区二区三区| 丝袜脚交一区二区| 中文字幕免费在线观看视频一区| 欧美日韩日本视频| 成人动漫av在线| 久久超级碰视频| 天堂成人免费av电影一区| 亚洲色图.com| 国产日韩精品久久久| 日韩欧美黄色影院| 欧美日韩国产不卡| 欧美专区亚洲专区| 91啪九色porn原创视频在线观看| 麻豆一区二区在线| 欧美aaa在线| 亚洲国产精品一区二区久久恐怖片 | 紧缚奴在线一区二区三区| 午夜激情一区二区| 亚洲一区精品在线| 亚洲国产视频网站| 亚洲成人免费电影| 午夜精品久久久久久久| 亚洲国产成人av好男人在线观看| 亚洲精选视频免费看| 亚洲高清久久久| 亚洲成av人片一区二区三区| 国产精品丝袜一区| 国产精品二三区| 偷拍亚洲欧洲综合| 国产一区二区三区免费| www.成人网.com| 欧美性猛交一区二区三区精品| 7777精品伊人久久久大香线蕉经典版下载 | 久久国产尿小便嘘嘘| 韩国av一区二区| av不卡一区二区三区| 欧美日韩国产欧美日美国产精品| 日韩一二三四区| 国产精品高潮呻吟| 亚洲一区二区三区四区在线免费观看| 日韩中文字幕亚洲一区二区va在线 | 国产在线一区观看| 一本到一区二区三区| 欧美一区二区久久久| 久久色.com| 亚洲欧美激情在线| 久久精品国产一区二区| 夫妻av一区二区| 欧美日韩精品是欧美日韩精品| 国产欧美一区二区精品仙草咪| 亚洲午夜免费电影| 国产精品99久久久久久有的能看| 欧美男生操女生| 亚洲日本护士毛茸茸| 国产精品香蕉一区二区三区| 欧美日韩激情一区二区三区| 中文天堂在线一区| 久久精品国产999大香线蕉| 色94色欧美sute亚洲线路一久|