网站模板下载大全,乌克兰服装网站建设,简单网站如何制作,定制西服大概多少钱一套#x1f61c;作 者#xff1a;是江迪呀✒️本文关键词#xff1a;elasticsearch、kibana、logstash、日志收集、日志可视化☀️每日 一言#xff1a;坚持就是胜利啊#xff0c;哥~ 一、前言 面试官#xff1a;在日常开发工作中你们是如何查看日志的呢#x… 作 者是江迪呀✒️本文关键词elasticsearch、kibana、logstash、日志收集、日志可视化☀️每日 一言坚持就是胜利啊哥~ 一、前言 面试官在日常开发工作中你们是如何查看日志的呢 我通过控制台查看 面试官…… 上面显然是个滑稽的回答那么真正的开发中你们使用什么样的方式来查看日志呢我先说下我的吧我是用过最原始的也是最麻烦的方式将日志从服务器下载下来然后将日志文件放到记事本中使用crtl F搜索我想要的日志文件。这种方式让我记忆犹新因为太过于繁琐了查询效率太低。当然我也使用过很方便的通过kibana查询日志这种方式也让我难忘因为它太好用了效率太高。今天我们就介绍下如何使用 ELK Logstash实现日志可视化。
二、ELK、Kibana、Logstash之间的关系
有些时候一张图胜过千言万语 还是要说明下有的同学可能晕图再说我画的也不一定到位其实是了凑篇幅。
2.1 Logstash
Logstash是一个用于处理和管理日志数据的开源工具它可以帮助你从不同的数据源如日志文件、数据库、消息队列等中采集、转换和传输数据并将其存储到目标位置如 Elasticsearch、数据库、文件等中。
2.2 Elaticsearch
Elasticsearch是一个开源的分布式搜索和分析引擎主要用于处理和存储大规模的实时数据。可以提供全文搜索、实时数据分析、数据聚合和可视化功能。
2.3 Kibana
Kibana 是一个开源的数据可视化工具专为 Elasticsearch 设计用于展示 Elasticsearch 中的数据和分析结果。它提供了一个用户友好的 Web 界面使用户能够轻松地创建、定制和共享各种类型的图表、图形和仪表盘以便更好地理解和分析存储在 Elasticsearch 中的数据。 三、Logstash的安装
我们选择在Linux上面安装Logstash安装步骤如下
3.1 下载 Logstash
curl -O https://artifacts.elastic.co/downloads/logstash/logstash-7.10.1.tar.gz如果上面的方式不可行你可以直接去官方下载Logstash-8.9.1下载
如果你的网不行你可以直接通过网盘Logstash-8.9.1网盘下载 提取码bj57
3.2 上传Logstash到服务器
你可以通过xftp如果没有的话你可以使用rz命令在使用这个命令之前你必须确保linux已经安装了lrzsz安装命令如下:
sudo apt-get update
sudo apt-get install lrzsz输入rz即可上传文件。
rz3.2 解压
tar -zxvf logstash-8.9.1-linux-x86_64.tar.gz3.3 配置logstash
进入加压后的config目录
cd logstash-8.9.1/bin创建配置文件你还可以使用Logstash自带的logstash-sample.conf文件但是建议自己创建一个
touch logstash.conf进入配置文件
vim logstash.conf添加的内容如下
input {#日志打印的地址path地址就是你在项目中指定日志输出的目录。file{path/usr/project-prod/logs/*.logstart_positionbeginning}
}
#过滤 不重要不用写
filter {}
#日志输出到elasticsearch
output {elasticsearch {hosts [服务器地址:elasticsearch的端口号]#这是输出的数据在 Elasticsearch 中的索引名称。logs-%{YYYY.MM.dd} 是一个动态的索引名称其中 %{YYYY.MM.dd} 是 Logstash 的时间戳格式化指令用来在索引名称中添加当前日期比如 logs-2023.07.25。index logs-%{YYYY.MM.dd}}
}
3.4 启动Logstash
进入bin目录
cd logstash-8.9.1/bin启动并指定配置文件
./logstash -f ../config/logstash.conf四、项目配置
你的项目需要配置下要保证你项目日志输出的路径和Logstash收集日志的路径保持一致
4.1 在项目根目录创建logback-spring.xml文件
?xml version1.0 encodingUTF-8?
!-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL比如: 如果设置为WARN则低于WARN的信息都不会输出 --
!-- scan:当此属性设置为true时配置文档如果发生改变将会被重新加载默认值为true --
!-- scanPeriod:设置监测配置文档是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 --
!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 --
configuration scantrue scanPeriod10 secondscontextNamelogback/contextName!-- name的值是变量的名称value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后可以使“${}”来使用变量。 --property namelog.path value/usr/project-prod/logs/xxx-logs/!--0. 日志格式和颜色渲染 --!-- 彩色日志依赖的渲染类 --conversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter/conversionRule conversionWordwexconverterClassorg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter/conversionRule conversionWordwExconverterClassorg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter/!-- 彩色日志格式 --property nameCONSOLE_LOG_PATTERNvalue${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/!--1. 输出到控制台--appender nameCONSOLE classch.qos.logback.core.ConsoleAppender!--此日志appender是为开发使用只配置最底级别控制台输出的日志级别是大于或等于此级别的日志信息--filter classch.qos.logback.classic.filter.ThresholdFilterleveldebug/level/filterencoderPattern${CONSOLE_LOG_PATTERN}/Pattern!-- 设置字符集 --charsetUTF-8/charset/encoder/appender!--2. 输出到文档--!-- level为 DEBUG 日志时间滚动输出 --appender nameDEBUG_FILE classch.qos.logback.core.rolling.RollingFileAppender!-- 正在记录的日志文档的路径及文档名 --file${log.path}/xxx.log/file!--日志文档输出格式--encoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/patterncharsetUTF-8/charset !-- 设置字符集 --/encoder!-- 日志记录器的滚动策略按日期按大小记录 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志归档 --fileNamePattern${log.path}/debug-%d{yyyy-MM-dd}.%i.log/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize100MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy!--日志文档保留天数--maxHistory15/maxHistory/rollingPolicy!-- 此日志文档只记录debug级别的 --filter classch.qos.logback.classic.filter.LevelFilterleveldebug/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- level为 INFO 日志时间滚动输出 --appender nameINFO_FILE classch.qos.logback.core.rolling.RollingFileAppender!-- 正在记录的日志文档的路径及文档名 --file${log.path}/info.log/file!--日志文档输出格式--encoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/patterncharsetUTF-8/charset/encoder!-- 日志记录器的滚动策略按日期按大小记录 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 每天日志归档路径以及格式 --fileNamePattern${log.path}/info-%d{yyyy-MM-dd}.%i.log/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize100MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy!--日志文档保留天数--maxHistory15/maxHistory/rollingPolicy!-- 此日志文档只记录info级别的 --filter classch.qos.logback.classic.filter.LevelFilterlevelinfo/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appenderappender nameERROR_FILE classch.qos.logback.core.rolling.RollingFileAppender!-- 正在记录的日志文档的路径及文档名 --file${log.path}/error.log/file!--日志文档输出格式--encoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/patterncharsetUTF-8/charset !-- 此处设置字符集 --/encoder!-- 日志记录器的滚动策略按日期按大小记录 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${log.path}/error-%d{yyyy-MM-dd}.%i.log/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize100MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy!--日志文档保留天数--maxHistory15/maxHistory/rollingPolicy!-- 此日志文档只记录ERROR级别的 --filter classch.qos.logback.classic.filter.LevelFilterlevelERROR/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!--开发分支--springProfile namedevroot levelINFOappender-ref refCONSOLE/appender-ref refDEBUG_FILE/appender-ref refINFO_FILE//root/springProfile、!--测试分支--springProfile nametestroot levelINFOappender-ref refCONSOLE/appender-ref refDEBUG_FILE/appender-ref refINFO_FILE /appender-ref refERROR_FILE //root/springProfile!--生产分支--springProfile nameprodroot levelDEBUGappender-ref refCONSOLE/appender-ref refDEBUG_FILE/appender-ref refINFO_FILE /appender-ref refERROR_FILE //root/springProfile
/configuration这个xml文件就是记录日志的一些规则你不需要细看只需要注意 property namelog.path value/usr/project-prod/logs/xxx-logs/ 这个配置就是指定日志输出的路径的按照自己的修改下即可。日志输出级别以及不同的环境如何输出日志自定义一下即可。
五、ELK Kibana安装配置
全在这里了在Linux环境下配置lasticsearchKibana