searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用Fluent Bit将MySQL审计日志传输至Loki

2023-10-23 01:57:04
117
0

第一部分:介绍

        数据库系统中的审计日志是维护数据安全和合规性的关键部分。了解谁访问了数据库,以及执行了哪些操作,对于确保数据的完整性和可用性至关重要。在这个博客文章中,我们将探讨如何使用 Fluent Bit 与 Loki 集成,以采集和分析 MySQL 数据库的审计日志。Fluent Bit 是一款轻量级、高性能的日志数据收集器,而 Loki 是一种强大的分布式日志聚合和查询系统。
        MySQL 数据库是业界最常用的关系型数据库之一,也是许多企业的核心数据存储系统。审计数据库活动对于确保数据的安全性和合规性至关重要,因此将其日志数据有效地采集和分析变得至关重要。
        

第二部分:安装和配置 Fluent Bit

步骤 1:安装 Fluent Bit

        首先,确保你已经安装了 Fluent Bit。你可以使用以下命令在 CentOS 7 上安装 Fluent Bit:
        
下载对应版本的install.sh文件

#执行安装:
install.sh

#默认启动
/opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.conf

步骤 2:配置 Fluent Bit

        接下来,创建一个 Fluent Bit 配置文件(fluent-bit.conf和fluent-bit-parser.conf),示例如下:
fluent-bit.conf文件示例:
[INPUT]
    Name         tail
    Path         /data/logs/audit*.log
    Parser       json-format
    Tag          inst001
    Skip_Long_Lines  On
    Mem_Buf_Limit 5MB

[FILTER]
    Name nest
    Match inst001
    Operation lift
    Nested_under audit_record
    Remove_prefix audit_record

[OUTPUT]
    Name         stdout
    Match        *

[OUTPUT]
    Name              loki
    Match             *
    host              192.168.95.20
    port              3100
    Labels            outer_prod_inst_id=inst001
fluent-bit-parser.conf文件示例:
[MULTILINE_PARSER]
    name          my-log-format
    type          regex
    flush_timeout 1000
    #
    # Regex rules for multiline parsing
    # ---------------------------------
    #
    # configuration hints:
    #
    #  - first state always has the name: start_state
    #  - every field in the rule must be inside double quotes
    #
    # rules |   state name  | regex pattern                  | next state
    # ------|---------------|--------------------------------------------
    rule      "start_state"   "^(# Time: .*)"  "second_state"
    rule      "second_state"  "^(# User@Host: .*)"  "third_state"
    rule      "third_state"  "^(# Schema: .*)"  "four_state"
    rule      "four_state"   "^(# Query_time: .*)"    "statement"
    rule      "statement"     "^\w+.*|^\/\*.*"       "statement"


[PARSER]
    Name        json-format
    Format      json
    Time_Key    time
    Time_Format %Y-%m-%dT%H:%M:%S %z

步骤 3:根据新配置启动 Fluent Bit

/opt/fluent-bit/bin/fluent-bit -c fluent-bit.conf

 

第三部分:安装和配置 Loki

步骤 1:安装 Loki

        现在,我们将在 CentOS 7 上直接安装 Loki。你可以使用以下命令进行安装:
下载安装包:loki-linux-amd64.zip
# extract the binary
unzip loki-linux-amd64.zip
# make sure it is executable
chmod a+x loki-linux-amd64

步骤 2:Loki 配置

        Loki 需要一个配置文件,通常命名为 loki-local-config.yaml,注意下载与版本匹配的配置文件。
下载配置:loki-local-config.yaml
loki-local-config.yaml文件示例:
auth_enabled: false

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

步骤 3:启动Loki

        后台启动loki,并将日志打印到loki_log文件中。
nohup ./loki-linux-amd64 -config.file=loki-local-config.yaml >loki_log 2>&1 &

 

