日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

性能优越的轻量级日志收集工具,微软、亚马逊都在用!

發布時間:2025/3/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 性能优越的轻量级日志收集工具,微软、亚马逊都在用! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ELK日志收集系統大家都知道,但是還有一種日志收集系統EFK,肯定有很多朋友不知道!這里的F指的是Fluentd,它具有Logstash類似的日志收集功能,但是內存占用連Logstash的十分之一都不到,性能優越、非常輕巧。本文將詳細介紹Fluentd的使用,主要用來收集SpringBoot應用的日志,希望對大家有所幫助!


Fluentd 簡介

Fluentd是一款開源的日志收集功能,致力于為用戶搭建統一的日志收集層,和Elasticsearch、Kibana一起使用可以搭建EFK日志收集系統。什么是統一的日志收集層呢?看下下面這張圖就清楚了!

來自Fluentd官網


安裝

  • 下載Fluentd的Docker鏡像;

docker?pull?fluent/fluentd:v1.10
  • 將默認配置fluent.conf文件復制到/mydata/fluentd/目錄下,配置信息如下:

<source>@type??forward@id????input1@label?@mainstreamport??24224 </source><filter?**>@type?stdout </filter><label?@mainstream><match?docker.**>@type?file@id???output_docker1path?????????/fluentd/log/docker.*.logsymlink_path?/fluentd/log/docker.logappend???????truetime_slice_format?%Y%m%dtime_slice_wait???1mtime_format???????%Y%m%dT%H%M%S%z</match><match?**>@type?file@id???output1path?????????/fluentd/log/data.*.logsymlink_path?/fluentd/log/data.logappend???????truetime_slice_format?%Y%m%dtime_slice_wait???10mtime_format???????%Y%m%dT%H%M%S%z</match> </label>
  • 運行Fluentd服務,需要開放24221~24224四個端口用于接收不同類型的日志;

docker?run?-p?24221:24221?-p?24222:24222?-p?24223:24223?-p?24224:24224?--name?efk-fluentd?\ -v?/mydata/fluentd/log:/fluentd/log?\ -v?/mydata/fluentd/fluent.conf:/fluentd/etc/fluent.conf?\ -d?fluent/fluentd:v1.10
  • 第一次啟動可能會失敗,修改目錄權限后重新啟動即可;

chmod?777?/mydata/fluentd/log/
  • 使用root用戶進入Fluentd容器內部;

docker?exec?-it?--user?root?efk-fluentd?/bin/sh
  • 安裝Fluentd的Elasticsearch插件;

fluent-gem?install?fluent-plugin-elasticsearch
  • 如果你依然想使用docker-compose一次性安裝EFK的話,可以使用如下腳本,注意使用user:root啟動就不需要再修改目錄權限了!

version:?'3' services:elasticsearch:image:?elasticsearch:6.4.0container_name:?efk-elasticsearchuser:?rootenvironment:-?"cluster.name=elasticsearch"?#設置集群名稱為elasticsearch-?"discovery.type=single-node"?#以單一節點模式啟動-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m"?#設置使用jvm內存大小-?TZ=Asia/Shanghaivolumes:-?/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins?#插件文件掛載-?/mydata/elasticsearch/data:/usr/share/elasticsearch/data?#數據文件掛載ports:-?9200:9200-?9300:9300kibana:image:?kibana:6.4.0container_name:?efk-kibanalinks:-?elasticsearch:es?#可以用es這個域名訪問elasticsearch服務depends_on:-?elasticsearch?#kibana在elasticsearch啟動之后再啟動environment:-?"elasticsearch.hosts=http://es:9200"?#設置訪問elasticsearch的地址-?TZ=Asia/Shanghaiports:-?5601:5601fluentd:image:?fluent/fluentd:v1.10container_name:?efk-fluentduser:?rootenvironment:-?TZ=Asia/Shanghaivolumes:-?/mydata/fluentd/log:/fluentd/log-?/mydata/fluentd/fluent.conf:/fluentd/etc/fluent.confdepends_on:-?elasticsearch?#kibana在elasticsearch啟動之后再啟動links:-?elasticsearch:es?#可以用es這個域名訪問elasticsearch服務ports:-?24221:24221-?24222:24222-?24223:24223-?24224:24224
  • 使用新的配置文件fluent.conf替換原來的配置文件,然后重新啟動Fluentd服務,新的配置文件會在下面給出。

