网站建设与维护实验报告,网络推广平台加盟,专门做产品推广ppt的网站,温州网站建设报价ELK是一种强大的分布式日志管理解决方案#xff0c;它由三个核心组件组成#xff1a; Elasticsearch#xff1a;作为分布式搜索和分析引擎#xff0c;Elasticsearch能够快速地存储、搜索和分析大量的日志数据#xff0c;帮助用户轻松地找到所需的信息。 Logstash#xf… ELK是一种强大的分布式日志管理解决方案它由三个核心组件组成 Elasticsearch作为分布式搜索和分析引擎Elasticsearch能够快速地存储、搜索和分析大量的日志数据帮助用户轻松地找到所需的信息。 Logstash作为数据处理管道Logstash能够从各种来源收集日志数据并进行过滤、转换和发送到Elasticsearch等目标存储中。 Kibana作为Web界面Kibana能够帮助用户可视化和分析日志数据创建仪表板和报表以便更好地理解和监控业务中的日志信息。 ELK能够帮助业务实现日志数据的集中管理、快速搜索和分析从而提高故障排查的效率优化系统性能以及发现潜在的安全威胁。通过ELK业务可以更好地利用日志数据来支持决策和监控业务运营。 下面本文会介绍ELK的安装以及使用 搭建ELK
准备docker-compose.yml
version: 3
services:elasticsearch:image: elasticsearch:6.4.0container_name: elasticsearchenvironment:- cluster.nameelasticsearch #设置集群名称为elasticsearch- discovery.typesingle-node #以单一节点模式启动- ES_JAVA_OPTS-Xms2048m -Xmx2048m #设置使用jvm内存大小volumes:- /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载- /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载ports:- 9200:9200- 9300:9300kibana:image: kibana:6.4.0container_name: kibanalinks:- elasticsearch:es #可以用es这个域名访问elasticsearch服务depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动environment:- elasticsearch.hostshttp://es:9200 #设置访问elasticsearch的地址ports:- 5601:5601logstash:image: logstash:6.4.0container_name: logstashvolumes:- /mnt/data3/dockerfiles/elk2/elk_stanrd/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务ports:- 4560:4560logstash.conf
input {tcp {mode serverhost 0.0.0.0port 4560codec json_lines}
}output {if java in [tags] {elasticsearch {hosts es:9200index java-logs-%{YYYY.MM.dd}}}if python in [tags] {elasticsearch {hosts es:9200index python-logs-%{YYYY.MM.dd}}}
}启动
docker-compose up -d
开启kibana的端口
centos开启防火墙 访问
ip{你的端口5601} 看到这样的界面代表运行成功
配置索引
点击management---kibana---index patterns 这里我会选择这一个点击create index pattern创建
springboot整合ELK
配置maven
需要加入
dependencygroupIdnet.logstash.logback/groupIdartifactIdlogstash-logback-encoder/artifactIdversion5.3/version
/dependency 打印日志的时候可以使用lombok或其他框架但是注意一下之前使用log攻击的bug尽量跳过这些版本注意低版本的springboot默认的日志库有问题。 配置文件
logging:config: ./config/logback-spring.xml
日志配置文件模板
configuration!-- %m输出的信息, %p日志级别, %t线程名, %d日期, %c类的全名, %i索引 --!-- appender是configuration的子节点,是负责写日志的组件 --!-- ConsoleAppender把日志输出到控制台 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%n/pattern!-- 控制台也要使用utf-8不要使用gbk --charsetUTF-8/charset/encoder/appender!-- RollingFileAppender:滚动记录文件先将日志记录到指定文件当符合某个条件时将日志记录到其他文件 --!-- 1.先按日期存日志日期变了将前一天的日志文件名重命名为xxx%日期%索引新的日志仍然是sys.log --!-- 2.如果日期没有变化但是当前日志文件的大小超过1kb时对当前日志进行分割 重名名 --appender namesyslog classch.qos.logback.core.rolling.RollingFileAppenderFilelog/ant-back.log/File!-- rollingPolicy:当发生滚动时决定 RollingFileAppender 的行为涉及文件移动和重命名。 --!-- TimeBasedRollingPolicy 最常用的滚动策略它根据时间来制定滚动策略既负责滚动也负责出发滚动 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 活动文件的名字会根据fileNamePattern的值每隔一段时间改变一次 --!-- 文件名log/sys.2017-12-05.0.log --fileNamePatternlog/ant-back.%d.%i.log/fileNamePattern!-- 每产生一个日志文件该日志文件的保存期限为120天 --maxHistory120/maxHistorytimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- maxFileSize:这是活动文件的大小默认值是10MB,本篇设置为100MB --maxFileSize100MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyencoder!-- pattern节点用来设置日志的输入格式 --pattern%d %p (%file:%line\)- %m%n/pattern!-- 记录日志的编码 --charsetUTF-8/charset/encoder/appender!-- 控制台日志输出级别 --!-- root levelinfoappender-ref refSTDOUT//root--!-- 指定项目中某个包当有日志操作行为时的日志记录级别 --!-- com.example.ant为根包也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG --!-- 级别依次为【从高到低】FATAL ERROR WARN INFO DEBUG TRACE --!--logger namecom.example.ant levelFATALappender-ref refsyslog//logger--!-- 为logstash输出的JSON格式的Appender --appender namelogstashclassnet.logstash.logback.appender.LogstashTcpSocketAppender!--可以访问的logstash日志收集端口--destinationip:4560/destination!-- 日志输出编码 --encoderclassnet.logstash.logback.encoder.LoggingEventCompositeJsonEncoderproviderstimestamptimeZoneUTC/timeZone/timestamppatternpattern{tags: java,thread: %thread,logLevel: %level,message: %message,class: %logger{40},serviceName: asr_hot_word,trace: %X{X-B3-TraceId:-},span: %X{X-B3-SpanId:-},exportable: %X{X-Span-Export:-},pid: ${PID:-}}/pattern/pattern/providers/encoder/appender!-- 日志输出级别 --root levelINFOappender-ref refSTDOUT/appender-ref reflogstash //root/configuration配置好启动点击discovery即可查看日志信息