構建海量日志分析平臺_第1頁
構建海量日志分析平臺_第2頁
構建海量日志分析平臺_第3頁
構建海量日志分析平臺_第4頁
構建海量日志分析平臺_第5頁
已閱讀5頁,還剩45頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、elk課程備注:elk:732021751學習加群/助教:構建ELK海量日志分析平臺講師:john大綱項目介紹架構設計Filebeat Redis Logstash ELK平臺構建Kibana數據分析ELK項目優化項目由來開發不能登錄線上服務器查看詳細日志,經過運維周轉費時費力日志數據分散在多個系統,難以查找與整合日志數據量巨大,速度太慢,需求無法全局掌控項目運行狀況日志數據數據分析.不夠實時寫代碼,無法分析統計數據ELK海量日志分析平臺Logstash+Elasticsearch+KibanaLogstash: Elasticsearch:,過濾,收集日志日志,提供搜索功能kibana:提供

2、web界面,支持 圖表展現。 filebeat:輕量級的日志收集工具很多公司都采用該架構構建分布式日志系,統計,和,freewheel,暢捷通等。統,包括新浪ELK海量日志分析平臺使用ELK的優點Logstash提供了大量插件,通過配置就可以完成各種不同日志處理需求有統一的查看界面(kibana),減少代碼量有助于開發分析排查問題效果圖效果圖架構設計使用filebeatfilebeat(6.6)->logstash(parse)->es->kibana如果logstash出問題會導致filebeat收集的數據丟失filebeat(6.6)->logstash(parse

3、)loadbalance->es->kibanafilebeat和>logstash耦合性太高filebeat(6.6)->redis->logstash(parse)->es->kibana里面redis是一個單線程的實例,redis單線程每秒處理能力一般是10W次左 右filebeat(6.6)->redis/kafka->logstash(parse)->es->kibanafilebeat(1.3)不支持輸出到kafka,5.x版本中支持輸出到kafka不使用filebeatlogstash->kafka->

4、logstash(parse)->es->kibana里面kafka支持水平擴展,可以使用多分區,支持多線程并行執行。在應用端收集日志的話,logstash比較重量級,性能消耗比filebeat大Filebeat用于日志收集和傳輸,相比Logstash更加輕量級和易部署,對系統開銷更小。架構設計線上服務器1010主從結構101112 1010可以使用多臺filebeatLogstash,filebeatredises

5、集群KibanafilebeatFilebeat輕量級的日志收集工具,使用go語言開發安裝部署【不依賴java】1::releases/filebeat-6-6-12:tar -zxvf filebeat-6.6.1-linux-x86_64.tar.gz 3:配置filebeat.yml文件(配置文件詳解filebeat_bak.yml) 4:啟動 ./filebeat -c filebeat_console.yml幫助命令:./filebeat -h5:運行nohup ./filebeat -c filebeat_console.yml >/dev/null 2>&1

6、&Filebeat的input和outputinput通過paths屬性指定要outputelasticsearch Logstash Kafkaredis file Console Cloud官網使用手冊地址:的數據ng-howto-filebeat.htmlRedisRedis介紹Redis安裝Redis配置Redis基本使用Redis介紹Redis是當前比較熱門的NOSQL系統之一,它是一個key-value系統。和Memcache類似,但很大程度補償了Memcache的不足,它支持的value類型相對,包括string、list、set、zset和hash。這些數據類型都支持p

7、ush/pop、add/remove及取交集并集和差集及更豐富的操作。在此基礎上,Redis支持各種不同方式的排序。同Memcache一樣,Redis數據都是緩存在計算機內存中,不同的是, Memcache只能將數據緩存到內存中,無法自動定期寫入硬盤,這就表示,一斷電或重啟,內存清空,數據丟失。所以Memcache的應用場景適用于緩存無需持久化的數據。而Redis不同的是它會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的的持久化。文件,實現數據Redis安裝Ø 從官網Redis 壓縮包,地址:穩定版即可。rootmaster # cd /home/es/app/ rootmas

8、ter app# wget 2.8.12.tar.gzØ 解壓安裝包rootmaster app# tar -zxvf redis-2.8.12.tar.gz rootmaster app# lsredis-2.8.12rootmaster app# cd redis-2.8.12Ø 執行make 對Redis解壓后文件進行編譯需要提前安裝好gcc相關的包( yum install -y open-ssl-devel gcc glibc gcc-c*)rootmaster redis-2.8.12# make MALLOC=libcØ 編譯后,進入src文件夾,執

