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

一、部署架构

              ELK日志管理平台架构和使用说明_第1张图片

二、服务注册

2.1 日志解析服务

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

服务默认端口:9600

2.2 日志查询服务

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

服务默认端口:5601

三、对接方式

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

3.1 java应用  

1.引入logstash-logback-encoder包

ELK日志管理平台架构和使用说明_第2张图片

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

ELK日志管理平台架构和使用说明_第3张图片

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

timestamp,输出日志时间;

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

message,具体的日志内容;

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

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

ELK日志管理平台架构和使用说明_第4张图片

其中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连接方式;配置如下:

 
      
        
        
        
        
        
        
      
 

【备注】:

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

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

 

你可能感兴趣的:(架构落地手记,elk,java)