国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇文章教你搞懂日志采集利器Filebeat

運維 系統運維
本文使用的Filebeat是7.7.0的版本,文章將從如下幾個方面說明。一起來看一下吧。

 本文使用的Filebeat是7.7.0的版本,文章將從如下幾個方面說明:

    Filebeat是什么,可以用來干嘛

    Filebeat的原理是怎樣的,怎么構成的

    Filebeat應該怎么玩

Filebeat是什么

Filebeat和Beats的關系

首先Filebeat是Beats中的一員。

Beats在是一個輕量級日志采集器,其實Beats家族有6個成員,早期的ELK架構中使用Logstash收集、解析日志,但是Logstash對內存、CPU、io等資源消耗比較高。相比Logstash,Beats所占系統的CPU和內存幾乎可以忽略不計。

目前Beats包含六種工具:

  •  Packetbeat:網絡數據(收集網絡流量數據)
  •  Metricbeat:指標(收集系統、進程和文件系統級別的CPU和內存使用情況等數據)
  •  Filebeat:日志文件(收集文件數據)
  •  Winlogbeat:Windows事件日志(收集Windows事件日志數據)
  •  Auditbeat:審計數據(收集審計日志)
  •  Heartbeat:運行時間監控(收集系統運行時的數據)

Filebeat是什么

Filebeat是用于轉發和集中日志數據的輕量級傳送工具。Filebeat監視您指定的日志文件或位置,收集日志事件,并將它們轉發到Elasticsearch或 Logstash進行索引。

Filebeat的工作方式如下:啟動Filebeat時,它將啟動一個或多個輸入,這些輸入將在為日志數據指定的位置中查找。對于Filebeat所找到的每個日志,Filebeat都會啟動收集器。每個收集器都讀取單個日志以獲取新內容,并將新日志數據發送到libbeat,libbeat將聚集事件,并將聚集的數據發送到為Filebeat配置的輸出。

工作的流程圖如下:

Filebeat和Logstash的關系

因為Logstash是JVM跑的,資源消耗比較大,所以后來作者又用Golang寫了一個功能較少但是資源消耗也小的輕量級的logstash-forwarder。不過作者只是一個人,加入http://elastic.co公司以后,因為ES公司本身還收購了另一個開源項目Packetbeat,而這個項目專門就是用Golang的,有整個團隊,所以ES公司干脆把logstash-forwarder的開發工作也合并到同一個Golang團隊來搞,于是新的項目就叫Filebeat了。

Filebeat原理是什么

Filebeat的構成

Filebeat結構:由兩個組件構成,分別是inputs(輸入)和harvesters(收集器),這些組件一起工作來跟蹤文件并將事件數據發送到您指定的輸出,harvester負責讀取單個文件的內容。harvester逐行讀取每個文件,并將內容發送到輸出。為每個文件啟動一個harvester。harvester負責打開和關閉文件,這意味著文件描述符在harvester運行時保持打開狀態。如果在收集文件時刪除或重命名文件,Filebeat將繼續讀取該文件。這樣做的副作用是,磁盤上的空間一直保留到harvester關閉。默認情況下,Filebeat保持文件打開,直到達到close_inactive。

關閉harvester可以會產生的結果:

  •  文件處理程序關閉,如果harvester仍在讀取文件時被刪除,則釋放底層資源。
  •  只有在scan_frequency結束之后,才會再次啟動文件的收集。
  •  如果該文件在harvester關閉時被移動或刪除,該文件的收集將不會繼續。

一個input負責管理harvesters和尋找所有來源讀取。如果input類型是log,則input將查找驅動器上與定義的路徑匹配的所有文件,并為每個文件啟動一個harvester。每個input在它自己的Go進程中運行,Filebeat當前支持多種輸入類型。每個輸入類型可以定義多次。日志輸入檢查每個文件,以查看是否需要啟動harvester、是否已經在運行harvester或是否可以忽略該文件。

Filebeat如何保存文件的狀態

