ELK Fleet JAVA LOG收集与展示教程

发布于:2024-12-07 ⋅ 阅读:(132) ⋅ 点赞:(0)

目录

elastic-fleet架构

Elastic Agent的优势

Fleet JAVA日志收集流程

1.注册Fleet Sever

2.创建JAVA代理收集策略Agent Policy

3.添加集成 integration

4.调整Java log输出格式

5.添加Elastic Agent

6.添加Ingest

7.创建数据视图

8.其他Policy

nginx-policy

system-policy

elastic 视图分析

1.常用搜索

2.字段分析

3.视图分析


elastic-fleet架构

整个架构图中,主要包含三个组件:

  • fleet:fleet是Kibana上的一个应用软件,通过与后端的资源包仓库建立连接,可以获取elastic最新发布的资源。同时,fleet可以通过Agent policy的方式,为我们定义采集端的规则和配置。Agent policy由fleet保存到elasticsearch

  • fleet server : 定期从elasticsearch拉取最新的Agent policy。并通知elastic agent及时获取最新的配置

  • elastic agent:elastic agent采集的数据,则是直接发送给elasticsearch,每个agent会采用单独的api-key与elasticsearch建立连接,保证数据及时的同步到elasticsearch当中

Elastic Agent的优势

简单来说就是一个集成了各种beats的代理插件,原本需要部署n个beats收集n种日志,现在只需要elastic Agent即可。

集成各类beats

配置文件通过Agent Policy来修改

原本需要调每一个服务器上的beat的配置文件,现在直接改Agent Policy即可,如一个关于nginx的policy可以供一群nginx服务器使用

使用keys取代password

不需要连接密码,使用api keys来调用各类接口,底层使用gRpc框架

参考文档

https://zhuanlan.zhihu.com/p/658197020

Elastic agent集群部署及注意事项-CSDN博客

腾讯云Elastic使用教程:使用Fleet集中管理Elastic Agent-腾讯云开发者社区-腾讯云

Fleet JAVA日志收集流程

1.注册Fleet Sever

部署Fleet服务器,在linux服务器上执行,如果失败可以加上 --insecure 参数

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.9.1-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.9.1-linux-x86_64.tar.gz
cd elastic-agent-8.9.1-linux-x86_64
sudo ./elastic-agent install \
  --fleet-server-es=http://es-cn-g4t3jwysq0006cyzu.elasticsearch.aliyuncs.com:9200 \
  --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3MDQ5NDI4MzAwNjU6V04tMGtTc09URnlvYWpDZmx6RkNaUQ \
  --fleet-server-policy=fleet-server-policy \
  --fleet-server-port=8220

格式为 https://172.16.0.58:8220(填自己的ip)

8220 为Fleet Server的端口

2.创建JAVA代理收集策略Agent Policy

3.添加集成 integration

填写java日志的文件地址

在高级部分填写Custom configurations,目的是为了加入多行日志收集功能(默认为单行收集)

multiline:
  type: pattern
  pattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}'
  negate: true
  match: after

4.调整Java log输出格式

在服务上配置logback.xml,注意level处,这里屏蔽了DEBUG,其他日志级别有INFO,WARNING ,ERROR

<!--level为 all 日志-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--将今天的日志保存在这个文件中,-->
        <file>xxx.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>xxx.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--保存最近7天的日志-->
            <maxHistory>7</maxHistory>
            <!--所有的日志文件最大1G,超过就会删除旧的日志;-->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %logger输出日志的logger名 %msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
    </appender>

     <!-- 异步输出,采用异步写日志的方式而不让此次写日志发生磁盘IO,阻塞线程从而造成不必要的性能损耗 -->
     <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>256</queueSize>
        <!-- 添加附加的appender,最多只能添加一个 -->
        <appender-ref ref="FILE"/>
    </appender>

    <!--这里如果是info,spring、mybatis等框架则不会输出info之下的,TRACE < DEBUG < INFO <  WARN < ERROR-->
    <springProfile name="prod">
        <root>
            <appender-ref ref="ASYNC_FILE"/>
        </root>
    </springProfile>

5.添加Elastic Agent

agent的作用建立与fleet server的联系,enroll后,拉取提前配置好的Policy,达到一次policy管理多个agent

策略处选择步骤2创建的Policy

执行失败可添加 --insecure参数

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.9.1-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.9.1-linux-x86_64.tar.gz
cd elastic-agent-8.9.1-linux-x86_64
sudo ./elastic-agent install --url=https://172.16.0.58:8220 --enrollment-token=MVF1Rzlvd0JKVUlHT3RnellIMW46czVpdTVHTFZUYVM0T0oyeVl3MmVmUQ==

elastic-agent status 查看状态,也可以在数据流中看到日志了

6.添加Ingest

ingest为一个管道收集器,可以定制如何收集日志

字段处填写message,模式填写

%{TIME:timestamp} \[%{DATA:thread}\] %{WORD:loglevel} %{GREEDYDATA:logger} - %{GREEDYDATA:content}

7.创建数据视图

为了更好的数据展示,可以创建数据视图,创建好后在discover下查看即可

8.其他Policy

nginx-policy

logs位置,以实际为准

system-policy

  • /var/log/auth.log*:录认证相关事件的日志文件。它通常包含与用户登录、sudo 操作等相关的信息。这个文件对于查看系统安全性和监视用户活动非常有用。

  • /var/log/secure*:是在一些基于 Red Hat 的 Linux 发行版(如 CentOS、Fedora)上用于存储安全相关日志的文件。该文件通常包含与系统安全、认证、授权和相关事件有关的信息

  • /var/log/messages*:是一个系统日志文件,用于存储与系统运行相关的通用消息。它包含了各种系统级别的信息,如启动和关机事件、硬件和内核消息等。这个文件通常是一个记录系统广泛信息的综合性日志文件

  • /var/log/syslog*:用于存储来自系统日志守护程序(syslogd)的通用系统消息

elastic 视图分析

1.常用搜索

登录elasticsearch平台 =》 打开 discover =》 选择视图 =》 选择搜索模板

2.字段分析

在discover模式下,选择时间段,点击字段统计信息,可以查看字段触发的次数

选择+图标可以看到某台服务器或某个错误类型触发的次数,可自由搭配

3.视图分析

视图分析的自由度比较高,下面以统计error日志的服务器分布占比为例

查看visualize或dashboard可获取视图


网站公告

今日签到

点亮在社区的每一天
去签到