需要确保在 Fluent Bit 的配置文件中正确配置输入(MySQL 日志文件)、过滤(如果需要处理或增强日志数据)、输出(发送到 Elasticsearch),以及指定的索引名称。以下是配置的逻辑和关键点:
逻辑解析
-
读取 MySQL 日志文件
使用 Fluent Bit 的tail
输入插件,实时监控 MySQL 日志文件的新增内容。 -
可选:过滤和处理日志数据
如果需要对日志数据进行解析(如提取特定字段或添加额外字段),可以使用过滤插件。 -
发送到 Elasticsearch
使用 Fluent Bit 的es
输出插件,将日志数据发送到 Elasticsearch,并指定索引名称。
配置示例
Fluent Bit 配置文件
[INPUT]
Name tail
Path /var/log/mysql/mysql.log
Tag mysql.log
DB /var/log/flb_tail.db
Refresh_Interval 5
Multiline On
Parser mysql_log
[FILTER]
Name parser
Match mysql.log
Key_Name log
Parser mysql_log
Reserve_Data On
[OUTPUT]
Name es
Match *
Host your-elasticsearch-host
Port 9200
Index mysql-logs
Type _doc
Logstash_Format On
关键点
-
输入部分
Path
:指定 MySQL 日志文件路径。Refresh_Interval
:设置刷新间隔,以检查文件新增内容。- 如果日志是多行(如错误堆栈),启用
Multiline
并配置相应的解析器。
-
解析和过滤
使用parser
插件将原始日志数据解析成结构化数据,例如提取日期、级别、消息等字段。 -
输出部分
Host
和Port
:配置 Elasticsearch 的地址和端口。Index
:指定存储数据的索引名称。Logstash_Format On
:启用时会根据时间动态生成索引名(如mysql-logs-2025.01.09
)。
需要注意的事项
-
解析器配置
如果日志格式复杂,需要创建自定义解析器(mysql_log
):解析器文件(
parsers.conf
)示例:[PARSER] Name mysql_log Format regex Regex ^(?<time>[^ ]+) (?<level>[^ ]+) (?<message>.+)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S
-
权限问题
Fluent Bit 服务需要对 MySQL 日志文件有读取权限。 -
Elasticsearch 配置
- 确保 Elasticsearch 集群可用。
- 索引名称与索引模板(Mapping)一致,以便正确存储和查询数据。
-
性能优化
- 使用
DB
参数防止 Fluent Bit 重启后重新读取日志。 - 适当配置批量发送大小(
Flush
、Chunk_Size
等)。
- 使用
验证逻辑
- 确认 MySQL 日志路径和格式正确。
- 确认 Fluent Bit 服务启动并成功读取日志。
- 在 Elasticsearch 中检查日志是否存储到指定索引中。
- 如果出现问题,查看 Fluent Bit 的日志排查错误。
这个配置逻辑是标准化的流程,经过测试后应该可以顺利运行。