微服务轮子项目(15) -审计日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 微服务轮子项目(15) -审计日志

1. 前言

在上一篇博客《微服务轮子项目(14) - 慢查询SQL》,主要讲解了慢查询在MySQL以及在Logstash和Filebeat的操作。

接下来,本文要讲解的是审计日志。

2. 审计日志集成

将来要集成审计日志到我们的项目中,其中审计信息默认输出到logger文件中:logs/audit/audit.log

集成的步骤如下:

step1: 配置信息,该功能默认关闭,添加以下配置到需要记录审计日志的服务上即可开启

ylw:
  audit-log:

step2:添加依赖

<dependency>
    <groupId>wheel-commons</groupId>
    <artifactId>wheel-log-spring-boot-starter</artifactId>
</dependency>

step3: 添加注解,在需要审计的方法上添加 @AuditLog注解,如果在类上添加则该类的所有方法都生效,支持 spEL 表达式

如果配置成功,开启后,会并生成出审计日志,内容如下:

3. 发送审计日志

3.1 安装部署ELK

3.2 定义es索引模板

执行下面的ssh脚本创建 【审计日志】 的索引模板,ip改为自己的服务器地址:

curl -XPUT http://192.168.28.130:9200/_template/template_audit_log -H 'Content-Type: application/json' -d '
{
    "index_patterns" : ["audit-log-*"],
    "order" : 0,
    "settings" : {
        "number_of_replicas" : 0
    },
    "mappings": {
        "doc": {
            "properties": {
                "operation": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    },
                    "analyzer": "ik_max_word"
                }
            }
        }  
    } 
}'

3.3 Logstash配置

step1:修改10-syslog.conf配置,在filter里增加以下内容:

if [fields][docType] == "audit-log" {
    grok {
      patterns_dir => ["/opt/logstash/patterns"]
      match => {
        "message" => "%{TIMESTAMP_ISO8601:logTime}\|%{MYAPPNAME:appName}\|%{MYTHREADNAME:className}\|%{WORD:methodName}\|%{MYAPPNAME:userId}\|%{MYAPPNAME:userName}\|%{MYAPPNAME:clientId}\|%{GREEDYDATA:operation}"
      }
    }
    date {
      match => ["logTime","yyyy-MM-dd HH:mm:ss.SSS Z"]
    }
    date {
      match => ["logTime","yyyy-MM-dd HH:mm:ss.SSS"]
      target => "timestamp"
      locale => "en"
      timezone => "+08:00"
    }
    mutate {
      remove_field => "message"
      remove_field => "logTime"
      remove_field => "@version"
      remove_field => "host"
      remove_field => "offset"
    }
}

step2: 修改30-output.conf配置,增加以下内容

if [fields][docType] == "audit-log" {
    elasticsearch {
      hosts => ["localhost"]
      manage_template => false
      index => "audit-log-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }
}

3.4 Filebeat配置

修改配置文件 filebeat.yml,在 filebeat.inputs 里添加以下内容,抓取日志内容:

- type: log
  enabled: true
  paths:
    - D:\workspaces\projects\logs\audit\*.log
  fields:
    docType: audit-log
    project: microservices-platform

4. 查看数据

配置好elk之后日志数据就能同步到es了并自动创建索引:

通过页面展示数据:


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
27天前
|
人工智能 监控 算法
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
3D-Speaker是阿里巴巴通义实验室推出的多模态说话人识别开源项目,结合声学、语义和视觉信息,提供高精度的说话人识别和语种识别功能。项目包含工业级模型、训练和推理代码,以及大规模多设备、多距离、多方言的数据集,适用于多种应用场景。
235 18
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
|
22天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
4月前
|
消息中间件 监控 开发工具
微服务(三)-实现自动刷新配置(不重启项目情况下)
微服务(三)-实现自动刷新配置(不重启项目情况下)
|
1月前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
95 1
|
2月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
61 1
|
2月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
5月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
2月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
167 6
|
2月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
64 1
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
212 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型