当前位置:网站首页>Filebeat收集日志数据传输到Redis,通过Logstash来根据日志字段创建不同的ES索引
Filebeat收集日志数据传输到Redis,通过Logstash来根据日志字段创建不同的ES索引
2022-06-22 16:38:00 【非著名运维】
1.Filebeat.yml配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/access.log
exclude_files: ['.gz$','INFO']
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
tags: ["nginx-log-messages"]
fields:
log_source: messages
fields_under_root: true
output.redis:
hosts: ["192.168.0.111:6379"]
key: nginx_log
password: nginxredis
db: 0
参数说明
fields:
log_source: messages
fields_under_root: true
使用fields表示在filebeat收集的日志中多增加一个字段log_source,其值是messages,用来在logstash的output输出到elasticsearch中判断日志的来源,从而建立相应的索引 若fields_under_root设置为true,表示上面新增的字段是顶级参数。
顶级字段在output输出到elasticsearch中的使用如下:
[[email protected] logstash]# vim config/logstash.conf
input {
redis {
data_type => "list"
host => "192.168.0.111"
db => "0"
port => "6379"
key => "nginx_log"
password => "nginxredis"
}
}
output {
# 根据redis键 messages_secure 对应的列表值中,每一行数据的其中一个参数来判断日志来源
if [log_source] == 'messages' { # 注意判断条件的写法
elasticsearch {
hosts => ["192.168.0.111:9200"]
index => "nginx-message-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "elastic123"
}
}
#或者也可以根据tags判断
if "nginx-log-messages" in [tags] {
elasticsearch {
hosts => [""192.168.0.111:9200"]
index => "nginx-message-%{+YYYY.MM.dd}"
}
}
}
2.多个应用的日志都输出到redis
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/access.log
tags: ["nginx-log-access"]
fields:
log_source: access
fields_under_root: true
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/error.log
tags: ["nginx-log-error"]
fields:
log_source: error
fields_under_root: true
output.redis:
hosts: ["192.168.0.111:6379"]
key: nginx_log
password: nginxredis
db: 0
在redis中显示的效果是都会输出到key值nginx_log对应的列表中,根据key值是没法进行区分的,只能根据key值列表中每一行数据中的log_source或者自己定义的属性来判断该行是哪一个应用的日志。
3.不同的应用日志使用不同的rediskey值
使用output.redis中的keys值,官方例子
output.redis:
hosts: ["localhost"]
key: "default_list"
keys:
- key: "error_list" # send to info_list if `message` field contains INFO
when.contains:
message: "error"
- key: "debug_list" # send to debug_list if `message` field contains DEBUG
when.contains:
message: "DEBUG"
- key: "%{[fields.list]}"
说明:默认的key值是default_list,keys的值是动态分配创建的,当redis接收到的日志中message字段的值包含有error字段,则创建key为error_list,当包含有DEBUG字段,则创建key为debug_list。
问题的解决方法是在每个应用的输出日志中新增一个能够区分这个日志的值,然后再在keys中设置,这样一来就能够把不同应用的日志输出到不同的redis的key中。
边栏推荐
- [small program project development -- Jingdong Mall] rotation chart of uni app development
- Activity启动流程梳理
- Using stream API instead of SQL
- Interview shock 58: Six differences among truncate, delete and drop!
- 无心剑中文随感《探求真谛》
- Tried several report tools, and finally found a report based on Net 6
- Ad20/altium Designer - oil for manhole cover
- MySQL instruction executes SQL file
- Definition of thinking
- 【人脸识别】基于GoogleNet深度学习网络的人脸识别matlab仿真
猜你喜欢

How to solve the problem of database?

JSP learning (3) -- JSP implicit object

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

缺失值處理

云端极简部署Svelte3聊天室

诺亚财富拟登陆港交所:第一季度业绩大幅下滑,曾踩雷“承兴案”

math_角函数&反三角函数
![[step 1 of advanced automated testing] 1 minute to introduce you to automated testing](/img/00/9647d552749092954a91bd84307773.png)
[step 1 of advanced automated testing] 1 minute to introduce you to automated testing

阻碍华为5G手机的关键芯片取得突破,国产芯片已取得一成份额

Typescript (7) generic
随机推荐
来厦门了!线上交流限额免费报名中
SQL syntax detection
Ad20/altium Designer - oil for manhole cover
Fluentd is easy to get started. Combined with the rainbow plug-in market, log collection is faster
Cloud minimalist deployment svelte3 chat room
Xshell 7(SSH远程终端工具) v7.0.0109 官方中文正式版(附文件+安装教程)
国产手机干翻苹果?原来是靠百元机和猛降价实现的
UI automation positioning edge -xpath actual combat
Parallel integrates with moonbeam through xcm, bringing para and defi use cases into moonbeam ecology
思维的定义
Gridhome, a must-have static site generator for beginners
Thoughts on joint primary key
A new mode of enterprise software development: low code
Kibana+elk cluster log processing
[fpga+pwm] design and implementation of phase shift trigger circuit for three-phase PWM rectifier based on FPGA
The principle of locality in big talk
How to solve the problem of database?
[psychology] emotional psychology - collision between contemporary thoughts and traditional thoughts (this article will be continuously updated from time to time)
Service or mapper cannot be injected into a multithread
Stop automatically after MySQL server starts