<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # ELK安裝筆記 劉銀 ## 什么是ELK ELK是Elasticsearch、 Logstash、Kibana三個開源軟件的組合而成,形成一款強大的實時日志收集、展示系統。 - **Elasticsearch(ES)**:基于Lucene的高性能搜索框架,特點:`高性能`,`分布式`,`restful` - **Logstash**:日志收集、結構化工具,可以從本地磁盤,網絡服務消息隊列中收集各種各樣 的日志, 然后進行過濾分析, 并將日志輸出到Elasticsearch(也可以是其他應用) - **Kibana**:可視化日志Web展示工具,對Elasticsearch中存儲的日志進行展示,還可以生成炫麗的儀表盤。其原理是大量使用了ELasticsearch的聚合功能。 現在,除了ES外,Elastic網站提出了Elastic stack的概念,相當于一個全家桶,其中重要的組件還有**X-Pack** 和 **Beat** > Logstach是可以脫離ES單獨使用的。Kibana不行。 ## ES安裝(5.2+) 一、環境 1. JDK1.8 2. Linux內核3.5及以上 > 如果不是3.5以上內核,ES啟動時會報異常,單機可以忽略。 > 如果是集群,ES啟動報異常不會通過,要在ES安裝目錄的config文件夾下的elasticsearch.yml中配置:`bootstrap.system_call_filter: false`,忽略該異常。 二、單機安裝(centos 6.8 64位) 1. 下載 elasticsearch-5.2.2.tar.gz(版本號可選) 2. 解壓 `tar zxvf elasticsearch-5.2.2.tar.gz` 3. 執行安裝目錄下的`./bin/elasticsearch` 啟動 三、啟動中的問題 1. **不能用root啟動**,ES官方直接不允許,必須新創建用戶并授予相應的權限 2. 由于ES是一個對多線程要求很高的應用,所以對一些基礎的linux系統配置要進行更改: - 相關系統設置: - vim /etc/sysctl.conf - vm.max_map_count= 262144 - sysctl –p - 系統打開文件數配置: * vim /etc/security/limits.conf * hard nofile 65536 * soft nofile 65536 - 修改用戶打開的線程數,因為 es 的段要經常打開文件控制索引: * vim /etc/security/limits.d/90-nproc.conf * soft nproc 2048 3. 在安裝目錄的config目錄中,有個jvm.options配置文件,其中有初始化jvm的大小。默認2g,官方推薦生產環境4g,我這里的虛擬機環境(單核,1G內存),改成256m: * -Xms256m * -Xmx256m > 通常在啟動過程中,有異常報出來,根據異常信息去百度,都會有解決辦法。 四、配置文件 在config目錄下的`elasticsearch.yml`文件是主要的配置文件,配置參數解釋如下: |名稱 | 說明| |---|---| |`cluster.name` |集群名稱,一個集群的唯一標識| |`node.name` |節點名稱,每個節點唯一| |`node.rack` |為節點添加自定義屬性| |`path.data` |數據存儲路徑,可默認| |`path.logs` |日志存儲路徑,可默認| |`bootstrap.memory_lock` |啟動過程中是否為內存加鎖,`true`/`false`| |`network.host` |綁定的本機ip| |`http.port` |自定義http端口,默認9200| |`discovery.zen.ping.unicast.hosts` |當新節點加入的時候,配置一個初始化主機列表用于節點發現| |`discovery.zen.minimun_master_nodes` |為了避免發生腦裂的最小節點數,數值為(有主節點資格的節點數量/2 + 1)| |`gateway.recover_after_nodes` | 如果集群發生重啟,要直到多少個節點啟動完成,才能開始進行集群初始化恢復動作| |`action.destructive_requires_name` |刪除索引時,需要明確的索引名稱| 五、集群配置(以3臺為例,3臺都可以成主節點) 關鍵點: - 集群名稱相同 - 節點名稱不能相同 - 計算最小主節點數 - 要鎖住內存防止異常 配置示例: * cluster.name: wukong *集群名稱,整個集群唯一,集群中的節點要相同* * node.name: wk-01 *節點名稱,每個節點(ES)唯一* * bootstrap.memory_lock: true *鎖住內存,避節點拋異常造成集群不可用* * newwork.host: 192.168.87.131 *本節點的地址* * discovery.zen.ping.unicast.host: [“192.168.87.131”,”192.168.87.130”,”192.168.87.129”] *啟動時的集群發現* * discovery.zen.minimum_master_nodes: 2 *最小主節點數* 注意: 在我的centos6.8 環境中,還要執行如下命令來解除鎖內存的限制(命令是當時生效,可永久配置) > ulimit -l unlimited ==由于條件限制,下面的演示都是單節點環境。集群的特有信息,將在以后補充== 當我們啟動ES后,在命令行輸入 > curl -XGET '192.168.87.131:9200' 出現以下信息,表示啟動成功 ```javascript { "name" : "liuyin-n1", // 節點名稱 "cluster_name" : "liuyin", // 集群名稱 "cluster_uuid" : "Wn0JKxCKRwK0aTSm8BPZTg", // 節點uuid,唯一,由ES代碼生成 "version" : { "number" : "5.2.2", // es版本號 "build_hash" : "f9d9b74", // hash值 "build_date" : "2017-02-24T17:26:45.835Z", // 創建時間 "build_snapshot" : false, // 是否創建快照 "lucene_version" : "6.4.1" // 底層lucene版本號 }, "tagline" : "You Know, for Search" // 口號 } ``` 查看集群基本信息 > curl -XGET '192.168.87.131:9200/_cluster/health?pretty' ``` { "cluster_name" : "liuyin", // 集群名稱 "status" : "yellow", // 集群狀態,重要 "timed_out" : false, "number_of_nodes" : 1, // 節點數,這里可以看出只有一個階段,是單機環境 "number_of_data_nodes" : 1, "active_primary_shards" : 23, "active_shards" : 23, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 23, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 50.0 } ``` 關于status 顏色 | 含義 ---|--- green | 所有主要分片和復制分片都可用 yellow | 所有主要分片可用,但不是所有復制分片都可用,**最小保障** red | 不是所有主分片都可用 >關于ES的命令,不是本章內容,有興趣可以參看其他相關資料 ## 插件安裝 ### 一、head插件 head插件是一個網頁版的ES可視化客戶端,簡單易用、功能強大。 在ES2.X時代,head作為ES的標準插件來安裝,到了ES5.X,官方已經把head移除了(估計是太強大,提供了很多官方其他插件要收費才能使用的功能,而官方強烈推薦的使用x-pack來管理ES,也和head的管理有所沖突,所有head被放棄了),但head也做了變通,依然可以作為一個獨立的前端應用,通過node.js來安裝。 1、通過node.js來安裝head插件 > mkdir head > cd head > git clone git://github.com/mobz/elasticsearch-head.git > cd elasticsearch-head > npm install > npm install -g grunt-cli > grunt server 看到如下信息,表示啟動成功 - Running "connect: server" (connect) task - Waiting forever... - Started connect web server on http://localhost:9100 可以看到,默認綁定的是9100端口。 2、配置ES允許跨域訪問 由于head插件已經不能被ES默認支持,我們還要在ES的配置文件`elasticsearch.yml`中加入下面兩個配置后重啟,才能訪問: > http.cors.enabled: true > http.cors.allow-origin: "*" 根據ip地址訪問:`192.168.87.131:9100`,如下: ![image](http://omumkhlu9.bkt.clouddn.com/head%E6%8F%92%E4%BB%B6%E7%95%8C%E9%9D%A2.jpg) 至此,head插件的安裝就成功了 二、X-Pack安裝 1、X-Pack簡介 X-Pack是Elastic Stack(可以理解為整個Elastic體系)中一個非常重要的組件,它集如下功能于一身: ![image](http://omumkhlu9.bkt.clouddn.com/X-Pack%E5%8C%85%E6%8B%AC%E7%9A%84%E5%8A%9F%E8%83%BD.jpg) > 依次為:安全、告警、監控、報告、圖表、機器學習(即將支持) 可以說,X-Pack是Elastic家族不可缺少的重要組件。 2、X-Pack安裝 X-Pack是一個插件,它必須依賴于主體進行安裝。比如依賴于ES、Logstash、Kibana。這里在ES下安裝如下: 先停止ES服務 然后再安裝目錄的bin目錄下執行elasticsearch-plugin > ./bin/elasticsearch-plugin install x-pack 但一個問題是,x-pack有100m+,這種方式直接從國外網站下載插件,是很慢的,所有可以把x-pack下載下來再安裝,下載地址: [https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.2.zip](https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.2.zip) 上傳到linux中,比如在/luyou/elk/x-pack-5.2.2.zip,執行命令如下: > bin/elasticsearch-plugin install file:///luyou/elk/x-pack-5.2.2.zip 出來一下信息,最后選擇y,安裝成功 > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > @ WARNING: plugin requires additional permissions @ > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > * java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries > * java.lang.RuntimePermission getClassLoader > * java.lang.RuntimePermission setContextClassLoader > * java.lang.RuntimePermission setFactory > * java.security.SecurityPermission createPolicy.JavaPolicy > * java.security.SecurityPermission getPolicy > * java.security.SecurityPermission putProviderProperty.BC > * java.security.SecurityPermission setPolicy > * java.util.PropertyPermission * read,write > * java.util.PropertyPermission sun.nio.ch.bugLevel write > * javax.net.ssl.SSLPermission setHostnameVerifier > See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html > for descriptions of what these permissions allow and the associated risks. > > Continue with installation? [y/N]y **這里選擇y** 同理,要在kibana、Logstach中安裝X-Pack,也類似: > bin/kibana-plugin install file:///luyou/elk/x-pack-5.2.2.zip > bin/logstash-plugin install file:///luyou/elk/x-pack-5.2.2.zip 刪除X-Pack > bin/kibana-plugin remove x-pack 3、X-Pack設置 X-Pack安裝成功后,默認會啟用5個設置 |名稱 | 說明| |---|---| |xpack.security.enabled | 安全選項,默認true,可在elasticsearch.yml或kibana.yml配置| |xpack.monitoring.enabled | 監控選項,默認true,可在elasticsearch.yml或kibana.yml配置| |xpack.graph.enabled | 圖表選項,默認true,可在elasticsearch.yml或kibana.yml配置| |xpack.watcher.enabled | 觀察選項,默認true,只能在elasticsearch.yml中配置| |xpack.reporting.enabled | 報告選項,默認true,只能在kibana.yml中配置| 4、X-Pack用戶安全 當X-Pack安裝完成,重啟ES后,會默認開啟一個超級用戶,用戶名為elastic,密碼為changeme,下面先給用戶改密碼,如改成"123456": > curl -XPUT -u elastic:changeme '192.168.87.131:9200/_xpack/security/user/elastic/_password' -d > '{ > “password”:“123456” > }' > 在安裝了X-Pack后,所有的ES訪問操作要加參數`-u 用戶名:密碼`來執行。 注意: > 當安裝了x-pack后,我們的head插件將不能再訪問ES,需要在ES的elasticsearch.yml文件中配置禁用安全選項如下: > xpack.security.enabled: **false** > 但這種方式也就弱化了X-Pack的功能,如何取舍要自己衡量。建議生產環境還是不用head。 ## Kibana安裝 1、Kibana簡介 Kibana是一個為ElasticSearch服務的,強大的數據圖像化組件(還包括友好的命令行工具),先來感受一下: ![image](http://omumkhlu9.bkt.clouddn.com/Kibana%E5%9B%BE%E7%A4%BA01.jpg)![image](http://omumkhlu9.bkt.clouddn.com/Kibana%E5%9B%BE%E7%A4%BA02.jpg)![image](http://omumkhlu9.bkt.clouddn.com/Kibana%E5%9B%BE%E7%A4%BA03.jpg) > Kibana的原理其實就是利用了ES提供的強大的**聚合**操作來生成各種圖表。 2、Kibana安裝 先下載,解壓: > wget https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz > tar -xzf kibana-5.2.2-linux-x86_64.tar.gz > cd kibana/ 由于前邊ES安裝了X-Pack,我們安裝Kibana后,也把X-Pack安裝上,可以通過Kibana來進行監控和權限管理等: > bin/kibana-plugin install file:///luyou/elk/x-pack-5.2.2.zip 配置,在kibana安裝目錄,config目錄下`kibana.yml` > server.host: "192.168.87.131" kibana主機地址,這里我ES和Kibana都在一臺虛擬機上 > elasticsearch.url: "http://192.168.87.131:9200" ES服務器地址 > elasticsearch.username: "elastic" 以什么用戶名連接ES,這里是默認超級用戶 > elasticsearch.password: "123456" 密碼,前面已經從默認的"changme"改成"123456" Kibana的配置非常多,這里只給出最基本的4個,其他的請自行查閱相關資料 啟動: > bin/kibana 注意有這一句,是kibana的訪問地址,默認端口就是5601 > [12:06:27.937] [info][listening] Server running at http://192.168.87.131:5601 下面可以用瀏覽器訪問了。(貌似kibana對ie內核支持不行,請用chrom或firefox) 出現以下界面,則kibana和x-pack都安裝成功了: ![image](http://omumkhlu9.bkt.clouddn.com/Kibana%E7%99%BB%E9%99%86%E7%95%8C%E9%9D%A2.jpg) 輸入用戶名elastic,密碼123456,進入kibana主界面 如圖: ![image](http://omumkhlu9.bkt.clouddn.com/Kibana%E4%B8%BB%E7%95%8C%E9%9D%A2.jpg) > 如果沒有開啟X-Pack,則不需要登陸,Kibana的功能也會少一些。 ## Logstash安裝 1、簡介 Logstash是一個開源的,運行與服務器端的數據(日志文件,網絡包等)提取管道,對數據進行提取、轉換、存儲。它是一個獨立的組件,不需要依賴ES,但作為Elastic Stack家族中的重要一員,通常會把提取的數據用ES進行存儲。 官方的這張圖能很好的表明Logstash的作用: ![image](http://omumkhlu9.bkt.clouddn.com/Logstash%E4%BB%8B%E7%BB%8D%E5%9B%BE.jpg) 數據收集來源: 1. 日志文件 2. 系統指標 3. 網絡 4. 數據庫(數據流) 5. 傳感器 數據輸出后可用于: 1. 分析 - ES - MongoDB、Riak之類的數據庫 2. 歸檔 - HDFS - S3 Google Cloud Storage 3. 監控 - Nagios - Ganglia - Zabbix - Graphite - Datadog - CloudWatch 4. 告警 - Watcher *(with Elasticsearch)* - Email - Pagerduty - HipChat - IRC - SNS 2、Logstash工作流程 Logstash工作有3個階段: ``` graph LR inputs-->filters filters-->outputs ``` 這里inputs、filters、outputs剛好是Logstash的3大基本插件: 1. **inputs**:負責收集數據(數據從哪里來) 2. **filters**:負責解析、匹配、過濾、完善數據(如何處理) 3. **outputs**:負責將處理好的數據發送出去(數據到哪里去) 此外,Logstash還有一個插件叫**Codec**,它是一個作用于inputs或outputs內的插件,用于對數據進行一些特定格式的轉換。如處理成json格式,如multiline將多行轉換成一行。 下面是這些插件所支持的應用(非完全統計)。 |Input Plugins | Codec plugins | Filter plugins | Output plugins| |---|---|---|---| |beats|avro|aggregate|csv| |couchdb_changes| cef |anonymize| elasticsearch| |elasticsearch| collectd| csv |email| |file| dots| date| file| |gelf| es_bulk |de_dot |graphite| |generator| fluent| dissect| http| |graphite| graphite| dns| kafka| |heartbeat| json| drop |rabbitmq| |http| json_lines| fingerprint| redis| |http_poller |line| geoip| s3| |jdbc| msgpack |grok| stdout| |kafka |multiline| json| tcp| |log4j| plain| kv| udp| |rabbitmq| rubydebug| mutate || |redis|| ruby || |s3 || sleep || |sqs || split || |stdin|| throttle || |syslog|| syslog_pri || |tcp || translate || |twitter || urldecode || |udp|| useragent || || | uuid || ||| xml || 一個基本的Logstash使用流程如下: ![image](http://omumkhlu9.bkt.clouddn.com/Logstash%E7%AE%80%E5%8D%95%E6%B5%81%E7%A8%8B.jpg) 3、安裝Logstash 下載[:官網下載頁面](https://www.elastic.co/downloads/logstash),約90M 解壓: > tar zxvf /luyou/elk/logstash-5.2.2.tar.gz 最簡單的執行(省去了filters): > bin/logstash -e 'input { stdin { } } output { stdout {} }' 成功的話,會看到這樣一個信息: - Successfully started Logstash API endpoint {:port=>9600} 上面的命令,使用了標準輸入`stdin`和標準輸出`stdout`插件,你在命令行的所有輸入,都會輸出到控制臺(再次顯示)。 這時候輸入一些字符,都會再輸出一遍,但是已經默認帶上了**時間**和**IP**信息。到這里,安裝就算成功了。 4、配置 上邊的例子只能是驗證是否安裝成功,下面來看一下如何配置 > vim config/jvm.options 這里jvm的設置,請根據自己的環境適當調整。 在安裝目錄創建一個\.conf文件,比如ly.conf,編輯如下: ``` input { file { path => "/luyou/elk/logs/test.log" } } filter { } output { elasticsearch { hosts => ["192.168.87.131:9200"] user => "elastic" password => "123456" } } ``` 執行: > bin/logstash -f ly.conf 這只是一個簡單的例子,而Logstash里面最強大的filter插件并沒有涉及。 關于filter,我個人認為是Logstash的亮點所在(也是學習成本最高的),它對進來的數據經過篩選、格式化、重命名、分段、組合、添加,轉換成你最終想要的格式,再輸出。關于filter的介紹,至少要重新寫一個章節。 5、個人看Logstash優缺點 優點 | 缺點 :---:|:---: 不依賴于Elastic的其他組件,可獨立使用 |比較笨重,安裝包有近90M 適用范圍非常廣泛,幾乎包括了所有常見的應用場景 | 有時候,配置文件會很繁瑣 Filter功能強大,滿足你的“私人訂制” | 學習成本較高 正因為有了Logstash的這些缺點,才有了**Beat**組件的流行 ## Beat組件安裝 1、Beat簡介 上邊已經說了,Logstash雖然功能強大,但過于笨重。假如我們有多臺服務器,每臺服務器都安裝Logstash顯然不是好主意。于是,有了Beat組件集,你可以把它看成一個filter已經定義成模板的,滿足于特定需求的Logstash。 Beat組件盡可能輕量,通過不同的類型來滿足不同的需求,在功能上甚至是Logstash的一種補充。官網對Beat組件所做的事情就是:**獲取特定格式的數據,然后發送給ES或Logstash(Logstash再對數據進一步處理),并在Kibana上展示出來** 2、Beat分類 官方Beat有如下幾種: - **Filebeat**:獲取數據(日志)文件 - **Metricbeat**:獲取系統信息 - **Packetbeat**:獲取網絡包(并分析) - **Winlogbeat**:獲取Windows事件日志 - **Heartbeat**:獲取服務器存活信息 下面這張圖可以很好理解Beat的作用: ![image](http://omumkhlu9.bkt.clouddn.com/Beat%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B.jpg) > 注意,beat不只是能輸出到ES或Logstash,還能輸出到**kafka**、**Redis**、**文件**、**控制臺**... 下面這張圖,通過filebeat讓你更好的知道beat的功能: ![image](http://omumkhlu9.bkt.clouddn.com/FileBeat%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B.jpg) 更好的消息是,官方結合Beat推出了做好的Kibana **Dashboard**,可以拿來即用。 3、Beat安裝(以**Metricbeat**為例) - 下載合適的版本,我這里是按照centos6.8 選在Linux 64位 [下載頁面](https://www.elastic.co/downloads/beats/metricbeat) - 解壓,進入目錄 > vim metricbeat.yml 這里我們演示發送到ES的配置。在配置文件最后,提供了ES、Logstash、Logging的配置示例,默認ES是打開的,這里我們修改如下(ES沒有安裝x-pack可以不配用戶密碼): > hosts: ["192.168.87.131:9200"] > username: "elastic" > password: "123456" - 保存、退出 - ES安裝metricbeat模板: > curl -XPUT -u elastic:123456 'http://192.168.87.131:9200/_template/metricbeat' --data-binary @/etc/luyou/metricbeat-5.2.2-linux-x86_64/metricbeat.template.json - 安裝官方提供的Dashboard 1. 切換到Metricbeat安裝目錄 2. ~~最基本的安裝方式為(這里不適合,默認安裝ES地址為locahhost:9200,而且沒有認證)~~ > ./scripts/import_dashboards 3. 這里這樣安裝 1. 下載所有的Dashboard到當前目錄[ https://artifacts.elastic.co/downloads/beats/beats-dashboards/beats-dashboards-5.2.2.zip]( https://artifacts.elastic.co/downloads/beats/beats-dashboards/beats-dashboards-5.2.2.zip) 2. 通過文件安裝,安裝到指定的ES,使用用戶名和密碼 > ./scripts/import_dashboards -file beats-dashboards-5.2.2.zip -es http://192.168.87.131:9200 -user elastic -pass 123456 4. 這樣安裝就結束了 4、運行Beat(以**Metricbeat**為例),看效果 - 在安裝了官方提供的Dashboard后,可以在kibana中看見如下定義好的圖表模板 ![image](http://omumkhlu9.bkt.clouddn.com/%E5%AE%98%E6%96%B9DashBoard.jpg) - 啟動Metricbeat > ./metricbeat - kibana添加索引 ![image](http://omumkhlu9.bkt.clouddn.com/kibana%E6%B7%BB%E5%8A%A0%E7%B4%A2%E5%BC%95.jpg)![image](http://omumkhlu9.bkt.clouddn.com/kibana%E6%B7%BB%E5%8A%A0%E7%B4%A2%E5%BC%952.jpg) - 在這里添加,找幾個和系統性能相關的圖表,排一下版,可以保存 ![image](http://omumkhlu9.bkt.clouddn.com/Dashboard%E6%B7%BB%E5%8A%A0.jpg) - 你保存的以后可以在這里打開,這里還有一些已經定義好的。 ![image](http://omumkhlu9.bkt.clouddn.com/Dashboard%E6%89%93%E5%BC%80.jpg) - 可以展示了,注意右上角的時間范圍和刷新頻率 ![image](http://omumkhlu9.bkt.clouddn.com/%E7%B3%BB%E7%BB%9F%E7%9B%91%E6%B5%8B%E6%A0%B7%E4%BE%8B.jpg) 先到這里,待續.....
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看