目录
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: patternpattern: '^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}'negate: truematch: 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可获取视图