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

ELK监控jar

若是没有安装ELK,可以参考文章

https://blog.csdn.net/CodeTom/article/details/148927542?spm=1011.2415.3001.5331

要监控一个 JAR 包产生的日志文件,最标准、最可靠的方法是使用 Filebeat。

Filebeat 是一个轻量级的日志托运工具(Shipper),它可以安装在您的应用服务器上,专门用来监听文件变化(比如日志文件的新增内容),然后将这些变化发送给 Logstash 或直接发送给 Elasticsearch。

我们将对之前的 ELK 架构进行扩展,新的数据流架构将是:

JAR 应用 -> 日志文件 -> Filebeat -> Logstash -> Elasticsearch -> Kibana

第一步,准备您的 JAR 应用和日志文件
首先,您需要有一个正在运行并持续生成日志的 JAR 包。为了演示,我们假设文件目录如下:

elk-stack/
├── docker-compose.yml
├── logs/                 <-- 新建的日志存放目录
├── logstash/
│   └── pipeline/
│       └── logstash.conf
└── filebeat/             <-- 新建的目录└── filebeat.yml      <-- 新建的配置文件

第二步,创建 filebeat/filebeat.yml 文件,并填入以下内容:

# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: logenabled: truepaths:- /usr/share/filebeat/logs/*.log  # 这是容器内的路径,不是Linux系统的路径不要搞混了!!!我们稍后会把本地的logs目录挂载到这里# =================================- Outputs ===================================
output.logstash:# The Logstash hostshosts: ["logstash:5000"] # 直接指向我们docker-compose中定义的Logstash服务

配置说明:
filebeat.inputs: 定义了输入源。我们使用 log 类型,并让它监控 /usr/share/filebeat/logs/ 目录下所有以 .log 结尾的文件。
output.logstash: 定义了输出目标。我们将日志发送到名为 logstash 的主机的 5000 端口,这正是您在 docker-compose.yml 中为 Logstash 服务定义的名字和端口。
第三步,我们需要把 Filebeat 服务添加到 docker-compose.yml 文件中。请将以下 filebeat 服务配置追加到 services 部分。
完整的 docker-compose.yml 文件如下:

version: '3.8'services:elasticsearch:image: elasticsearch:8.14.0container_name: elasticsearchenvironment:- discovery.type=single-node- xpack.security.enabled=false- ES_JAVA_OPTS=-Xms1g -Xmx1gvolumes:- es-data:/usr/share/elasticsearch/dataports:- "9200:9200"networks:- elk-netkibana:image: kibana:8.14.0container_name: kibanaenvironment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200ports:- "5601:5601"depends_on:- elasticsearchnetworks:- elk-netlogstash:image: logstash:8.14.0container_name: logstashvolumes:- ./logstash/pipeline:/usr/share/logstash/pipeline:roports:- "5000:5000/tcp"- "5000:5000/udp"depends_on:- elasticsearchnetworks:- elk-net# vvvvvvvvvv 这是新增的服务 vvvvvvvvvvfilebeat:image: elastic/filebeat:8.14.0 # 版本号与ELK保持一致container_name: filebeatuser: root # 某些环境下需要root权限才能读取挂载的卷volumes:# 挂载Filebeat配置文件- ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro# 挂载我们存放日志的目录到容器内,路径要与filebeat.yml中配置的一致- ./logs:/usr/share/filebeat/logs:rodepends_on:- logstash # 确保Logstash启动后再启动Filebeatnetworks:- elk-net# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^volumes:es-data:driver: localnetworks:elk-net:driver: bridge

重要改动说明:
新服务 filebeat:我们定义了一个新的容器,使用官方的 Filebeat 镜像,并确保版本号一致。
volumes 挂载:这是最关键的一步。
我们将本地的 filebeat.yml 文件挂载到容器内,作为其配置文件。
我们将本地的 logs 目录挂载到容器内的 /usr/share/filebeat/logs 目录。这样,当我们的 Jar 包在主机上向 logs/app.log 写入日志时,Filebeat 容器内就可以立刻读取到这些变化。
第四步,启动并进行端到端测试
1、重新启动服务
在 elk-stack 目录下,打开终端,先关闭可能还在运行的旧服务,然后重新启动:

docker-compose down
docker-compose up -d

使用 docker-compose ps 检查,确保 elasticsearch, kibana, logstash, filebeat 四个容器都已正常运行。
2、启动 Jar 包并生成日志
将之前生成的 SimpleApp.jar (就是需要监控的程序)复制到 elk-stack 目录下。然后打开一个 新的终端窗口,运行以下命令:

java -jar SimpleApp.jar > logs/app.log

这个命令会执行 Jar 包,并把所有标准输出(就是我们 System.out.println 的内容)追加到 elk-stack/logs/app.log 文件中。
现在,这个终端会保持运行,每5秒钟就会有一条新的日志被写入 app.log 文件。
3、在 Kibana 中查看日志
打开 Kibana 界面 (http://localhost:5601)。
导航到 Analytics > Discover。
您应该会看到新的日志源源不断地流入!这些日志的 message 字段内容正是我们 Jar 包中定义的 “This is log entry #…”。
您可以展开日志条目,看到 app, level, timestamp 这些我们自定义的字段都已经被正确解析,因为我们一开始就发送了 JSON 格式。

至此,您已经成功搭建了一条完整的日志处理流水线:Java App -> Log File -> Filebeat -> Logstash -> Elasticsearch -> Kibana。

http://www.lqws.cn/news/548425.html

相关文章:

  • 电商数据开发实践:深度剖析1688商品详情 API 的技术与应用
  • java中对象可达性分析 + 自动回收算法
  • Linux基本指令篇 —— tac指令
  • 导出docker-compse.yml中docker镜像成tar文件
  • 麒麟系统使用-运用VSCode运行.NET工程
  • swift 对象转Json
  • 分布式系统ID生成方案深度解析:雪花算法 vs UUID vs 其他主流方案
  • Hyperledger Fabric 入门笔记(二十)Fabric V2.5 测试网络进阶之Tape性能测试
  • Ubuntu 20.04 系统上运行 SLAM卡顿是什么原因
  • 免安装一键修复网络诊断 + 权限修复!打印机共享错误工具适配 Win7/10/11
  • Spring Boot 项目实训 - 图书信息网站
  • 移动端测试——如何解决iOS端无法打开弹窗式网页(Webkit)
  • canvas面试题200道
  • C++:string类(1)
  • 临床项目计划框架
  • java代码规范
  • 机器学习2——贝叶斯理论下
  • 【Linux手册】进程终止:进程退出和信号的响应机制
  • 微软全新开源的Agentic Web网络项目:NLWeb详解
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【世纪龙科技】吉利博瑞汽车车身诊断与校正仿真教学软件
  • window显示驱动开发—DirectX 图形内核子系统(二)
  • Ai大模型 - ocr图像识别形成结构化数据(pp-ocr+nlp结合) 以及训练微调实现方案(初稿)
  • 第六章 总线
  • 四大高频设计题深度解析:【LRU缓存】、【LFU缓存】、最大频率栈、餐盘栈
  • 论面向服务的架构设计
  • Java项目:基于SSM框架实现的宠物综合服务平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • MySQL在C中常用的API接口
  • 楼宇自控系统以智能化管控,全方位满足建筑节约、安全与可靠运行需求
  • 嵌入式项目:基于QT与Hi3861的物联网智能大棚集成控制系统