实操讲解:微服务运行日志采集(一)|学习笔记

简介: 快速学习实操讲解:微服务运行日志采集(一)

开发者学堂课程【Elasticsearch 实战进阶营实操讲解:微服务运行日志采集(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/899/detail/14319


实操讲解:微服务运行日志采集(一)

Filebeat;微服务运行日志实时采集

在整个 elastic stack 技术站里面,File beat 现在已经成为日志文本采集的一个桥头堡吧,相比原有的 Linux 要清洁很多,而且运行速度快很多,而且,集成的更加优秀,可能在这块也有会遇到想用这个 note 的,本身阿元有事做采集非常好,但是他这个功能复杂,然后运行效率这方面不的这个 go 语言编写的 VB 的,所以现在 Linux 已经成为了这个领域的

首先之前把日志打印到文本机里面,默认使用 logback.spring.xml

logback.的配置

(?xml version-"1.0" encoding- "UTF-8" ?》

<configuration debug- "true" >

<property name - TApp. Mame" value-”servere1" 12

<contextName>${App_ Name}</contextName>

<springProfile name= "default" >

<property nane-"logging.path" value= "1og-file" />

</springProfile>

<appender name "Info" class-"ch. qos . logback. core .rolling . RollingFileAppender">

<filter class="ch.qos. logback. classic.filter. LevelFilter">

<level>INF0</level>

<onMatch>ACCEPT</onMatch>

4onMi snatch>DENY</ onMi smatch>

</filter>conMatch>ACCEPT</ 配置日志错误通过 arrey 来处理

<File>${logging . path}/${App_ Nane}/info. log</File>这个APP-Nane,就是配了一个属性应用程序名字。

假设我们的服务器上部署这个微服务的时候,那希望把很多日志写在同一个,目录夹是一样的,应用程序名字不一样就可以做一个区分做一个区分。

<rollingPolicy class-"ch. qos。logback . core . roll ing. T imeBasedRollingPolicy">

<FlleNamePattern>${1ogging . path}/${App. Name}/info . log .%d[{yyy -M dd}</FlleNamePattern>

<MaxHistory>7</MaxHistory>

</rollingPolicy>

<encoder class=" ch.qos. logback.classic。encoder. Patt ernL ayout Encoder" >

<pattern>%dy{yyy-M-dd Hh:m:ss.5SS} [%-5leve1] [%thread] %logger{36} 一%nsg%n</pattern>

</encoder>

</ appender>

<appender nane "InfoJson" class="ch . qos. logback . core . rolling ,RollingFileAppender

<filter class- "ch.qos.logback. classic.fllter. LevelFllter">

<level>INFO</level>

conMatch>ACCEPT</onMatchx

<springProf ile name="default" >

<property nane-" logging.path" value="1og-file" 1>

</springProfilex

它都能自动的扩展它的索引结构。

”thread":" %t hread".

”message :° Xmessage"

</ pattern>

</pattern>

</ providers>

</encoder>

</ appender>

<appender name-" Error”class-" ch. qos . logback. core . rolling . RollingF ileAppender >

<filter class="ch.qos .logback . classic,filter.LevelFilter">

<leve1>ERROR</level>

conMatch>ACCEPT</onMatch

<onMi smatch>DENY</onMi smatch>

产生 jenth 不会占太多内存对日志文本采集影响不大,用中心化日志采集不会浪费跟多的资源

</filter>

<File>${logging . path}/${App_ Nane }/error. log</File>

<rollingPolicy class=" ch.qos Jogback . core . rolling,TimeBasedRollingPollcy">

<FlleNamePattern>${logg1ng . path}/${App_ Name}/error . log .x{yyyy -MM-dd}</FlleNamePattern>

<MaxHistory>7</MaxHistory>

如果输出 jenthe 的时候可以直接用(LoggingEventCompostte I sonE ncode r)去替代

</rollingPolicy>

<encoder class= ”ch. qos,logback.classic。encoder . Patternt ayoutEncoder" >

<pattern%yyy-M-dd HH:ms5s555} [%-5level] [%thread] %logger{36} - %msg%n</pattern>

</encoder>

</ appender>

<logger name =”com Bupacedy . springclouddemg" level="info, error">

<appender-ref ref= "Info" />-->

< appender-ref ref- ”Info3son" 1:

< appender-ref ref- ”Error”/)

</logger>

<appender name "Info" class- "ch.qos。logback,core .rolling . RollingF ileAppender">

<filter class="ch.qos. logback .classic.filter.LevelFilter">

<level>INF0</level>

<onMatch>ACCEPT</onMatch>

<onMi smatch>DENY</onMi smatch>

</filter>

<File>${logging .path}/S{App. Nane》/ info. log</File>

<rollingPolicy class="ch. qos . logback . core . rolling,TimeBasedRollingPollcy">

<F ileNamePattern>${1ogging . path}/${App. Nane}/ info. log .%d{yyy - M dd}</FlleNamePattern>

<MaxHistory>7</MaxHistory>

</rollingPolicy>

<encoder class= ”ch. qos . logback .classic . encoder . PatternL ayoutEncoder">

<patetrn%dyyy-M-dd HH:m:ss55S} [%- 5level] [%thread] %logger{36} - %msg%n</pattern>

</encoder>

</ appender>

<appender nane "InfoJson" class="ch . qos. logback . core . rolling ,RollingFileAppender">

<fllter class="ch .qos .1ogback.classic .fllter.LevelFllter">

<level>INFO</1evel>

<onMatch>ACCEPT</onMatch>

configuration》 springProfile

日志采集

格式是标准的微服务格式

@RestController

public class HomeController {

private Logger logger - LoggerFactory .getLogger(this. getClass());

@RequestMapping( "/”)

public ResponseEntity<String> Home() {

ResponseEntity<string> resultEntity=new ResponseEntity<w>( code 200, msg; "ok”, data: "Hello Api");

logger. info(resultEntity . getData());

logger . error( "servere1 error" );

return resultEntity;日志过多需要一个中性化平台去处理和采集


相关文章
|
3月前
|
JSON 监控 安全
多Agent上生产的第一课:日志、轨迹、回放与责任归因
多Agent系统排查难?作者亲历生产事故后,提出五层可观测性体系:结构化日志(含参数/结果)、任务轨迹(还原数据流)、可解释回放、责任归因(结合推理链)、状态审计。最小方案仅需3天落地,让问题定位从“两小时盲猜”缩至“五分钟定位”。
437 1
|
JSON 应用服务中间件 nginx
filebeat收集json格式的nginx程序日志(二)
filebeat收集json格式的nginx日志 1.为什么要收集json格式的日志类型 由于nginx普通日志收集过来的日志内容都是存在一个字段中的值,我们想单独对日志中的某一项进行查询统计,比如我只想查看某个IP请求了我那些页面,一共访问了多少次,在普通的日志中是无法过滤的,不是很满意
1496 0
filebeat收集json格式的nginx程序日志(二)
|
3月前
|
存储 人工智能 API
Agent Internet 的未来:去中心化是唯一的出路吗?
Moltbook崩塌暴露中心化Agent网络的致命风险,但Agent互联本身价值巨大。本文冷静剖析:为何需要“Agent互联网”?为何Moltbook模式不可持续?并提出以Email为范本的去中心化愿景——基于DID、Nostr、端到端加密与细粒度授权,构建自主、可信、抗单点故障的机器对机器网络。
277 1
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
420 4
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
979 1
|
算法 测试技术 API
用Python+ChatGPT批量生成论文概述
用python+GPT-3 API开发了一个可以直接从arxiv地址生成论文概述的工具,大大提升论文阅读速度。
706 0
用Python+ChatGPT批量生成论文概述
|
JSON NoSQL Redis
九、.net core(.NET 6)添加通用的Redis功能
.net core 编写通用的Redis功能在 Package项目里面,添加包:StackExchange.Redis:
1153 0
九、.net core(.NET 6)添加通用的Redis功能
|
搜索推荐 NoSQL Redis
用户画像系列——数据中台之OneID (ID-Mapping)核心架构设计
用户画像系列——数据中台之OneID (ID-Mapping)核心架构设计
968 0
|
设计模式 缓存 Java
logback之 AsyncAppender 的原理、源码及避坑建议
AsyncAppender 接收日志,放入其内部的一个阻塞队列,专开一个线程从阻塞队列中取数据(每次一个)丢给链路下游的Appender 如 FileAppender,如此可把日志写盘 变成 日志写内存,减少写日志的 RT。
2030 0
logback之 AsyncAppender 的原理、源码及避坑建议