附加技巧

步骤流程:

使用filebeat收集一台主机上两个不同应用的日志,传递给redis,然后logstash从redis中拉去数据传递给elasticsearch

1.filebeat.yml文件配置

filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/host.access.log # 假设应用1的日志路径
fields:
log_source: messages # logstash判断日志来源 - type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/error.log # 假设应用2的日志路径
fields:
log_source: secure # 输出到redis的第一个数据库
# 默认是list形式
output.redis:
hosts: ["192.168.80.107:6379"]
key: messages_secure # redis中的键,值是一个列表,俩表中存储的一行一行的上面两个应用的日志,logstash中会用到这个参数
password: foobar2000 # redis访问密码
db: 0

2.logstash目录下conf.d/*.conf文件配置

input {
redis {
host => "192.168.80.107"
port => 6379
password => foobar2000 # redis访问密码
data_type => "list" # redis存储的值类型
key => "messages_secure" # redis中的键,跟filebeat.yml配置文件中输出到redis.output一样
db => 0 # 指定的redis数据库
}
} output {
# 根据redis键 messages_secure 对应的列表值中,每一行数据的其中一个参数来判断日志来源
if [fields][log_source] == 'messages' {
elasticsearch {
hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"]
index => "filebeat-message-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "elastic123"
}
} if [fields][log_source] == 'secure' {
elasticsearch {
hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"]
index => "filebeat-secure-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "elastic123"
}
}
}

如下是redis列表值中的两条不同的数据,删除元数据后的数据

fields字段值是在filebeat.yml中设置的,根据这个值得不同,进而在elasticsearch中创建不同的索引

{
"fields": {
"log_source": "secure"
}, "log": {
"offset": 12944,
"file": {
"path": "/usr/local/openresty/nginx/logs/error.log"
}
},
"message": "2019/08/28 00:01:47 [error] 6764#6764: *4 open() \"/usr/local/openresty/nginx/html/lua\" failed (2: No such file or directory), client: 192.168.80.1, server: localhost, request: \"GET /lua HTTP/1.1\", host: \"192.168.80.108\"", } {
"log": {
"offset": 723861,
"file": {
"path": "/usr/local/openresty/nginx/logs/host.access.log"
}
},
"message": "192.168.80.1 - - [28/Aug/2019:00:01:47 +0800] \"GET /lua HTTP/1.1\" 404 131 \"-\" \"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0\" \"-\"",
"fields": {
"log_source": "messages"
},
}

研究:若是俩应用的日志想分别输出到redis不同的库,设置不同的redis键,要如何操作?

  1. filebeat.inputs写俩的话,默认最后一个secure的生效才会收集日志,messages的不会生效收集日志,比如下面的写法:

filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/host.access.log # 假设应用1的日志路径
fields:
log_source: messages # logstash判断日志来源 filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/error.log # 假设应用2的日志路径
fields:
log_source: secure

2.output.redis写俩的话默认最后一个的bbb生效,比如下面的这种写法:

filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/host.access.log # 假设应用1的日志路径
fields:
log_source: messages # logstash判断日志来源 - type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/error.log # 假设应用2的日志路径
fields:
log_source: secure # 输出到redis的第一个数据库
# 默认是list形式
output.redis:
hosts: ["192.168.80.107:6379"]
key: messages_secure # redis中的键,值是一个列表,俩表中存储的一行一行的上面两个应用的日志,logstash中会用到这个参数
password: foobar2000 # redis访问密码
db: 0 output.redis:
hosts: ["192.168.80.107:6379"]
key: bbb # redis中的键,值是一个列表,俩表中存储的一行一行的上面两个应用的日志,logstash中会用到这个参数
password: foobar2000 # redis访问密码
db: 1
  1. 若是如下这种写法,均只有最后一个生效,也就是只会收集secure的日志,并传输到redis的bbb这个里
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/host.access.log
fields:
log_source: messages output.redis:
hosts: ["192.168.80.107:6379"]
key: aaa
password: foobar2000
db: 0 filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/openresty/nginx/logs/error.log
fields:
log_source: secure output.redis:
hosts: ["192.168.80.107:6379"]
key: bbb
password: foobar2000
db: 0

所以这个问题还有待研究,或者使用不同的inputs来源,或者使用不同的output输出

查看集群主从分配

http://192.168.80.104:9200/_cat/nodes?v

查看集群状态

http://192.168.80.104:9200/_cluster/health?pretty

小技巧,查看filebeat获取的日志结果

可以把filebeat收集的日志传输到redis中,在redis中查看,若日志正确无误,然后再开启logstash从redis中拉取数据

使用filebeat收集不同用应用的日志传输到redis,并加以区分的更多相关文章

  1. 使用filebeat收集日志传输到redis的各种效果展示

    0 环境 Linux主机,cengtos7系统 安装有openresty软件,用来访问生成日志信息 1.15.8版本 安装有filebeat软件,用来收集openresty的日志 7.3版本 安装有r ...

  2. filebeat收集日志传输到Redis集群,logstash从Redis集群中拉取数据

    前提:已配置好Redis集群,并设置的有统一的访问密码 架构是filebeat-->redis集群-->logstash->elasticsearch,需要修改filebeat的输出 ...

  3. filebeat收集nginx的json格式日志

    一.在nginx主机上安装filebeat组件 [root@zabbix_server nginx]# cd /usr/local/src/ [root@zabbix_server src]# wge ...

  4. 第十一章·Filebeat-使用Filebeat收集日志

    Filebeat介绍及部署 Filebeat介绍 Filebeat附带预构建的模块,这些模块包含收集.解析.充实和可视化各种日志文件格式数据所需的配置,每个Filebeat模块由一个或多个文件集组成, ...

  5. filebeat 收集的进度日志查看

    filebeat 收集的日志进度和文件在data 目录中是有保存的 默认路径地址: /usr/share/filebeat/data 里面有两个文件: meta.json:{"uuid&qu ...

  6. ELK日志方案--使用Filebeat收集日志并输出到Kafka

    1,Filebeat简介 Filebeat是一个使用Go语言实现的轻量型日志采集器.在微服务体系中他与微服务部署在一起收集微服务产生的日志并推送到ELK. 在我们的架构设计中Kafka负责微服务和EL ...

  7. ELK之filebeat收集多类型日志

    1.IP规划 10.0.0.33:filebeat+tomcat,filebeat收集系统日志.tomcat日志发送到logstash 10.0.0.32:logstash,将日志写入reids(in ...

  8. ELK学习实验018:filebeat收集docker日志

    Filebeat收集Docker日志 1 安装docker [root@node4 ~]# yum install -y yum-utils device-mapper-persistent-data ...

  9. elk-日志方案--使用Filebeat收集日志并输出到Kafka

      1,Filebeat简介 Filebeat是一个使用Go语言实现的轻量型日志采集器.在微服务体系中他与微服务部署在一起收集微服务产生的日志并推送到ELK. 在我们的架构设计中Kafka负责微服务和 ...

随机推荐

  1. docker开启远程tcp监听端口

    linux 测试成功 cat > /etc/systemd/system/docker.service.d/tcp.conf <<EOF [Service] ExecStart= E ...

  2. 创建一个简单的 Springboot web项目

    1.点击Project 2.点击 Next 3.项目名 4.web 项目 4.确认 5.pom.xml <?xml version="1.0" encoding=" ...

  3. mysql 创建用户和授权

    https://www.cnblogs.com/sos-blue/p/6852945.html

  4. UI编辑

    UI编辑 基本部件介绍 (1)Layout(布局) (2)Space(空间) (3)Button (4)ItemView (5)ItemWidget Widget继承自View,即ListWidget ...

  5. 【bzoj3223】Tyvj 1729 文艺平衡树

    题目描述: 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 输入 ...

  6. 初识linux命令

    1. type: 查看是外部命令/内部命令 外部命令 有存放地址信息 内部命令 is a shell builtin 2.file 查看文件的编码方式 file /sbin/ifconfig 编译执行 ...

  7. centos下面配置key登录

    centos下需要配置使用key登录,并且要禁止root登录 下面的操作都是用root来设置的 1.添加新用户 例如用户名leisiyuan useradd leisiyuan 2.设置密码 pass ...

  8. YV12和NV12格式

    害怕搞忘 直接保存图片

  9. m3u8直播测试地址

    调试m3u8的时候需要测试地址 找了几个,备用一下 安徽卫视 http://stream2.ahtv.cn/ahws/cd/live.m3u8经济生活 http://stream2.ahtv.cn/j ...

  10. vue的组件通讯 父传子 -- 子传父-- 兄弟组件的传值 vue的组件传值

    首先文字简单撸一下 父子传子   -------首先在父组件上绑定一个属性,在子组件里用props接收,可以是数组或者是对象 子传父   ------在父组件升上自定义一个方法,在子组件里通过this ...