第四部分:MySQL开启审计日志配置

        MySQL 审计日志是一种记录数据库活动的功能,可用于追踪谁在数据库上执行了什么操作。在开始配置 Fluent Bit 以采集这些审计日志之前,我们需要确保 MySQL 已经启用了审计日志功能。

步骤 1:登录到 MySQL 服务器

        首先,登录到你的 MySQL 服务器。你可以使用以下命令:
mysql -u root -p

步骤 2:开启审计日志

        使用以下 SQL 命令开启审计日志:
-- 开启全量审计(不同数据库可能开启方式不同)
SET GLOBAL audit_log_policy=ALL;
-- 设置审计日志文件位置
SET GLOBAL audit_log_format=JSON;
-- 设置审计日志文件格式
SET GLOBAL audit_log_file='/data/logs/audit.log';

步骤 3:查看审计日志状态

        要查看审计日志的状态和配置,可以使用以下 SQL 命令:
SHOW VARIABLES LIKE 'audit_log%';
        确保审计日志已启用并配置正确。
        现在,MySQL 审计日志已经开启并配置完毕,Fluent Bit 将能够采集这些审计日志并将其发送到 Loki 以供进一步分析和监控。
 

第五部分:示例用例 - 查询 Loki 中的审计日志数据

        一旦 Fluent Bit 将 MySQL 审计日志数据发送到 Loki,你可以使用 Loki 的查询语言(LogQL)来执行各种查询,以便了解数据库活动和系统性能。查询的 URL 格式通常如下:
        在这里,你需要将 替换为你想要执行的具体 Loki 查询语句。以下是一些示例用例,带有完整的 URL:
loki-server:3100/loki/api/v1/query?query=<Your_LogQL_Query>

示例用例 1:查询所有数据库操作

192.168.95.20:3100/loki/api/v1/query?query={outer_prod_inst_id="inst001"}
 

第六部分:参考资料

  • Loki官网
  • Fluent-bit官网
0条评论
0 / 1000
王****勇
4文章数
0粉丝数
王****勇
4 文章 | 0 粉丝
原创

使用Fluent Bit将MySQL审计日志传输至Loki

2023-10-23 01:57:04
117
0

第一部分:介绍

        数据库系统中的审计日志是维护数据安全和合规性的关键部分。了解谁访问了数据库,以及执行了哪些操作,对于确保数据的完整性和可用性至关重要。在这个博客文章中,我们将探讨如何使用 Fluent Bit 与 Loki 集成,以采集和分析 MySQL 数据库的审计日志。Fluent Bit 是一款轻量级、高性能的日志数据收集器,而 Loki 是一种强大的分布式日志聚合和查询系统。
        MySQL 数据库是业界最常用的关系型数据库之一,也是许多企业的核心数据存储系统。审计数据库活动对于确保数据的安全性和合规性至关重要,因此将其日志数据有效地采集和分析变得至关重要。
        

第二部分:安装和配置 Fluent Bit

步骤 1:安装 Fluent Bit

        首先,确保你已经安装了 Fluent Bit。你可以使用以下命令在 CentOS 7 上安装 Fluent Bit:
        
下载对应版本的install.sh文件

#执行安装:
install.sh

#默认启动
/opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.conf

步骤 2:配置 Fluent Bit

        接下来,创建一个 Fluent Bit 配置文件(fluent-bit.conf和fluent-bit-parser.conf),示例如下:
fluent-bit.conf文件示例:
[INPUT]
    Name         tail
    Path         /data/logs/audit*.log
    Parser       json-format
    Tag          inst001
    Skip_Long_Lines  On
    Mem_Buf_Limit 5MB

[FILTER]
    Name nest
    Match inst001
    Operation lift
    Nested_under audit_record
    Remove_prefix audit_record

[OUTPUT]
    Name         stdout
    Match        *

[OUTPUT]
    Name              loki
    Match             *
    host              192.168.95.20
    port              3100
    Labels            outer_prod_inst_id=inst001