Filebeat保留每個文件的狀態,并經常將狀態刷新到磁盤中的注冊表文件中。該狀態用于記住harvester讀取的最后一個偏移量,并確保發送所有日志行。如果無法訪問輸出(如Elasticsearch或Logstash),Filebeat將跟蹤最后發送的行,并在輸出再次可用時繼續讀取文件。當Filebeat運行時,每個輸入的狀態信息也保存在內存中。當Filebeat重新啟動時,來自注冊表文件的數據用于重建狀態,Filebeat在最后一個已知位置繼續每個harvester。對于每個輸入,Filebeat都會保留它找到的每個文件的狀態。由于文件可以重命名或移動,文件名和路徑不足以標識文件。對于每個文件,Filebeat存儲唯一的標識符,以檢測文件是否以前被捕獲。

Filebeat何如保證至少一次數據消費

Filebeat保證事件將至少傳遞到配置的輸出一次,并且不會丟失數據。是因為它將每個事件的傳遞狀態存儲在注冊表文件中。在已定義的輸出被阻止且未確認所有事件的情況下,Filebeat將繼續嘗試發送事件,直到輸出確認已接收到事件為止。如果Filebeat在發送事件的過程中關閉,它不會等待輸出確認所有事件后再關閉。當Filebeat重新啟動時,將再次將Filebeat關閉前未確認的所有事件發送到輸出。這樣可以確保每個事件至少發送一次,但最終可能會有重復的事件發送到輸出。通過設置shutdown_timeout選項,可以將Filebeat配置為在關機前等待特定時間。

Filebeat怎么玩

壓縮包方式安裝

本文采用壓縮包的方式安裝,Linux版本,filebeat-7.7.0-linux-x86_64.tar.gz。 

  1. curl-L-Ohttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.0-linux-x86_64.tar.gz  
  2. tar -xzvf filebeat-7.7.0-linux-x86_64.tar.gz 

配置示例文件:filebeat.reference.yml(包含所有未過時的配置項)

配置文件:filebeat.yml

基本命令

詳情見官網:https://www.elastic.co/guide/en/beats/filebeat/current/command-line-options.html 

  1. export   #導出  
  2. run      #執行(默認執行)  
  3. test     #測試配置  
  4. keystore #秘鑰存儲  
  5. modules  #模塊配置管理  
  6. setup    #設置初始環境 

例如:./filebeat test config #用來測試配置文件是否正確

輸入輸出

支持的輸入組件:

Multilinemessages,Azureeventhub,CloudFoundry,Container,Docker,GooglePub/Sub,HTTPJSON,Kafka,Log,MQTT,NetFlow,Office 365 Management Activity API,Redis,s3,Stdin,Syslog,TCP,UDP(最常用的就是Log)

支持的輸出組件:

Elasticsearch,Logstash,Kafka,Redis,File,Console,ElasticCloud,Changetheoutputcodec(最常用的就是Elasticsearch,Logstash)

keystore的使用

keystore主要是防止敏感信息被泄露,比如密碼等,像ES的密碼,這里可以生成一個key為ES_PWD,值為ES的password的一個對應關系,在使用ES的密碼的時候就可以使用${ES_PWD}使用。

  •  創建一個存儲密碼的keystore:filebeat keystore create
  •  然后往其中添加鍵值對,例如:filebeatk eystore add ES_PWD
  •  使用覆蓋原來鍵的值:filebeat key store add ES_PWD–force
  •  刪除鍵值對:filebeat key store remove ES_PWD
  •  查看已有的鍵值對:filebeat key store list

例如:后期就可以通過${ES_PWD}使用其值,例如:

  1. output.elasticsearch.password:"${ES_PWD}" 

filebeat.yml配置(Log輸入類型為例)