9、行make install進行Redis安裝rootmaster redis-2.8.12# cd src/rootmaster src# make install PREFIX=/usr/local/redisRedis配置Ø 為了方便管理,將Redis文件中的conf配置文件和常用命令移動到統一文件中a) 創建redis.conf文件rootmaster redis# mkdir -p /usr/local/redis/etcb) cp相關文件到redis目錄 cp前面加 表示拷貝直接覆蓋不進行詢問:rootmaster redis-2.8.12# cp redis.conf /

10、usr/local/redis/etc/rootmaster src# cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-sentinel redis-server /usr/local/redis/bin/Ø 執行Redis-server 命令,啟動Redis 服務rootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-serverRedis基本使用用本地客戶端命令連接rootmaster bin# ./redis-cli

11、6; 獲取所有鍵:6379> keys *Ø 字符串操作:6379> SET man "一個男人“:6379> GET manFilebeat outputRedis1:修改配置filebeat_redis.yml-output.html2:啟動redisrootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-server rootmaster bin# ./redis-cli 3:啟動Filebeat 并輸入測試數據./filebe

12、at -c filebeat_redis.yml4:查看redis :6379> keys *:6379> llen filebeat:6379> rpop filebeat備注:registry偏移量Logstash是一個管理日志和的工具。安裝部署1:首先安裝java(建議1.8)2:releases/logstash-6-6-1。3:tar -zxvf logstash-6.6.1.tar.gz4:bin/logstash -e 'input stdin output stdout '5: bin/lo

13、gstash -f config/logstash-test.confLogstash -f使用-f參數替換命令行中的-e參數bin/logstash -f logstash-simple.confbin/logstash -f logstash-simple.conf -auto- reloadLogstash inputsfile修改配置文件file_stdout.conf 啟動Logstash并輸入測試數據bin/logstash -f config/file_stdout.confstart_position:指定從什么位置開始也可以指定為從頭開始。文件數據,默認是結束位置,logst

14、ash-6.6.1/data/plugins/inputs/file/.sincedb_b3155注意:start_position僅在該文件從未被過的時候起作用,因為logstash在當文件被一個.sincedb文件來跟蹤文件的文件的時候會位置,過一次之后,下次就會從.sincedb中的位置,start_position參數就無效了。文件默認在用戶目錄下。注意一個坑:ignore_older屬性,表示忽略老的數據,值默認為86400,表示忽略24小時以前的數據。如果你新一個24小時以上沒有被修改過的老文件的話,就算把start_position設置為beginning,也無法獲取之前的數據L

15、ogstash inputsredisredis.html修改配置文件redis_stdout.conf啟動Logstashbin/logstash -f config/redis_stdout.conf Redis輸入測試數據:6379> lpush filebeat aaa:6379> lpush filebeat bbbLogstash outputselasticsearch地址:outputs-elasticsearch.html 修改配置文件stdin_es.conf 啟動Logstashbin/logstash -f config/

16、stdin_es.conf默認向es中創建的索引庫是logstash-%+YYYY.MM.dd,可以利用es中的索引模板特性定義索引庫的一些基礎配置查看es所有index命令行:curl -u elastic:123456 '10:9200/_cat/indices?v'刪除es 指定indexcurl -u elastic:123456 -XDELETE'10:9200/logstash-2019.04.22logstash讀寫性能調整優化源數據格式介紹Elk整個項目流程打通filebeatØ 修改配置文件fi

17、lebeat_file_redis.ymlØ 啟動redisrootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-server rootmaster bin# ./redis-cliØ 啟動filebeat./filebeat -c filebeat_file_redis.ymlØ 查看redis:6379> keys *1) "filebeat" :6379> llen filebeat (integer) 548167El

18、k整個項目流程打通LogstashØ 修改配置文件redis_es.confØ 啟動Logstashbin/logstash -f config/redis_es.confØ 報錯2019-04-23T10:37:41,427WARN logstash.outputs.elasticsearch Could not index event to Elasticsearch. :status=>400, :action=>"index",:_id=>nil, :_index=>"logstash-2019.04.

19、22", :_type=>"doc", :routing=>nil, #<LogStash:Event:0x14938bb6>, :response=>"index"=>"_index"=>"logsta sh-2019.04.22", "_type"=>"doc", "_id"=>"X_IOSGoB_GogXX3xRW19", "status"=>

