千家信息网

ELK日志系统中如何进行通用应用程序日志接入

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍ELK日志系统中如何进行通用应用程序日志接入,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。日志规范规范的日志存放路径和输出格式将为我们后续的收集和分析带来极大的
千家信息网最后更新 2026年10月31日ELK日志系统中如何进行通用应用程序日志接入

这篇文章给大家介绍ELK日志系统中如何进行通用应用程序日志接入,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

日志规范

规范的日志存放路径和输出格式将为我们后续的收集和分析带来极大的方便,无需考虑各种不同路径、格式的兼容问题,只需要针对固定几类日志做适配就可以了,具体的规范如下:

日志存放路径规范

  1. 项目日志只能输出到固定的位置,例如/data/logs/目录下

  2. 同一类型(例如java web)的日志文件名保持统一,例如都叫application.log

  3. 一个类型的项目可以记录多个不同的日志文件,例如exception.log和business.log

日志输出格式规范

  1. 日志输出必须为JSON格式,这个很重要

  2. 同一类型的项目应采用统一的日志输出标准,尽量将日志输出模块化,所有项目引用同一模块

  3. 输出日志中必须包含标准时间(timestamp)、应用名称(appname)、级别(level)字段,日志内容记录清晰易懂

日志信息级别规范

日志级别说明数值
debug调试日志,日志信息量最多7
info一般信息日志,最常用的级别6
notice最具有重要性的普通条件信息5
warning警告级别4
error错误级别,某个功能不能正常工作3
critical严重级别,整个系统不能正常工作2
alert需要立刻修改的日志1
emerg内核崩溃等严重信息0

从上到下级别依次从低到高,日志量从多到少,正确选择日志级别帮助后期快速排查问题

我们为什么要制定这样的规范?

  1. 我们的项目都跑在Docker里,Docker镜像由基础镜像+项目代码组成

  2. 基础镜像打包了运行项目的基础环境,例如spring cloud微服务项目,则打包了jre服务

  3. 规范了日志存放及输出后,我们可以把作为日志收集agent的filebeat一并打包进基础镜像,因为同一类型项目的日志路径、格式都是一致的,filebeat配置文件可以通用

  4. 这样我们在后续的部署过程中就不需要关心日志相关的内容,只要项目镜像引用了这个基础镜像就能自动接入了我们的日志服务,实现日志的收集、处理、存储与展示

日志采集

我们通用日志采集方案如下图:

  1. 程序跑在容器里,容器内自带Filebeat程序收集日志

  2. 收集完成后传给kafka集群,logstash读取kafka集群数据写入elasticsearch集群

  3. kibana读取elasticsearch集群数据展示在web上,开发、运维等需要查看日志的用户登录kibana查看

Client端Filebeat配置

filebeat.prospectors:- input_type: log  paths:    - /home/logs/app/business.log    - /home/logs/app/exception.log  json.message_key: log  json.keys_under_root: trueoutput.kafka:  hosts: ["10.82.9.202:9092","10.82.9.203:9092","10.82.9.204:9092"]  topic: filebeat_docker_java

Kafka接收到的数据格式

{"@timestamp":"2018-09-05T13:17:46.051Z","appname":"app01","beat":{"hostname":"52fc9bef4575","name":"52fc9bef4575","version":"5.4.0"},"classname":"com.domain.pay.service.ApiService","date":"2018-09-05 21:17:45.953+0800","filename":"ApiService.java","hostname":"172.17.0.2","level":"INFO","linenumber":285,"message":"param[{\"email\":\"TEST@163.COM\",\"claimeeIP\":\"123.191.2.75\",\"AccountName\":\"\"}]","source":"/home/logs/business.log","thread":"Thread-11","timestamp":1536153465953,"type":"log"}

Server端Logstash配置

input {    kafka {        bootstrap_servers => "10.82.9.202:9092,10.82.9.203:9092,10.82.9.204:9092"        topics => ["filebeat_docker_java"]    }}filter {    json {        source => "message"    }    date {        match => ["timestamp","UNIX_MS"]        target => "@timestamp"    }}output {    elasticsearch {        hosts => ["10.82.9.205", "10.82.9.206", "10.82.9.207"]        index => "filebeat-docker-java-%{+YYYY.MM.dd}"    }}

都是基础配置很简单,不做过多解释,通过以上简单的配置就能实现任何应用程序的日志收集

日志展示

收集日志到elasticsearch之后,就可以通过kibana配置展示应用程序的日志了,方便开发及时发现问题,在线定位问题

  1. 日志打印Json格式不方便本地查看?这个可以把日志输出格式当做配置写在配置文件中,不同环境加载不同配置,就跟开发环境加载开发数据库一样

  2. 日志系统上线到现在稳定运行接近2年,除了刚开始有点不适应以为,都是越用越好用,现在他们已经离不开ELK日志系统了,大大提高了工作的效率。

  3. 关于ELK日志系统中如何进行通用应用程序日志接入就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

日志 项目 级别 输出 配置 格式 程序 基础 镜像 系统 应用 信息 应用程序 不同 内容 数据 文件 类型 路径 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 字节跳动和互联网科技 金融科技与互联网金融相同和不同 互联网和黑科技的看法 互联网科技产业特征 移动互联网年度科技创新 坤平互联网科技 天津腾达互联网科技有限公司 互联网在线教育科技创业 中和天地互联网科技有限公司 广州富喜互联网络科技 皮皮虾互联网科技有限公司 本届互联网大会上的黑科技 下一代互联网重大应用科技园 中国新注册互联网科技 互联网科技收购价值 科技信息时代互联网发展 河南商务圈互联网科技有限公司 上海旺乐尼互联网科技有限公司 六子台科技互联网展会 中关村互联网 科技集团 互联网科技行业发展 互联网最新的科技有限公司 高科技与互联网 互联网科技公司电话 互联网科技上市公司 银川新华互联网科技学校联系电话 高科技互联网发展前景如何 智帮互联网科技公司最近动向 山东大美朱楼互联网科技有限公司
0