fluent-bit-parser.conf文件示例:
[MULTILINE_PARSER]
    name          my-log-format
    type          regex
    flush_timeout 1000
    #
    # Regex rules for multiline parsing
    # ---------------------------------
    #
    # configuration hints:
    #
    #  - first state always has the name: start_state
    #  - every field in the rule must be inside double quotes
    #
    # rules |   state name  | regex pattern                  | next state
    # ------|---------------|--------------------------------------------
    rule      "start_state"   "^(# Time: .*)"  "second_state"
    rule      "second_state"  "^(# User@Host: .*)"  "third_state"
    rule      "third_state"  "^(# Schema: .*)"  "four_state"
    rule      "four_state"   "^(# Query_time: .*)"    "statement"
    rule      "statement"     "^\w+.*|^\/\*.*"       "statement"


[PARSER]
    Name        json-format
    Format      json
    Time_Key    time
    Time_Format %Y-%m-%dT%H:%M:%S %z

步骤 3:根据新配置启动 Fluent Bit

/opt/fluent-bit/bin/fluent-bit -c fluent-bit.conf

 

第三部分:安装和配置 Loki

步骤 1:安装 Loki

        现在,我们将在 CentOS 7 上直接安装 Loki。你可以使用以下命令进行安装:
下载安装包:loki-linux-amd64.zip
# extract the binary
unzip loki-linux-amd64.zip
# make sure it is executable
chmod a+x loki-linux-amd64

步骤 2:Loki 配置

        Loki 需要一个配置文件,通常命名为 loki-local-config.yaml,注意下载与版本匹配的配置文件。
下载配置:loki-local-config.yaml
loki-local-config.yaml文件示例:
auth_enabled: false

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

步骤 3:启动Loki

        后台启动loki,并将日志打印到loki_log文件中。
nohup ./loki-linux-amd64 -config.file=loki-local-config.yaml >loki_log 2>&1 &

 

第四部分:MySQL开启审计日志配置

        MySQL 审计日志是一种记录数据库活动的功能,可用于追踪谁在数据库上执行了什么操作。在开始配置 Fluent Bit 以采集这些审计日志之前,我们需要确保 MySQL 已经启用了审计日志功能。

步骤 1:登录到 MySQL 服务器

        首先,登录到你的 MySQL 服务器。你可以使用以下命令:
mysql -u root -p

步骤 2:开启审计日志

        使用以下 SQL 命令开启审计日志:
-- 开启全量审计(不同数据库可能开启方式不同)
SET GLOBAL audit_log_policy=ALL;
-- 设置审计日志文件位置
SET GLOBAL audit_log_format=JSON;
-- 设置审计日志文件格式
SET GLOBAL audit_log_file='/data/logs/audit.log';

步骤 3:查看审计日志状态

        要查看审计日志的状态和配置,可以使用以下 SQL 命令:
SHOW VARIABLES LIKE 'audit_log%';
        确保审计日志已启用并配置正确。
        现在,MySQL 审计日志已经开启并配置完毕,Fluent Bit 将能够采集这些审计日志并将其发送到 Loki 以供进一步分析和监控。
 

第五部分:示例用例 - 查询 Loki 中的审计日志数据

        一旦 Fluent Bit 将 MySQL 审计日志数据发送到 Loki,你可以使用 Loki 的查询语言(LogQL)来执行各种查询,以便了解数据库活动和系统性能。查询的 URL 格式通常如下:
        在这里,你需要将 替换为你想要执行的具体 Loki 查询语句。以下是一些示例用例,带有完整的 URL:
loki-server:3100/loki/api/v1/query?query=<Your_LogQL_Query>

示例用例 1:查询所有数据库操作

192.168.95.20:3100/loki/api/v1/query?query={outer_prod_inst_id="inst001"}
 

第六部分:参考资料

  • Loki官网
  • Fluent-bit官网
文章来自个人专栏
个人IT技术
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0