微服务轮子项目(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日志并进行多维度分析。
目录
相关文章
|
2天前
|
人工智能 监控 算法
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
3D-Speaker是阿里巴巴通义实验室推出的多模态说话人识别开源项目,结合声学、语义和视觉信息,提供高精度的说话人识别和语种识别功能。项目包含工业级模型、训练和推理代码,以及大规模多设备、多距离、多方言的数据集,适用于多种应用场景。
69 18
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
|
3月前
|
消息中间件 监控 开发工具
微服务(三)-实现自动刷新配置(不重启项目情况下)
微服务(三)-实现自动刷新配置(不重启项目情况下)
|
24天前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
43 1
|
1月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
53 1
|
1月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
4月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
4月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
4月前
|
监控 安全 Linux
在Linux中,如何查看和审计系统日志文件以检测异常活动?
在Linux中,如何查看和审计系统日志文件以检测异常活动?
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
345 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
14天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。