微服务轮子项目(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月前
|
消息中间件 监控 开发工具
微服务(三)-实现自动刷新配置(不重启项目情况下)
微服务(三)-实现自动刷新配置(不重启项目情况下)
|
18天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
34 1
|
20天前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
3月前
|
开发框架 .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中的问题
|
3月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
3月前
|
监控 安全 Linux
在Linux中,如何查看和审计系统日志文件以检测异常活动?
在Linux中,如何查看和审计系统日志文件以检测异常活动?
|
3月前
|
数据可视化 Java API
如何在项目中快速引入Logback日志并搭配ELK使用
如何在项目中快速引入Logback日志并搭配ELK使用
|
3月前
|
开发框架 .NET API
如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?
如何在 ASP.NET Core Web Api 项目中应用 NLog 写日志?
178 0
|
10天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
51 6
|
10天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
27 1