当前位置: 首页 > news >正文

ELK日志管理平台架构和使用说明

一、部署架构

              6f66482a83fb4a2b8b70bb0b6672a95b.png

二、服务注册

2.1 日志解析服务

服务名:日志解析服务(Logstash)

服务默认端口:9600

2.2 日志查询服务

服务名:日志查询服务(Kibana)

服务默认端口:5601

三、对接方式

  1. 通过TCP连接,各服务/应用直接推送日志到logstash服务。
  2. 各应用/服务的运行日志推送到ES后,分别以各自的appname创建索引,查询时也是在appname的索引模式下进行查找,所以需要各应用/服务推送给logstash时提供appname值。

3.1 java应用  

1.引入logstash-logback-encoder包

f18b9ef8eaf64294a4eb2fc932ee1296.png

2.写日志的配置文件中,加入logstash appender

5dd70e11bcef4d45b70c318a406c0d96.png

  • <destination/>节点,用于配置logstash的ip和端口,部署时各系统从配置中心中动态获取日志解析服务对应的IP和端口;
  • <customFields/>节点,用于自定义的数据项内容,其value为json数据,此处配置appname项,用于在elasticsearch中创建日志索引;
  • <providers/>节点,设置输出到logstash中的json格式日志:

timestamp,输出日志时间;

level,日志级别(info、warn和error);

message,具体的日志内容;

stack_trace,捕获的异常栈详情内容,代码中log.error(“{}”, e)即可输出异常栈内容;

可以直接复制该文件全部内容到自己的项目的logback文件里面,该文件里面对于的配置项的内容来源于项目的yml文件,如下图:

3eb9ebfa731243f6a0263ae2bb7c3ded.png

其中logstash.host是读取配置中心的IP,后面其他变量值都是读取配置中心,如果还没对接配置中心这里就需要改成本地的信息, 图上最下面一列改成本项目的jar包名称。

3.自定义Log Interceptor。

对每个request和response的header增加uid和traceId,同时向log4j.MDC中加入uid和traceId,即可向日志中写入该参数,该项非必须操作。

3.2 .Net应用

1. 这里以NLog组件为例:首先需要引入NLog组件;

2. 修改NLog.config配置文件,加入TCP连接方式;配置如下:

 <target xsi:type="Network" name="logstashnetwork" encoding="UTF-8" newLine="true" keepConnection="true" keepAliveTimeSeconds="300" onConnectionOverflow="Block"address ="tcp://192.168.0.79:9600"><layout xsi:type="JsonLayout" includeAllProperties="true"><attribute name="offset" layout="${sequenceid}" /><attribute name="level" layout="${level}"/><attribute name="uid" layout="${identifier}"/><attribute name="traceId" layout="${customid}"/><attribute name="message" layout="[${longdate}.${sequenceid}] [${identifier}] [${customid}] [${typename}]${newline}${message}" escapeUnicode="false" /><attribute name="appname" layout="${appname}" /></layout></target>

【备注】:

  1. 黄色字体部分为需要从配置中心获取日志解析服务对应的配置项,进行动态更新;
  2. 粉色部分为定义的变量,${identifier} 这里用来表示一级标识;${customid}这里用来表示二级标识;${typename}这里用来表示执行的模块名称;${appname}这里用来表示应用程序的项目标识。

上述配置完毕,在对应的日志级别中进行加入logstashnetwork项即可。

 

http://www.lryc.cn/news/104729.html

相关文章:

  • 抖音短视频seo矩阵系统源码开发部署技术分享
  • docker 部署一个单节点的rocketmq
  • MySQL优化
  • 【C++】总结9
  • C++报错 XX does not name a type;field `XX’ has incomplete type解决方案
  • 28.利用fminsearch、fminunc 求解最大利润问题(matlab程序)
  • 图像 检测 - FCOS: Fully Convolutional One-Stage Object Detection (ICCV 2019)
  • C# NDArray System.IO.FileLoadException报错原因分析
  • 快速响应,上门维修小程序让您享受无忧生活
  • 05、性能分析思路?
  • 【编程语言 · C语言 · calloc和realloc】
  • 机器学习分布式框架ray运行pytorch实例
  • TypeScript 【type】关键字的进阶使用方式
  • 策略路由实现多ISP接入Internet
  • Socket本质、实战演示两个进程建立TCP连接通信的过程
  • java学习路程之篇四、进阶知识、石头迷阵游戏、绘制界面、打乱石头方块、移动业务、游戏判定胜利、统计步数、重新游戏
  • Git全栈体系(三)
  • JMeter发送get请求并分析返回结果
  • HTML笔记(1)
  • 重新审视MHA与Transformer
  • Docker 全栈体系(七)
  • 【编程范式】聊聊什么是数据类型和范式的本质
  • 2023-08-01 python根据x轴、y轴坐标(数组)在坐标轴里画出曲线图,python 会调用鼎鼎大名的matlib,用来分析dac 数据
  • 小研究 - 主动式微服务细粒度弹性缩放算法研究(四)
  • 机器学习深度学习——softmax回归的简洁实现
  • CPU利用率过高解决思路
  • Redis(三)—— Redis基本的事务操作、Redis实现乐观锁
  • SQLI_LABS攻击
  • 如何查看 Chrome 网站有没有前端 JavaScript 报错?
  • JS前端读取本地上传的File文件对象内容(包括Base64、text、JSON、Blob、ArrayBuffer等类型文件)