一、filebeat 收集软链文件日志

1.1、场景

  1. 由于我们新部署的Nginx 日志都是采用的软链的形式。

    lrwxrwxrwx 1 root  root      72 Apr  6 00:00 jy.baidu.com-80-access.log -> /usr/local/openresty/nginx/logs/jy.baidu.com-80-access.log.2022040600
    -rw-r--r-- 1 nginx root 4502502 Apr 3 23:59 jy.baidu.com-80-access.log.2022040300
    -rw-r--r-- 1 nginx root 5790629 Apr 5 00:00 jy.baidu.com-80-access.log.2022040400
    -rw-r--r-- 1 nginx root 9166562 Apr 5 23:59 jy.baidu.com-80-access.log.2022040500
    -rw-r--r-- 1 nginx root 2447936 Apr 6 09:31 jy.baidu.com-80-access.log.2022040600
  2. 我们收集日志的时候,通过配置filebeat 收集日志文件 jy.baidu.com-80-access.log, 因为这个文件会一直软链到最新的日志文件。

  3. 但是我们会发现在启动filebeatfilebeat 并没有报错什么。 但是我们logstash 好像也没有往es 写日志。

1.2、问题排查

  1. 我们首先是通过开启filebeat 的 debug模式,就是看下 filebeat 的详细日志,这一步理论上来说,我们应该先通过kafka 看下是否有日志写入kafka。 但是没有关系,我们通过看 filebeat 的详细日志。 可以一步分析到位。

    logging.level: debug
  2. 我们在日志中可以看到下面的信息

    2022-04-03T19:48:21.675+0800        DEBUG        [monitoring]        memqueue/eventloop.go:228        handle ACK took: 54.938µs
    2022-04-03T19:48:21.675+0800 DEBUG [monitoring] memqueue/ackloop.go:128 ackloop: return ack to broker loop:1
    2022-04-03T19:48:21.675+0800 DEBUG [monitoring] memqueue/ackloop.go:131 ackloop: done send ack
    2022-04-03T19:48:23.443+0800 DEBUG [input] input/input.go:152 Run input
    2022-04-03T19:48:23.443+0800 DEBUG [input] log/input.go:174 Start next scan
    2022-04-03T19:48:23.443+0800 DEBUG [input] log/input.go:273 File /usr/local/openresty/nginx/logs/jy.baidu.com-80-access.log skipped as it is a symlink.
    2022-04-03T19:48:23.443+0800 DEBUG [input] log/input.go:195 input states cleaned up. Before: 1, After: 1, Pending: 0
    2022-04-03T19:48:26.443+0800 DEBUG [input] input/input.go:152 Run input
    2022-04-03T19:48:26.444+0800 DEBUG [input] log/input.go:174 Start next scan

    日志内容

    File /usr/local/openresty/nginx/logs/jy.baidu.com-80-access.log skipped as it is a symlink.

    我们可以看到文件因为是软链接所以被忽略了。

  3. 我们查看官方文档,需要增加配置 symlinks: true

    filebeat.inputs:
    - type: log
    symlinks: true
  4. 然后我们重启filebeat 就可以看到有日志写入kafka了。

二、logstash

2.1、logstash 解析日志不写入es