20、;400, "error"=>"type"=>"mapper_parsing_exception", "reason"=>"failed to parse field host of type text", "caused_by"=>"type"=>"illegal_state_exception", "reason"=>"Can't get text on a

21、START_OBJECT at 1:9"Elk整個項目流程打通LogstashØ是host內包含name引起的。解決辦法就是添加配置進行過濾:主要Ø 解決:重命名字段(redis_es.conf添加如下配置)filter mutate rename => "hostname" => "host" Elk整個項目流程打通KibanaØ 啟動Kibanabin/kibanaØ Kibana使用Monitoring:ElasticSearch集群Discovery:數據檢索logstash的filt

22、er之grokLogstash中的filter可以支持對數據進行過濾。Ø地址:grok:支持120多種內置的表達式,有一些簡單常用的內容就可以使用內置的表達式進行core/blob/master/patterns/grok-patterns示例修改配置文件filter.conf 啟動Logstashbin/logstash -f config/filter.conf輸入測試數據logstash的filter之grok自定義的grok表達式格式(?<usetime>PATTERN) usetime:表示定義的字段名稱PATTERN:此處需要寫正則表達式示例修改配置文件fil

23、ter2.conf 啟動Logstashbin/logstash -f config/filter2.conf輸入測試數據logstash中的if else如果我們在獲取日志的話是需要同時多個文件,那這多個文件的規則肯定不一樣,那就需要根據不同的文件執行不同的邏輯了。spider日志和tomcat的日數據是屬于那個文件規則。假設我們要志,這樣就需要的,使用對應的Filebeat多數據源Filebeat-添加log_type字段-測試地址:log.html修改配置filebeat_tomcat_console.yml 修改配置filebeat_spider_console.yml 啟動fileb

24、eat./filebeat -c filebeat_tomcat_console.yml./filebeat -c filebeat_spider_console.yml輸入測試數據echo '26 - - 30/May/2019:17:38:20 "GET/data/cache/style_1_forum_index.css?y7a HTTP/1.1" 200 2331' >> tomcat.logecho "頁面.url:.耗時1000毫秒.當前時間戳:1473056604523" >>

25、 spider.logFilebeat多數據源Filebeat-添加log_type字段-redis修改配置filebeat_tomcat_redis.yml 修改配置filebeat_spider_redis.yml 啟動filebeat./filebeat -c filebeat_tomcat_redis.yml./filebeat -c filebeat_spider_redis.yml輸入測試數據echo '26 - - 30/May/2019:17:38:20 "GET/data/cache/style_1_forum_index.css?y

26、7a HTTP/1.1" 200 2331' >> tomcat.logecho "頁面.url:.耗時1000毫秒.當前時間戳:1473056604523" >> spider.log查看redis:6379> keys *1) "filebeat" :6379> llen filebeat (integer) 1Logstash數據Logstash-spider修改配置文件filter_spider.conf.url:(?<url>S+).耗時正則表

27、達式:頁面(?<usetime>0-9+)毫秒.當前時間戳:(?<currenttime>0-9+)運行Logstashbin/logstash -f config/filter_spider.conf輸入測試數據頁面.url:.耗時1000毫秒.當前時間戳:1473056604523Logstash數據Logstash-tomcat修改配置文件filter_tomcat.conf正則表達式:%COMMONAPACHELOG封裝好的規則:patterns-core/blob/master/patterns/grok-patterns運行Logstashbin/logst

28、ash -f config/filter_tomcat.conf輸入測試數據26 - - 30/May/2019:17:38:20 "GET/source/plugin/wsh_wx/img/wsh_zk.css HTTP/1.1" 200 1482Logstash 的if else使用Logstash-if else查看es所有index列表命令行:curl -u elastic:123456 '10:9200/_cat/indices?v'刪除indexcurl -u elastic:123456 -XDE

29、LETE '10:9200/logstash- 2019.04.22'修改配置文件redis_filter_es.conf 運行Logstashbin/logstash -f config/redis_filter_es.conf命令行查看es數據curl -u elastic:123456 -XGETLogstash 的if else使用Logstash-if elseKibana查看數據bin/kibanalogstash的時區問題logstash中的timestamp時間比我們當前時間相差8個小時這是因為默認情況下logstash生成的時間是使用UTC時間。而我們是UTC+8時區。解決方案是在kibana,在kibana顯示的時候會瀏覽器的當前時區,然后在頁面上轉換時間內容的顯示。Elk海量日志分析平臺構建步驟啟動redis啟

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論