前言
在众多的Logstash过滤器中,许多过滤器都可以对pipeline的数据进行富化操作,其中比较常用的就是jdbc_static,其可以通过调用远程数据库的预加载数据进行pipeline数据的丰富化操作。
logstash-filter-jdbc_static插件最适合于静态 或 不经常更改的数据的“丰富化”处理。
依赖准备:Mysql服务,本案例采用docker mysql容器。
实现功能:将logstash接收到的请求日志,通过调用mysql进行富化处理。
gitee代码地址:https://gitee.com/vincent_whf/logstash/tree/master/2.logstatsh_study%E5%8A%A0%E5%85%A5jdbc_static
1. 数据库准备
使用docker启动mysql数据库
1 | docker run -itd --network host --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 |
注意:docker的网络模式采用host模式
2. logstash准备
2.1 代码路径
├── logstatsh_study
├── config
└── logstash.yml
└── pipelines.yml
├── pipeline
└── in.conf
└── out.conf
└── filter1.conf
├── syslog.py
├── udp.py
代码路径解释:
1)config文件夹下存放的是配置文件logstash.yml,配置与logstash相关的配置。配置文件pipelines.yml,配置与管道相关的配置,默认启动pipeline.id为main的管道
2)pipeline文件夹为管道文件,主要存放的是接收、输出、过滤日志信息的conf配置文件
3)syslog.py和dup.py文件,主要用于测试,实现推送日志信息
2.2 pipelines.yml配置
在pipelines.yml文件中设置默认管道main,且配置默认解析过滤配置文件的path.config参数。
如下是我在pipelines.yml中定义的内容:
1 | - pipeline.id: main |
3. 定义过滤规则
过滤规则采用logstash-filter-jdbc_static插件,实现从数据库中查询数据,并对写入日志的“丰富化”处理。
实现功能:查询数据库表safety_equipment中的数据,根据ip参数过滤结果,并将查询后的ip、name、port参数组装在日志中。
如下是我在pipeline/filter1.conf中定义的内容:
1 | filter { |
4. 调试
执行python syslog.py文件,并查看logstash的日志打印,观察是否有绑定from_ip参数字段。