每个人的场景不一样。这里只提供大概思路。

  1. kafka 是否有数据, 可以kafka consumer 进行订阅用不同的 group 来同一个 topic。 进行查看是否有kafka数据

  2. logstash 启动是否有报错。

    [2022-04-02T20:55:06,432][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.8.0"}
    [2022-04-02T20:55:07,554][ERROR][logstash.agent ] Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError", :message=>"Expected one of #, {, } at line 5, column 43 (byte 118) after input {\n kafka {\n group_id => \"hz-sg\"\n topics => [\"hz-sg-nginxlog\"]\n bootstrap_servers => \"10.59.4.50:9092\"", :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/compiler.rb:41:in `compile_imperative'", "/usr/share/logstash/logstash-core/lib/logstash/compiler.rb:49:in `compile_graph'", "/usr/share/logstash/logstash-core/lib/logstash/compiler.rb:11:in `block in compile_sources'", "org/jruby/RubyArray.java:2577:in `map'", "/usr/share/logstash/logstash-core/lib/logstash/compiler.rb:10:in `compile_sources'", "org/logstash/execution/AbstractPipelineExt.java:151:in `initialize'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:22:in `initialize'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:90:in `initialize'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:43:in `block in execute'", "/usr/share/logstash/logstash-core/lib/logstash/agent.rb:96:in `block in exclusive'", "org/jruby/ext/thread/Mutex.java:165:in `synchronize'", "/usr/share/logstash/logstash-core/lib/logstash/agent.rb:96:in `exclusive'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:39:in `execute'", "/usr/share/logstash/logstash-core/lib/logstash/agent.rb:334:in `block in converge_state'"]}
    [2022-04-02T20:55:07,807][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
    [2022-04-02T20:55:12,703][INFO ][logstash.runner ] Logstash shut down.

    像这种就是配置文件格式可能存在一些问题。

    [2022-04-02T20:36:04,433][ERROR][logstash.pipeline        ] Error registering plugin {:pipeline_id=>"main", :plugin=>"#<LogStash::FilterDelegator:0x5fdbe919>", :error=>"pattern %{SERVICE:service} not defined", :thread=>"#<Thread:0x20114a64 run>"}
    
    

    这种报错就是我们没有定义变量的匹配规则。

  3. 还有一种是我们最近遇到了的,就是我在 es 的 output 的时候,引用了一个变量 service 。 但是前面没有定义这个。最后这个logstash 也没有报错,就是写不到 es 里面。

            elasticsearch {
    hosts => ["10.60.4.50","10.60.4.51","10.60.4.52"]
    index => "%{[service]-%{+YYYY.MM.dd}"
    template => "/etc/logstash/template/nginx.json"
    template_name => "nginx.json"
    template_overwrite => true
    user => "elastic"
    password => "1111111"
    }
  4. 开启日志debug. /etc/logstash/logstash.yml

    #log.level: debug

2.2、logstash 配置多个后端

  1. logstash -f /opt/logstash/conf/conf.d/

    注意/conf.d/ 后面不要加***** 这样会导致只匹配一个。

  2. 使用多个配置文件里面的input、filter、output 不是互相独立的。

    logstash读取多个配置文件只是简单的将所有配置文件整合到了一起

    如果要彼此独立,需要自己加字段,然后在output 判断一下 ,通过字段进行区分。

Filebeat和logstash 使用过程中遇到的一些小问题记录的更多相关文章

  1. js:使用js过程中遇到的一个小问题

    在一个作业中使用了js,函数A调用函数B.当A和B中均含有变量i的时候,相关操作结果可能会出错. 将B中的i替换为j(j不存在于A中)后,结果正确. 目前考虑原因是两个变量i有相关性(或者说实际上就是 ...

  2. thinkphp 使用过程中遇到的一个小函数

    1.实现导出Excel文件,并在导出的文件中显示图片 //导出 public function push(){ $goods_list=M('Dajia')->select(); $data = ...

  3. AdminIII连接linux Postgresql过程中的几个小问题

    1.postgresql.conf主配置文件中要配置postgresql绑定的IP,如果不设置,可能只绑定本地闭环地址:127.0.0.1,可以设定为0.0.0.0:就包括了一切IPv4地址 2.pg ...

  4. Fiddler使用过程中容易忽略的小技巧

    fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...

  5. flowplayer+flashhls使用过程中发现的一些小问题

    flashls里边有好几套代码,主要看生成路径,其中flowplayer用了flashls.swc,flashls.swc使用的代码在这里:/src/org/mangui/hls,所以要注意,当搜索代 ...

  6. 搭建DG(data guard),及搭建过程中遇到的一些小问题

    一.准备工作:主库:虚拟机名称host06 主机名:host06 IP:192.168.100.60 db_name&SID:ENMO  db_unique_name:PROD 存储:文件系统 ...

  7. JS中部分不常用小功能记录

    1.serializeArray()在表单中使用,必须在form标签中,需要手机的元素要有name属性.源生JS将对象转成json   resulrMK = JSON.stringify(resulr ...

  8. 【事件中心 Azure Event Hub】使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnectedException)

    问题描述 使用EFK(Elasticsearch, Fluentd and Kibana)在收集日志的解决方案中, 可以先把日志发送到EventHub中,然后通过Logstash消费EventHub中 ...

  9. [.NET跨平台]Jeuxs独立版本的便利与过程中的一些坑

    本文环境与前言 之前写过一篇相关的文章:在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验 当时的部署还是比较繁琐的,而且需要联网下载各种东西..有兴趣的可以看看, ...

随机推荐

  1. How Do Vision Transformers Work?[2202.06709] - 论文研读系列(2) 个人笔记

    [论文简析]How Do Vision Transformers Work?[2202.06709] 论文题目:How Do Vision Transformers Work? 论文地址:http:/ ...

  2. 017tcpflow的简单用法

    tcpflow tcpflow是服务器上经常使用的一个小程序,它能够捕获tcp的数据流,并将其存储为方便分析和调试的格式.每一条tcp流都会被存储到独立的文件中,因此,典型的tcp流将会被分别存储为进 ...

  3. 一文搞懂 SLAM 中的Extension Kalman Filter 算法编程

    作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ ...

  4. 分布式session的几种解决方案

    现在很多商城,都会要求用户先去登录,登录之后再往购物车中添加商品,这样用户.购物车.商品,三个对象之间就有了绑定关系. 而针对我最开始说的那种情况,其实就是基于session做的,客户端往购物车中添加 ...

  5. Spring Boot 中初始化资源的几种方式

    假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看.今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回 ...

  6. isro

    靶机准备 将下载的压缩文件解压,打开vmx文件即可 将网络模式设置为NAT 扫描获得ip:192.168.164.185 kali:192.168.164.137 netdiscover -r 192 ...

  7. winform 代码生成textbox ,checkbox

    参考地址:https://jingyan.baidu.com/article/380abd0a6b80701d90192cde.html 首先搭建好Winform项目框架后,创建窗体页面后自行布局 这 ...

  8. 实习项目1-串口IP升级调试

    设计目标:设计一个串口IP,要求1:输入时钟频率任意,如0-400M时钟频率:要求2:波特率超过常见的115200,要求达到4M. 设计核心思路:波特率计算公式,divp10x = (10 * fsy ...

  9. Spring Boot 多模块项目创建与配置 (转)

    转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...

  10. react单向数据流怎么理解?

    React是单向数据流,数据主要从父节点传递到子节点(通过props).如果顶层(父级)的某个props改变了,React会重渲染所有的子节点.