英文网站建设方案 PPT,网络网站建设属于什么费用,如何做网站设计,做印刷网站公司shigen坚持更新文章的博客写手#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长#xff0c;分享认知#xff0c;留住感动。 在上一部分#xff0c;shigen讲到了k8spod的日志写入ELK的三种技术方案#xff0c;并在最后展示了一下我… shigen坚持更新文章的博客写手擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长分享认知留住感动。 在上一部分shigen讲到了k8spod的日志写入ELK的三种技术方案并在最后展示了一下我实现的效果那具体的怎么实现呢今天这一篇文章我们具体的展示一下先带大家回顾一下上篇文章的效果 上一篇的地址shigen会在文章末尾贴出今天的文章主要是讲解它的集体实现。
ELK的搭建
当我们搭建好了ELK集群之后需要着重的修改一下logstash的配置文件logstash/pipeline/logstash.conf : input {tcp {mode serverhost 0.0.0.0 port 50000codec json_lines}}output {elasticsearch {hosts elasticsearch:9200 #es地址index springboot-logstash-%{YYYY.MM.dd} #写入的索引名user elastic #es用户password 123456 #es密码}#logstash控制台输入采集到的数据用于调试stdout {codec rubydebug}}这是shigen本次用到的配置文件需要注意的是 约定TCP服务的端口是50000需要在docker-compose中挂载到主机上es的地址尽量使用内网或者k8s提供的svc节省不必要的流量消耗需要安装插件 log stash-codec-json_lines 需要的时间老长了 配置完了启动即可。 搭建spring boot服务 基本的项目结构就不说了用到了mybatis-plus作为ORM框架。我们现在需要的就是把项目的日志输出到logstash让它处理完放到elasticsearch。
配置日志文件
本次的日志框架shigen选取的是logback它需要把日志写入到logstach它的途径就是logstash提供的TCP端口。
在项目的resource目录下边新建文件logback-spring.xml文件文件内容是这样的
?xml version1.0 encodingUTF-8?configuration!--指定property属性变量--property namelog.path value./logs/logback-demo/property namedestination value127.0.0.1:50000/property nameappname valuelogdemo/!-- 日志输出格式%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n--!-- 控制台 appender--appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/patterncharsetUTF-8/charset/encoder/appender!-- 文件 滚动日志 (all)--appender nameallLog classch.qos.logback.core.rolling.RollingFileAppender!-- 当前日志输出路径、文件名 --file${log.path}/all.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.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/all.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize64MB/maxFileSize!--日志文件保留天数--maxHistory15/maxHistory/rollingPolicy/appender!-- 文件 滚动日志 (仅error)--appender nameerrorLog 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.SizeAndTimeBasedRollingPolicy!-- 历史日志 归档文件名 --fileNamePattern${log.path}/%d{yyyy-MM, aux}/error.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern!--单个文件的最大大小--maxFileSize64MB/maxFileSize!--日志文件保留天数--maxHistory15/maxHistory/rollingPolicy!-- 此日志文档只记录error级别的 level过滤器--filter classch.qos.logback.classic.filter.LevelFilterlevelerror/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 文件 异步日志(async) --appender nameASYNC classch.qos.logback.classic.AsyncAppenderimmediateFlushfalse neverBlocktrue!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --discardingThreshold0/discardingThreshold!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --queueSize1024/queueSizeneverBlocktrue/neverBlock!-- 添加附加的appender,最多只能添加一个 --appender-ref refallLog//appender!--输出到logstash的appender--appender namelogstash classnet.logstash.logback.appender.LogstashTcpSocketAppender!--可以访问的logstash日志收集端口--destination${destination}/destinationencoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder!--自定义字段区分应用名称--customFields{appname:logdemo}/customFields/encoder/appender!-- root 级别的配置 --root levelINFOappender-ref refCONSOLE/appender-ref refASYNC/appender-ref referrorLog/appender-ref reflogstash//root!--可输出mapper层sql语句等--logger namecom.gitee.shigen.logbackspringboot.mapper leveldebug/!--输出jdbc 事务相关信息--logger nameorg.springframework.jdbc leveldebug//configuration注意到我们的其实是有四个目的地的包括控制台、文件、logstash以及我们的滚动策略和文件大小超过一定的指标之后的策略。
现在我们只需要启动服务在kibana那边持续的观察
和我们常见的都一样输出了mybatis-plus查询的sql语句。我们再来看下kibana的界面刚才我们的日志也展示出来了。而且字段很全自动的帮我们处理了。 后记
也许我们还会存在这样的疑问这是一个实例的如果是多实例的或者一个服务有多个副本怎么办呢这个shigen考虑到了我么可以自定义字段在我的配置文件中有这个字段
encoder charsetUTF-8 classnet.logstash.logback.encoder.LogstashEncoder!--自定义字段区分应用名称--customFields{appname:logdemo}/customFields
/encoder就可以标识出来在es中也可以一个查询条件查找相对应地服务日志。
现在还是本地启动shigen也会持续输出在k8s上的服务日志欢迎持续关注。 以上就是今天分享的全部内容了觉得不错的话记得点赞 在看 关注支持一下哈您的鼓励和支持将是shigen坚持日更的动力。同时shigen在多个平台都有文章的同步也可以同步的浏览和订阅
平台账号链接CSDNshigen01shigen的CSDN主页知乎gen-2019shigen的知乎主页掘金shigen01shigen的掘金主页腾讯云开发者社区shigenshigen的腾讯云开发者社区主页微信公众平台shigen公众号名shigen
与shigen一起每天不一样