附加技巧

步骤流程:

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

1.filebeat.yml文件配置

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

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

  1. input {
  2. redis {
  3. host => "192.168.80.107"
  4. port => 6379
  5. password => foobar2000 # redis访问密码
  6. data_type => "list" # redis存储的值类型
  7. key => "messages_secure" # redis中的键,跟filebeat.yml配置文件中输出到redis.output一样
  8. db => 0 # 指定的redis数据库
  9. }
  10. }
  11. output {
  12. # 根据redis键 messages_secure 对应的列表值中,每一行数据的其中一个参数来判断日志来源
  13. if [fields][log_source] == 'messages' {
  14. elasticsearch {
  15. hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"]
  16. index => "filebeat-message-%{+YYYY.MM.dd}"
  17. #user => "elastic"
  18. #password => "elastic123"
  19. }
  20. }
  21. if [fields][log_source] == 'secure' {
  22. elasticsearch {
  23. hosts => ["http://192.168.80.104:9200", "http://192.168.80.105:9200","http://192.168.80.106:9200"]
  24. index => "filebeat-secure-%{+YYYY.MM.dd}"
  25. #user => "elastic"
  26. #password => "elastic123"
  27. }
  28. }
  29. }

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

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

  1. {
  2. "fields": {
  3. "log_source": "secure"
  4. },
  5. "log": {
  6. "offset": 12944,
  7. "file": {
  8. "path": "/usr/local/openresty/nginx/logs/error.log"
  9. }
  10. },
  11. "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\"",
  12. }
  13. {
  14. "log": {
  15. "offset": 723861,
  16. "file": {
  17. "path": "/usr/local/openresty/nginx/logs/host.access.log"
  18. }
  19. },
  20. "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\" \"-\"",
  21. "fields": {
  22. "log_source": "messages"
  23. },
  24. }

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

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

  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. paths:
  5. - /usr/local/openresty/nginx/logs/host.access.log # 假设应用1的日志路径
  6. fields:
  7. log_source: messages # logstash判断日志来源
  8. filebeat.inputs:
  9. - type: log
  10. enabled: true
  11. paths:
  12. - /usr/local/openresty/nginx/logs/error.log # 假设应用2的日志路径
  13. fields:
  14. log_source: secure

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

  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. paths:
  5. - /usr/local/openresty/nginx/logs/host.access.log # 假设应用1的日志路径
  6. fields:
  7. log_source: messages # logstash判断日志来源
  8. - type: log
  9. enabled: true
  10. paths:
  11. - /usr/local/openresty/nginx/logs/error.log # 假设应用2的日志路径
  12. fields:
  13. log_source: secure
  14. # 输出到redis的第一个数据库
  15. # 默认是list形式
  16. output.redis:
  17. hosts: ["192.168.80.107:6379"]
  18. key: messages_secure # redis中的键,值是一个列表,俩表中存储的一行一行的上面两个应用的日志,logstash中会用到这个参数
  19. password: foobar2000 # redis访问密码
  20. db: 0
  21. output.redis:
  22. hosts: ["192.168.80.107:6379"]
  23. key: bbb # redis中的键,值是一个列表,俩表中存储的一行一行的上面两个应用的日志,logstash中会用到这个参数
  24. password: foobar2000 # redis访问密码
  25. db: 1
  1. 若是如下这种写法,均只有最后一个生效,也就是只会收集secure的日志,并传输到redis的bbb这个里
  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. paths:
  5. - /usr/local/openresty/nginx/logs/host.access.log
  6. fields:
  7. log_source: messages
  8. output.redis:
  9. hosts: ["192.168.80.107:6379"]
  10. key: aaa
  11. password: foobar2000
  12. db: 0
  13. filebeat.inputs:
  14. - type: log
  15. enabled: true
  16. paths:
  17. - /usr/local/openresty/nginx/logs/error.log
  18. fields:
  19. log_source: secure
  20. output.redis:
  21. hosts: ["192.168.80.107:6379"]
  22. key: bbb
  23. password: foobar2000
  24. 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. msf生成后门拿shell

    0X01简介 这里我本来想学习 msf利用漏洞反弹shell的 但是 没有靶机....等找了靶机在弄吧 kali 172.18.5.118 靶机  172.18.5.240 先尝试能不能ping通 好 ...

  2. springMVC的常用注解有哪些?

    1.@Controller @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象.分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否 ...

  3. linux 简单命令说明

    1.df -h 查看磁盘占用及挂载情况 挂载磁盘 如下: mount /dev/sda1 /boot 取消挂载的磁盘 umount /boot 2.dh -sh 查看当前目录占用文件大小 dh -sh ...

  4. ActiveMQ从入门到精通(二)

    接上一篇<ActiveMQ从入门到精通(一)>,本篇主要讨论的话题是:消息的顺序消费.JMS Selectors.消息的同步/异步接受方式.Message.P2P/PubSub.持久化订阅 ...

  5. Failed to find data source: kafka

    缺少包,在spark-submit 中指定 packages 如下: --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.0

  6. udp组播的实现

    组播在内核里面对应的一个重要的结构体是ip_mreq,如下: struct ip_mreq { struct in_addr imr_multiaddr; /* IP multicast addres ...

  7. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

  8. LoadRunner之关联

    一.什么是关联 关联就是将服务器动态返回变化的值保存为一个参数以供后面需要用到的地方使用. 二.什么时候需要关联 1.服务器返回中存在动态变化的值,一般是类似session.token这样的无规则数据 ...

  9. 中国MOOC_零基础学Java语言_第6周 使用对象_1单词长度

    第6周编程题 查看帮助 返回   第6周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...

  10. ETF替代规则

    0)禁止现金替代:是指在申购.赎回基金份额时,该成份证券不允许使用现金作为替代. 1)允许现金替代:是指在申购基金份额时,允许使用现金作为全部或部分该成份证券的替代,但在赎回基金份额时,该成份证券不允 ...