? ?

Fluentd配置詳解

接下來我們來介紹下Fluentd配置文件如何配置,先放出完全配置,然后我們對里面的一些配置要點進行詳細說明。

完全配置

<source>@type??tcp@id????debug-inputport??24221tag?debug<parse>@type?json</parse> </source><source>@type??tcp@id????error-inputport??24222tag?error<parse>@type?json</parse> </source><source>@type??tcp@id????business-inputport??24223tag?business<parse>@type?json</parse> </source><source>@type??tcp@id????record-inputport??24224tag?record<parse>@type?json</parse> </source><filter?record>@type?parserkey_name?messagereserve_data?trueremove_key_name_field?true<parse>@type?json</parse> </filter><match?fluent.**>@type?stdoutoutput_type?json </match><match?**>@type?elasticsearchhost?192.168.3.101port?9200type_name?dockerlogstash_format?truelogstash_prefix?docker-${tag}-logslogstash_dateformat?%Y-%m-%dflush_interval?5sinclude_tag_key?true </match>

配置要點解析

<source>

定義了日志收集的來源,可以有tcp、udp、tail(文件)、forward(tcp+udp)、http等方式。

這里我們從tcp請求收集日志,端口為24221,并且設置了tag為debug。

<source>@type??tcp@id????debug-inputport??24221tag?debug<parse>@type?json</parse> </source>

<parse>

定義對原始數據的解析方式,可以將日志轉化為JSON。

比如我們將debug日志轉化為JSON可以進行如下配置。

<source>@type??tcp@id????debug-inputport??24221tag?debug<parse>@type?json</parse> </source>

<filter>

可以對收集的日志進行一系列的處理,比如說將日志打印到控制臺或者對日志進行解析。

將所有日志打印到控制臺的配置:

<filter?**>@type?stdout </filter>

對于tag為record來源的日志,我們將其中的message屬性轉化為JSON格式,如果不進行轉化的話,message屬性將會是一個字符串。

<filter?record>@type?parserkey_name?messagereserve_data?trueremove_key_name_field?true<parse>@type?json</parse> </filter>

<match>

定義了收集到的日志最后輸出到哪里,可以輸出到stdout(控制臺)、file、elasticsearch、mongo等里面。

這里我們使用elasticsearch來存儲日志信息,logstash_format、logstash_prefix、logstash_dateformat主要用來控制日志索引名稱的生成,當前配置生成debug日志的索引格式為docker-debug-logs-2020-06-03,flush_interval用來控制日志輸出到elasticsearch的時間間隔。

<match?**>@type?elasticsearchhost?192.168.3.101port?9200type_name?dockerlogstash_format?truelogstash_prefix?docker-${tag}-logslogstash_dateformat?%Y-%m-%dflush_interval?5sinclude_tag_key?true </match>

替換配置文件

替換掉原來的/mydata/fluentd/fluent.conf配置文件,然后再重新啟動服務,我們的Fluentd服務就可以開始收集日志了。

docekr?restart?efk-fluentd


結合SpringBoot使用

其實Fluentd收集日志的原理和Logstash一樣,都是通過tcp端口來收集日志,所以我們只要把logback配置文件中原來Logstash日志收集地址端口改為Fluentd的即可。

  • 修改logback-spring.xml配置文件;

<!--DEBUG日志輸出到LogStash--> <appender?name="LOG_STASH_DEBUG"?class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>${LOG_STASH_HOST}:24221</destination> </appender><!--ERROR日志輸出到LogStash--> <appender?name="LOG_STASH_ERROR"?class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>${LOG_STASH_HOST}:24222</destination> </appender><!--業務日志輸出到LogStash--> <appender?name="LOG_STASH_BUSINESS"?class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>${LOG_STASH_HOST}:24223</destination> </appender><!--接口訪問記錄日志輸出到LogStash--> <appender?name="LOG_STASH_RECORD"?class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>${LOG_STASH_HOST}:24224</destination> </appender>
  • 如果你的Fluentd不是部署在原來Logstash的服務器上,還需要修改application-dev.yml配置中的logstash.host屬性。