詳情見官網:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html 

  1. type: log #input類型為log  
  2. enable: true #表示是該log類型配置生效  
  3. paths:     #指定要監控的日志,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:  
  4. - /var/log/* /*.log  #則只會去/var/log目錄的所有子目錄中尋找以".log"結尾的文件,而不會尋找/var/log目錄下以".log"結尾的文件。  
  5. recursive_glob.enabled: #啟用全局遞歸模式,例如/foo/**包括/foo, /foo/*, /foo/*/*  
  6. encoding:#指定被監控的文件的編碼類型,使用plain和utf-8都是可以處理中文日志的  
  7. exclude_lines: ['^DBG'] #不包含匹配正則的行  
  8. include_lines: ['^ERR', '^WARN']  #包含匹配正則的行  
  9. harvester_buffer_size: 16384 #每個harvester在獲取文件時使用的緩沖區的字節大小  
  10. max_bytes: 10485760 #單個日志消息可以擁有的最大字節數。max_bytes之后的所有字節都被丟棄而不發送。默認值為10MB (10485760)  
  11. exclude_files: ['\.gz$']  #用于匹配希望Filebeat忽略的文件的正則表達式列表  
  12. ingore_older: 0 #默認為0,表示禁用,可以配置2h,2m等,注意ignore_older必須大于close_inactive的值.表示忽略超過設置值未更新的  
  13. 文件或者文件從來沒有被harvester收集  
  14. close_* #close_ *配置選項用于在特定標準或時間之后關閉harvester。 關閉harvester意味著關閉文件處理程序。 如果在harvester關閉  
  15. 后文件被更新,則在scan_frequency過后,文件將被重新拾取。 但是,如果在harvester關閉時移動或刪除文件,Filebeat將無法再次接收文件 
  16. ,并且harvester未讀取的任何數據都將丟失。  
  17. close_inactive  #啟動選項時,如果在制定時間沒有被讀取,將關閉文件句柄  
  18. 讀取的最后一條日志定義為下一次讀取的起始點,而不是基于文件的修改時間  
  19. 如果關閉的文件發生變化,一個新的harverster將在scan_frequency運行后被啟動  
  20. 建議至少設置一個大于讀取日志頻率的值,配置多個prospector來實現針對不同更新速度的日志文件  
  21. 使用內部時間戳機制,來反映記錄日志的讀取,每次讀取到最后一行日志時開始倒計時使用2h 5m 來表示  
  22. close_rename #當選項啟動,如果文件被重命名和移動,filebeat關閉文件的處理讀取  
  23. close_removed #當選項啟動,文件被刪除時,filebeat關閉文件的處理讀取這個選項啟動后,必須啟動clean_removed  
  24. close_eof #適合只寫一次日志的文件,然后filebeat關閉文件的處理讀取  
  25. close_timeout #當選項啟動時,filebeat會給每個harvester設置預定義時間,不管這個文件是否被讀取,達到設定時間后,將被關閉  
  26. close_timeout 不能等于ignore_older,會導致文件更新時,不會被讀取如果output一直沒有輸出日志事件,這個timeout是不會被啟動的,  
  27. 至少要要有一個事件發送,然后haverter將被關閉  
  28. 設置0 表示不啟動  
  29. clean_inactived #從注冊表文件中刪除先前收獲的文件的狀態  
  30. 設置必須大于ignore_older+scan_frequency,以確保在文件仍在收集時沒有刪除任何狀態  
  31. 配置選項有助于減小注冊表文件的大小,特別是如果每天都生成大量的新文件  
  32. 此配置選項也可用于防止在Linux上重用inode的Filebeat問題  
  33. clean_removed #啟動選項后,如果文件在磁盤上找不到,將從注冊表中清除filebeat  
  34. 如果關閉close removed 必須關閉clean removed 
  35. scan_frequency #prospector檢查指定用于收獲的路徑中的新文件的頻率,默認10s  
  36. tail_files:#如果設置為true,Filebeat從文件尾開始監控文件新增內容,把新增的每一行文件作為一個事件依次發送,  
  37. 而不是從文件開始處重新發送所有內容。  
  38. symlinks:#符號鏈接選項允許Filebeat除常規文件外,可以收集符號鏈接。收集符號鏈接時,即使報告了符號鏈接的路徑,  
  39. Filebeat也會打開并讀取原始文件。 
  40. backoff: #backoff選項指定Filebeat如何積極地抓取新文件進行更新。默認1s,backoff選項定義Filebeat在達到EOF之后  
  41. 再次檢查文件之間等待的時間。  
  42. max_backoff: #在達到EOF之后再次檢查文件之前Filebeat等待的最長時間  
  43. backoff_factor: #指定backoff嘗試等待時間幾次,默認是2  
  44. harvester_limit:#harvester_limit選項限制一個prospector并行啟動的harvester數量,直接影響文件打開數  
  45. tags #列表中添加標簽,用過過濾,例如:tags: ["json"]  
  46. fields #可選字段,選擇額外的字段進行輸出可以是標量值,元組,字典等嵌套類型  
  47. 默認在sub-dictionary位置  
  48. filebeat.inputs:  
  49. fields:  
  50. app_id: query_engine_12  
  51. fields_under_root #如果值為ture,那么fields存儲在輸出文檔的頂級位置  
  52. multiline.pattern #必須匹配的regexp模式  
  53. multiline.negate #定義上面的模式匹配條件的動作是 否定的,默認是false  
  54. 假如模式匹配條件'^b',默認是false模式,表示講按照模式匹配進行匹配 將不是以b開頭的日志行進行合并  
  55. 如果是true,表示將不以b開頭的日志行進行合并  
  56. multiline.match # 指定Filebeat如何將匹配行組合成事件,在之前或者之后,取決于上面所指定的negate  
  57. multiline.max_lines #可以組合成一個事件的最大行數,超過將丟棄,默認500  
  58. multiline.timeout #定義超時時間,如果開始一個新的事件在超時時間內沒有發現匹配,也將發送日志,默認是5s  
  59. max_procs #設置可以同時執行的最大CPU數。默認值為系統中可用的邏輯CPU的數量。  
  60. name #為該filebeat指定名字,默認為主機的hostname 

