微服务框架(三十)Logstash Kong 日志上报

简介: 此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。本文为Logstash Kong 日志上报本系列文章中所使用的框架版本为Spring Boot 2.0.3-...

  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。

  本文为Logstash Kong 日志上报

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Kong 日志上报

Kong 日志上报采用Kong tcp-log插件

tcp-log插件

可通过API或Konga后台安装Kong tcp-log插件

API

curl -X POST http://localhost:8003/plugins \
    --data "name=tcp-log" \
    --data "config.host=172.16.7.7" \
    --data "config.port=5045"

Konga
在这里插入图片描述

日志字段

  • request 包含有关客户端发送的请求的属性
  • response 包含有关发送到客户端的响应的属性
  • tries 包含负载均衡器为此请求进行的重试(成功和失败)列表
  • route 包含有关所请求的特定路由的Kong属性
  • service 包含与所请求的路线相关联的服务的Kong属性
  • authenticated_entity 包含有关经过身份验证的凭据的Kong属性(如果已启用身份验证插件)
  • workspaces 包含与请求的路由关联的工作空间的Kong属性。仅限Kong Enterprise版本> = 0.34。
  • consumer 包含经过身份验证的使用者(如果已启用身份验证插件)
  • latencies 包含一些有关延迟的数据:
    • proxy 是最终服务处理请求所花费的时间
    • kong 是运行所有插件所需的内部Kong延迟
    • request 是从客户端读取的第一个字节之间以及最后一个字节发送到客户端之间经过的时间。用于检测慢速客户端。
  • client_ip 包含原始客户端IP地址
  • started_at 包含开始处理请求的UTC时间戳。

Logstash 日志处理

相关插件详见微服务框架(二十八)Logstash 使用文档

kong.conf

input {
   tcp {
     host => "172.16.7.7"
     port => "5045"
     codec => "json"
     add_field => ["log_channel", "kong"]
  }
}

filter {

  if [log_channel] == "kong" {
    mutate {
       rename =>{"[host]" => "[host][name]"}
    }

    if [host][name] == "172.16.7.243" {
        mutate {
            add_field => {
                "[@metadata][index_prefix]" => "kong-all-dev"
            }
        }
    }

    geoip {
      source => "[request][headers][remoteip]"
      remove_field => ["tags", "[geoip][latitude]", "[geoip][longitude]", "[geoip][continent_code]", "[geoip][country_code3]", "[geoip][country_code2]"]
    }

  }
}

output {
#  stdout { codec => rubydebug }

  elasticsearch {
      hosts => ["localhost:9200"]
      index => "%{[@metadata][index_prefix]}-%{+YYYY.MM.dd}"
  }
}
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
5月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
521 1
日志收集和Spring 微服务监控的最佳实践
|
11月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2641 1
|
11月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1227 0
|
11月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1048 0
|
11月前
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
745 0
|
9月前
|
人工智能 数据可视化 JavaScript
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
Juggle是国内首个开源的微服务编排框架,专注于解决企业微服务进程中接口重复开发、系统对接复杂等问题。它提供零代码、低代码和AI增强功能,通过可视化拖拽快速组装简单API为复杂接口,支持多协议、多语言脚本和流程多版本管理。相比国外框架如Conductor,Juggle更贴合国内需求,具备高效开发、企业级可靠性及信创适配等优势,助力企业实现敏捷创新与数字化转型。
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
851 1
|
存储 监控 安全
|
存储 JSON 监控
开源日志分析Logstash
【10月更文挑战第22天】
336 1
|
分布式计算 Java 持续交付
如何选择合适的微服务框架
如何选择合适的微服务框架
352 0