logstash:host:?localhost
  • 啟動并運行我們的SpringBoot應用。

??

Kibana中查看日志

至此我們的EFK日志收集系統搭建完成了,只需在Kibana中使用即可。

  • 在Management->Kibana->Index Patterns中可以創建Index Patterns,Kibana服務訪問地址:http://192.168.3.101:5601

  • 創建完成后查看日志,可以看出該日志收集功能和我們之前搭建的ELK系統完全相同。

?

Logstash vs Fluentd

接下來我們來對這兩個日志收集工具的各個方面做個對比。

對比方面LogstashFluentd

內存占用

啟動1G左右

啟動60M左右

CPU占用

較高

較低

支持插件

豐富

豐富

通用日志解析

支持grok(基于正則表達式)解析

支持正則表達式解析

特定日志類型

支持JSON等主流格式

支持JSON等主流格式

數據過濾

支持

支持

數據buffer發送

插件支持

插件支持

運行環境

JRuby實現,依賴JVM環境

CRuby、C實現,依賴Ruby環境

線程支持

支持多線程

多線程受GIL限制

參考資料

官方文檔:https://docs.fluentd.org/

項目源碼地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-log

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

總結

以上是生活随笔為你收集整理的性能优越的轻量级日志收集工具,微软、亚马逊都在用!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91在线一区二区三区 | 五月天婷婷在线播放 | 伊人免费在线观看高清版 | jizz日本在线播放 | 国产视频久久久久久久 | 性xxx18 | 黄色羞羞网站 | 亚洲成人精品在线观看 | 午夜视 | 久久久欧美精品sm网站 | 中文字幕第23页 | av色哟哟| 久久久久久久久久影视 | 不卡中文一二三区 | 黄污视频网站 | 黄色小说视频网站 | 韩国美女一区 | 麻豆av导航| 国产粉嫩av | 午夜影剧院 | 91精品国产乱码久久 | 欧美成人综合 | 亚洲免费一级 | 5月婷婷6月丁香 | jizz免费| 国产1级片| 欧美性猛交一区二区三区精品 | 日本色婷婷 | 国产亚洲欧美一区二区三区 | 国产三级日本三级在线播放 | 韩国毛片一区二区三区 | 国产成年网站 | 亚洲第一天堂影院 | jzjzz成人免费视频 | 任你操精品| 一级特黄录像免费看 | av日韩精品 | 亚洲免费福利视频 | 高清国产视频 | av老司机在线播放 | 国产精品高清无码 | 亚洲欧美日韩图片 | 国产精品久久久久免费 | 91成人品 | 国产成人一区二区三区电影 | 国精产品一区一区三区有限公司杨 | jizzjizz亚洲 | 日韩城人免费 | 97超碰总站| 日本黄色天堂 | 天天做天天爱天天爽综合网 | 亚洲欧洲成人在线 | 久久天堂影院 | 欧美日韩国产激情 | 精品久久久久久久久久久久久久久久 | 国产精品久久久久永久免费看 | 六月丁香激情 | 美女被啪羞羞粉色视频 | 在线观看视频国产 | 日韩视频免费观看高清完整版 | 日韩精品在线免费看 | 91猎奇在线观看 | 亚洲天堂男人 | 黄色精品免费 | 国产色图片 | 欧美激情网站 | 米奇影视第四色 | 免费亚洲一区二区 | 亚洲最大成人在线视频 | 国产精品色在线 | 日韩美女三级 | 成人欧美一区二区三区在线播放 | 精品无码国产av一区二区三区 | 久久精品爱 | 国产精品av在线 | 久久久高清视频 | 深爱婷婷| 一级毛片儿 | 黄色亚洲视频 | 成人开心网| 99久久黄色| 久久久久人妻一区二区三区 | 爽天天天天天天天 | 91人妻一区二区 | 亚洲精品国产精品国自产观看 | 国产黄网站 | 爱的色放韩国电影 | 国产91一区在线精品 | 天天操天天做 | 亚洲色图狠狠干 | 成人一区二区三区仙踪林 | 成人av免费网站 | 亚洲精品一区二区三区影院忠贞 | 久久免费公开视频 | 黑人操亚洲美女 | 国产美女久久久久 | 欧美夜夜操 | 国产aaaaaa | 国产成人精品av久久 |