實例一:Logstash作為輸出

filebeat.yml配置: 

  1. #=========================== Filebeat inputs =============================  
  2. filebeat.inputs:  
  3. # Each - is an input. Most options can be set at the input level, so  
  4. # you can use different inputs for various configurations.  
  5. # Below are the input specific configurations.  
  6. - type: log  
  7.   # Change to true to enable this input configuration.  
  8.   enabled: true  
  9.   # Paths that should be crawled and fetched. Glob based paths.  
  10.   paths:  #配置多個日志路徑  
  11.     -/var/logs/es_aaa_index_search_slowlog.log  
  12.     -/var/logs/es_bbb_index_search_slowlog.log  
  13.     -/var/logs/es_ccc_index_search_slowlog.log  
  14.     -/var/logs/es_ddd_index_search_slowlog.log  
  15.     #- c:\programdata\elasticsearch\logs\*  
  16.   # Exclude lines. A list of regular expressions to match. It drops the lines that are  
  17.   # matching any regular expression from the list.  
  18.   #exclude_lines: ['^DBG']  
  19.   # Include lines. A list of regular expressions to match. It exports the lines that are  
  20.   # matching any regular expression from the list.  
  21.   #include_lines: ['^ERR', '^WARN']  
  22.   # Exclude files. A list of regular expressions to match. Filebeat drops the files that  
  23.   # are matching any regular expression from the list. By default, no files are dropped.  
  24.   #exclude_files: ['.gz$']  
  25.   # Optional additional fields. These fields can be freely picked  
  26.   # to add additional information to the crawled log files for filtering  
  27.   #fields:  
  28.   #  level: debug  
  29.   #  review: 1  
  30.   ### Multiline options  
  31.   # Multiline can be used for log messages spanning multiple lines. This is common  
  32.   # for Java Stack Traces or C-Line Continuation  
  33.   # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [  
  34.   #multiline.pattern: ^\[  
  35.   # Defines if the pattern set under pattern should be negated or not. Default is false.  
  36.   #multiline.negate: false  
  37.   # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern  
  38.   # that was (not) matched before or after or as long as a pattern is not matched based on negate.  
  39.   # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash  
  40.   #multiline.match: after  
  41. #================================ Outputs =====================================  
  42. #----------------------------- Logstash output --------------------------------  
  43. output.logstash:  
  44.   # The Logstash hosts #配多個logstash使用負載均衡機制  
  45.   hosts: ["192.168.110.130:5044","192.168.110.131:5044","192.168.110.132:5044","192.168.110.133:5044"]    
  46.   loadbalance: true  #使用了負載均衡  
  47.   # Optional SSL. By default is off.  
  48.   # List of root certificates for HTTPS server verifications  
  49.   #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]  
  50.   # Certificate for SSL client authentication  
  51.   #ssl.certificate: "/etc/pki/client/cert.pem"   
  52.   # Client Certificate Key  
  53.   #ssl.key: "/etc/pki/client/cert.key" 

