首页 > 其他分享 >微服务-统一日志收集

微服务-统一日志收集

时间:2023-06-09 10:59:19浏览次数:42  
标签:收集 mongodb etc conf output 日志 安装 logstash 统一

基于logback、logstash、mongodb的统一日志收集

1、引入logstash日志格式的编码器依赖

<dependency>
	<groupId>net.logstash.logback</groupId>
	<artifactId>logstash-logback-encoder</artifactId>
	<version>5.2</version>
</dependency>

2、编辑logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

	<!--该配置将日志记录到父工程的build目录下,并以 ${spring.application.name}.json 为文件名-->
    <springProperty scope="context" name="springAppName"
                    source="spring.application.name" />

    <!-- 日志在工程中的输出位置 -->
    <property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />

    <!-- 控制台的日志输出样式 -->
    <property name="CONSOLE_LOG_PATTERN" 
			  value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <!-- 生成发送给logstash的JSON格式的日志 -->
    <appender name="logstash_remote" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:9610</destination>
        <!-- 日志输出编码 -->
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
						"time": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
                        "level": "%level",
                        "service": "${springAppName:-}",
                        "traceId": "%X{X-B3-TraceId:-}",
                        "spanId": "%X{X-B3-SpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "message": "%message",
						"stack_trace":"%exception{50}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="logstash_remote" />
    </root>
</configuration>

3、安装logstash:https://www.elastic.co/cn/downloads/logstash

4、安装logstash-output-mongodb

使用yum方式安装的logstash,其安装路径为:/usr/share/logstash,配置文件路径:/etc/logstash

#查看已经安装的logstash插件
./logstash-plugin list

#安装logstash-output-mongodb插件,默认安装最新版,已知3.1.7版本存在bug,无法将数据转发给mongodb
#使用--version指定版本,推荐使用3.1.6
./logstash-plugin install logstash-output-mongodb --version=3.1.6

#卸载已安装的插件
./logstash-plugin remove logstash-output-mongodb

#安装完成后需重启服务

5、安装mongodb:https://www.mongodb.com/try/download/community

建议安装mongodb V5.1.10版本,与logstash-output-mongodb V3.1.6适配

6、多管道特性的支持

所有的管道配置文件应当放到 /etc/logstash/conf.d/目录下,且以 .conf 结尾
以下管道配置从9610端口接收数据,格式化为json,然后输出到mongodb,input和output为必须,filter可选

input {
    tcp {
        port => 9610
        codec => json_lines
    }
}
output{
    mongodb {
        codec => line {format => "%{message}"}
        uri => "mongodb://[用户名:密码@]127.0.0.1:27017[/认证的数据库]"
        database => "ms_document_center"
        collection => "info"
    }
	file {
        path => "/data/logstashStorage/documentCenter/%{hostip}-%{+YYYY.MM.dd}.log"
        codec => line { format => "%{message}"}
    }
}

7、启动logstash

#此系统命令将自动读取 /etc/logstash/pipeline.yaml文件,默认情况下将进一步读取 /etc/logstash/conf.d/ 目录下的管道配置
#但实际使用过程中会报错
systemctl start logstash

#直接运行logstash,程序将读取/usr/share/logstash/config/pipeline.yml配置文件,自动开启多管道
/usr/share/logstash/bin/logstash

#也可以使用-f选项指定配置文件启动单个管道
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/ms_document_center_info.conf

标签:收集,mongodb,etc,conf,output,日志,安装,logstash,统一
From: https://www.cnblogs.com/tanmujin/p/17440826.html

相关文章

  • 收集的一些GIS数据网站
    (1)MODIS影像数据http://ladsweb.nascom.nasa.gov/data/search.html(AOD数据是采用NASA发布的搭载在Aqua传感器上的MOD04level2C6版本二级的气溶胶数据)(2)PM2.5质量浓度数据http://113.108.142.147:20035/emcpublish/(PM2.5数据来源于全国城市空气质量实时发布平台)(3)气象数据http://cdc......
  • Log4j的相关日志设置
    引言为什么要用日志?-->方便调试代码什么时候用?什么时候不用?​ 出错调试代码时候用生产环境下就不需要,就需要删除怎么用?-->输出语句一、Log4J1.1介绍​ log4j是Apache的一个开放源代码的项目,通过使用log4j,我们可以控制日志信息输送的目的地是控制台、文件、......
  • 标准日志流(clog)
     预定义的对象 clog 是 iostream 类的一个实例。clog对象附属到标准输出设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到clog都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。clog 也是与流插入运算符<<结合使用的,如下所示:实例#inclu......
  • python 日志
    在自动化测试中,可以使用以下几种方式记录日志:1.使用内置的`print()`函数:#在需要记录日志的地方使用print()函数输出日志信息print("这是一条日志信息")2.使用标准库中的`logging`模块:importlogging#配置日志输出格式和级别logging.basicConfig(level=logging.INFO......
  • 2023.6.7 Linux系统日志管理
    01Linux系统⽇志管理系统⽇志架构概述syslog⽇志审查Journal⽇志审查Journal⽇志持久化⽇志轮询logrotate系统⽇志架构概述在rhel7系统中有两个⽇志服务,分别是传统的rsyslog和新添加的systemd-journalsystemd-journald是⼀个改进型的⽇志管理服务,可以收集来⾃内核......
  • 2023.06.07训练日志
    TrustNobody简单题,桶排序+前缀和以后直接找\(n-sum_i=i\)的\(i\)LunaticNeverContent对于原序列的每一对不满足回文的位置,记录其差的绝对值取\(\gcd\)。对于已经满足回文的,\(x\)可以为\(\infty\),因此输出\(0\)DreamingofFreedom这道题主要考察线性筛。观察样......
  • 【实战分享】使用 Go 重构流式日志网关
    项目背景分享之前,先来简单介绍下该项目在流式日志处理链路中所处的位置。流式日志网关的主要功能是提供HTTP接口,接收CDN边缘节点上报的各类日志(访问日志/报错日志/计费日志等),将日志作预处理并分流到多个的Kafka集群和Topic中。越来越多的客户要求提供实时日志支持,业务......
  • nginx访问日志
    访客日志处理日志模块的官网教程https://nginx.org/en/docs/http/ngx_http_log_module.html创建nginx访问日志日志对于程序员很重要,可用于问题排错,记录程序运行状态,一个好的日志能够给与精确的问题定位。Nginx日志功能需要在nginx.conf中打开相关指令log_format,设置日志格式,......
  • 代码随想录算法训练营第十四天|理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代
    理论基础满二叉树概念完全二叉树概念二叉搜索树概念平衡二叉搜索树概念二叉树存储方式:链式存储和顺序存储二叉树遍历方式:前中后序遍历,层次遍历。二叉树的代码定义publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.v......
  • Linux系统一般用来干嘛
    Linux系统是一种开源的操作系统,广泛应用于服务器、嵌入式设备、超级计算机等领域。它具有高度的稳定性、安全性和灵活性,可以用来进行各种各样的任务,例如:1、服务器操作系统Linux系统在服务器领域应用广泛,可以用来搭建Web服务器、数据库服务器、邮件服务器等。2、开发环境Linux......