./filebeat -e #啟動filebeat

Logstash的配置: 

  1. input {  
  2.   beats {  
  3.     port => 5044    
  4.   }  
  5.  
  6. output {  
  7.   elasticsearch {  
  8.     hosts => ["http://192.168.110.130:9200"] #這里可以配置多個  
  9.     index => "query-%{yyyyMMdd}"   
  10.   }  

實例二:Elasticsearch作為輸出

filebeat.yml的配置: 

  1. ###################### Filebeat Configuration Example #########################  
  2. # This file is an example configuration file highlighting only the most common  
  3. # options. The filebeat.reference.yml file from the same directory contains all the  
  4. # supported options with more comments. You can use it as a reference. 
  5.  
  6. # You can find the full configuration reference here:  
  7. # https://www.elastic.co/guide/en/beats/filebeat/index.html  
  8. # For more available modules and options, please see the filebeat.reference.yml sample  
  9. # configuration file.  
  10. #=========================== Filebeat inputs =============================  
  11. filebeat.inputs:  
  12. # Each - is an input. Most options can be set at the input level, so  
  13. # you can use different inputs for various configurations.  
  14. # Below are the input specific configurations.  
  15. - type: log  
  16.   # Change to true to enable this input configuration.  
  17.   enabled: true  
  18.   # Paths that should be crawled and fetched. Glob based paths.  
  19.   paths:  
  20.     -/var/logs/es_aaa_index_search_slowlog.log  
  21.     -/var/logs/es_bbb_index_search_slowlog.log  
  22.     -/var/logs/es_ccc_index_search_slowlog.log  
  23.     -/var/logs/es_dddd_index_search_slowlog.log  
  24.     #- c:\programdata\elasticsearch\logs\*  
  25.   # Exclude lines. A list of regular expressions to match. It drops the lines that are  
  26.   # matching any regular expression from the list.  
  27.   #exclude_lines: ['^DBG']  
  28.   # Include lines. A list of regular expressions to match. It exports the lines that are  
  29.   # matching any regular expression from the list.  
  30.   #include_lines: ['^ERR', '^WARN']  
  31.   # Exclude files. A list of regular expressions to match. Filebeat drops the files that  
  32.   # are matching any regular expression from the list. By default, no files are dropped.  
  33.   #exclude_files: ['.gz$']  
  34.   # Optional additional fields. These fields can be freely picked  
  35.   # to add additional information to the crawled log files for filtering 
  36.   #fields:  
  37.   #  level: debug  
  38.   #  review: 1   
  39.   ### Multiline options   
  40.   # Multiline can be used for log messages spanning multiple lines. This is common 
  41.   # for Java Stack Traces or C-Line Continuation  
  42.   # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [  
  43.   #multiline.pattern: ^\[  
  44.   # Defines if the pattern set under pattern should be negated or not. Default is false.  
  45.   #multiline.negate: false  
  46.   # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern  
  47.   # that was (not) matched before or after or as long as a pattern is not matched based on negate.  
  48.   # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash 
  49.   #multiline.match: after   
  50. #============================= Filebeat modules =============================== 
  51. filebeat.config.modules:  
  52.   # Glob pattern for configuration loading 
  53.   path: ${path.config}/modules.d/*.yml  
  54.   # Set to true to enable config reloading  
  55.   reload.enabled: false 
  56.   # Period on which files under path should be checked for changes  
  57.   #reload.period: 10s  
  58. #==================== Elasticsearch template setting ==========================  
  59. #================================ General =====================================  
  60. # The name of the shipper that publishes the network data. It can be used to group  
  61. # all the transactions sent by a single shipper in the web interface.  
  62. name: filebeat222  
  63. # The tags of the shipper are included in their own field with each  
  64. # transaction published. 
  65. #tags: ["service-X", "web-tier"]  
  66. # Optional fields that you can specify to add additional information to the  
  67. # output.  
  68. #fields:  
  69. #  env: staging  
  70. #cloud.auth:  
  71. #================================ Outputs =====================================  
  72. #-------------------------- Elasticsearch output ------------------------------  
  73. output.elasticsearch:  
  74.   # Array of hosts to connect to.  
  75.   hosts: ["192.168.110.130:9200","92.168.110.131:9200"]  
  76.   # Protocol - either `http` (default) or `https`.  
  77.   #protocol: "https"  
  78.   # Authentication credentials - either API key or username/password.  
  79.   #api_key: "id:api_key"  
  80.   username: "elastic"  
  81.   password: "${ES_PWD}"   #通過keystore設置密碼 

./filebeat -e #啟動Filebeat

查看Elasticsearch集群,有一個默認的索引名字filebeat-%{[beat.version]}-%{+yyyy.MM.dd}

Filebeat模塊

官網:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html

這里我使用Elasticsearch模式來解析ES的慢日志查詢,操作步驟如下,其他的模塊操作也一樣:

前提:安裝好Elasticsearch和Kibana兩個軟件,然后使用Filebeat。

具體的操作官網有:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules-quickstart.html

第一步,配置filebeat.yml文件: 

  1. #============================== Kibana =====================================  
  2. # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.  
  3. # This requires a Kibana endpoint configuration.  
  4. setup.kibana:  
  5.   # Kibana Host  
  6.   # Scheme and port can be left out and will be set to the default (http and 5601)  
  7.   # In case you specify and additional path, the scheme is required: http://localhost:5601/path  
  8.   # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601  
  9.   host: "192.168.110.130:5601"  #指定kibana  
  10.   username: "elastic"   #用戶  
  11.   password: "${ES_PWD}"  #密碼,這里使用了keystore,防止明文密碼  
  12.   # Kibana Space ID  
  13.   # ID of the Kibana Space into which the dashboards should be loaded. By default,  
  14.   # the Default Space will be used.  
  15.   #space.id:  
  16. #================================ Outputs =====================================  
  17. # Configure what output to use when sending the data collected by the beat.  
  18. #-------------------------- Elasticsearch output ------------------------------ 
  19. output.elasticsearch:  
  20.   # Array of hosts to connect to.  
  21.   hosts: ["192.168.110.130:9200","192.168.110.131:9200"]  
  22.   # Protocol - either `http` (default) or `https`.  
  23.   #protocol: "https" 
  24.   # Authentication credentials - either API key or username/password.  
  25.   #api_key: "id:api_key"  
  26.   username: "elastic"  #es的用戶  
  27.   password: "${ES_PWD}" # es的密碼  
  28.   #這里不能指定index,因為我沒有配置模板,會自動生成一個名為filebeat-%{[beat.version]}-%{+yyyy.MM.dd}的索引 

第二步,配置Elasticsearch的慢日志路徑:

  1. cd filebeat-7.7.0-linux-x86_64/modules.d 

vim elasticsearch.yml:

第三步,生效ES模塊: 

  1. ./filebeat modules elasticsearch 

查看生效的模塊: 

  1. ./filebeat modules list 

第四步,初始化環境:

  1. ./filebeat setup -e 

第五步,啟動Filebeat: 

  1. ./filebeat -e 

查看Elasticsearch集群,如下圖所示,把慢日志查詢的日志都自動解析出來了:

到這里,Elasticsearch這個module就實驗成功了。 

 

責任編輯:龐桂玉 來源: 運維派
相關推薦

2017-09-05 08:52:37

Git程序員命令

2020-06-03 11:06:26

DNS域名緩存

2022-10-08 15:07:06

ChatOps運維

2019-07-15 07:58:10

前端開發技術

2017-07-20 16:55:56

Android事件響應View源碼分析

2024-10-23 16:02:40

JavaScriptPromiserejection

2021-08-02 10:01:09

Iterator接口Java項目開發

2021-05-18 09:00:28

Pythonclass

2021-08-17 09:55:05

JavaScript MicrotaskPromise

2021-08-30 10:01:01

Map接口HashMap

2021-05-27 09:01:14

Python文件讀寫Python基礎

2020-03-31 08:37:31

遞歸單鏈表反轉

2020-06-23 16:28:25

Nginx負載均衡服務器

2019-08-13 09:00:01

內網外網通信

2023-11-01 15:52:35

2020-07-28 17:27:53

Nginx 負載均衡模塊

2019-07-23 08:55:46

Base64編碼底層

2020-10-09 08:15:11

JsBridge

2019-04-22 10:08:52

NginxApacheWEB服務器

2021-05-21 09:01:56

Python繼承多態
點贊
收藏

51CTO技術棧公眾號

国产www.大片在线| 天堂中文最新版在线中文| 精品在线视频一区| 国产高清在线不卡| 日本亚洲欧洲无免费码在线| 亚洲精品国精品久久99热一| 麻豆视频在线| 欧美视频第二页| 黑人与亚洲人色ⅹvideos| 亚洲国产精品视频| 中文字幕福利片| 一区二区视频在线| 成人av小说网| 欧美激情一区二区三区| heyzo亚洲| 99久久久久久| 91好吊色国产欧美日韩在线| www.亚洲精品| 黄色影院一级片| 久久久三级国产网站| 国产免费黄视频| 久久久亚洲精品一区二区三区 | 一区二区三区的久久的视频| 国产精品毛片在线| 国产精品嫩草在线观看| 99精品免费网| 日本亚洲导航| 国产精品一区二区黑丝| 国产亚洲黄色片| 欧美激情一二三区| 日本女优天堂99伊人| 婷婷中文字幕综合| 日日夜夜精品一区| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲综合激情网| 99re8在线精品视频免费播放| 国产美女直播视频一区| 国内精品久久久久久久影视简单| 91国产高清在线| 精品久久久亚洲| 成人免费淫片aa视频免费| 国产一区视频在线观看免费| 久久av二区| 国内精品伊人久久久久av影院| 欧美久久久久久久久久久久久久| 91丨porny丨户外露出| 少妇一级淫免费放| 亚洲激情中文1区| 导航福利在线| 欧美亚洲动漫精品| a'aaa级片在线观看| 中文字幕精品在线| 亚洲图区在线| 国产在线视频欧美一区二区三区| 日韩影院在线观看| 国产男女在线观看| 一区二区激情视频| 国产黄色在线观看| 最近2019中文免费高清视频观看www99 | 99精品欧美一区二区三区小说| 成人免费看黄网址| 色老综合老女人久久久| av片在线观看免费| 国产香蕉精品视频一区二区三区| 伊人精品综合| 精品国产一二| 久久久精品2019中文字幕之3| 在线免费看污| 亚洲欧美国产一本综合首页| 亚洲免费福利一区| 亚洲欧洲一区二区在线观看| 亚洲欧洲国产日本综合| 99视频在线观看地址| 国产亚洲精品综合一区91| 亚洲国产一二三精品无码| 国产99精品国产| 日本最黄视频| 亚洲国产精品高清久久久| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 亚洲人成久久| 色综合久久久久无码专区| 偷拍一区二区三区| 欧美精选视频一区二区| 国产综合在线观看视频| 国产精品一区二区在线播放| 一个人免费观看视频www在线播放| 伊人久久综合97精品| 午夜影院欧美| 免费裸体美女网站| 欧美不卡在线视频| 成人av动漫在线观看| 国产又粗又猛又爽又黄的网站| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩视频免费看| 欧美高清视频一区二区三区在线观看| 久久亚洲二区三区| 波多野结衣乳巨码无在线观看| 国产成人精品日本亚洲| 成人免费毛片高清视频| 超碰在线免费公开| 国产精品视频一区国模私拍| 97久久精品人人做人人爽50路| 在线看av的网址| 国产精品久久久久久久久久三级 | 成人午夜激情网| 91色乱码一区二区三区| 毛片在线网址| 99re在线| 亚洲视频一二三| 亚洲精品一区三区三区在线观看| 久久精品aaaaaa毛片| 亚洲大尺度视频在线观看| 一区二区精彩视频| 亚洲熟妇无码av在线播放| 日韩你懂的在线播放| 欧美日韩三级| 在线视频专区| 日韩男女性生活视频| 亚洲国产精品ⅴa在线观看| 高清电影一区| 亚洲一区二区三区涩| 欧美日韩和欧美的一区二区| 五月开心六月丁香综合色啪 | 亚洲精品永久免费精品| 99视频一区| 日韩三级电影网| 国产美女久久精品香蕉69| 亚洲色图制服丝袜| 小嫩嫩12欧美| 成人免费淫片在线费观看| 欧美另类第一页| 久久影院午夜片一区| 97人人做人人爽香蕉精品| 久久久久久av无码免费网站下载| 亚洲国产精品电影在线观看| 日本中文在线一区| 国产在线二区| 欧美日韩系列| 日韩视频一区二区三区在线播放| 99在线精品视频| 国产精品成人一区二区艾草 | 99精品电影| 国产乱xxⅹxx国语对白| 色综合五月天导航| gogogo免费视频观看亚洲一| 国产91精品在线| 亚洲欧洲日产国码无码久久99| 中文字幕日韩在线视频| www.欧美日韩国产在线| 国产在视频一区二区三区吞精| 99热久久这里只有精品| 日韩三级影视基地| 久久精品视频网| 欧美人妖在线观看| 欧美r片在线| 亚洲va国产va天堂va久久| 欧美午夜精品久久久久久超碰| 国产精品永久| 蜜桃在线视频| 国产网站免费在线观看| 97超级碰碰碰久久久| 精品久久久久久国产91| 亚洲视频日本| www555久久| 欧美日韩黄色一级片| 欧美极品在线视频| 亚洲自拍偷拍av| 欧美视频亚洲视频| av资源在线播放| 黄色高清无遮挡| 国产精品高潮视频| 欧美日韩视频在线一区二区| 国产在线不卡一卡二卡三卡四卡| 亚洲精品三区| 亚洲1024| 日韩av电影免费播放| 日日噜噜噜夜夜爽亚洲精品 | 欧美精品色综合| 国产精品影视在线| 日本中文字幕在线一区| 毛片免费在线| 黄色片免费在线观看视频| 国内自拍欧美激情| 在线视频一区二区免费| 国产精品123区| 狠狠综合久久av一区二区蜜桃| 欧美精品电影| 亚洲免费一级视频| 久久国产手机看片| 最近2019中文字幕在线高清| 亚洲国产成人91porn| 精品一二线国产| 国产丝袜视频在线播放| 日韩欧美国产综合一区| 精品一区二区三区免费观看| 亚洲91网站| 日本天堂在线观看| 女人扒开屁股爽桶30分钟| 亚洲影视九九影院在线观看| 亚洲图片欧美日产|