EFK之filebeat用法进阶

news2025/1/21 3:00:48

接上一章节:https://blog.csdn.net/weixin_46546303/article/details/140279197?spm=1001.2014.3001.5501

一、filebeat module 输入流

1.filebeat module作用

Filebeat 模块的主要作用是简化日志数据的收集和处理过程。通过使用模块,你可以快速地配置 Filebeat 来收集特定类型的日志,并将其发送到 Elasticsearch 或 Logstash 进行进一步处理和分析。
官方文档:https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-modules.html

2.使用 Filebeat 模块的步骤

在 Filebeat 安装目录中,有一个 modules.d 目录,其中包含各种模块的配置文件。你可以通过以下命令启用和配置模块:

filebeat modules enable <module_name>
#例如启用nginx模块
filebeat modules enable nginx

或者
root@xxx:~#  mv  /etc/filebeat/modules.d/nginx.yml.disabled   /etc/filebeat/module.d/nginx.yml    ##包安装在/etc/filebeat/module.d下

3.模块的使用

1)nginx module 处理nginx access log

nginx 日志拆分方案主要为:
  • 修改原生日志为json格式 (上一章已经讲过如果使用json解析nginx日志)
  • 借助filebat模块处理
  • 引入logstash
流程图及配置

在这里插入图片描述

开启nginx日志处理模块

官方参考文档:https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-module-nginx.html

root@xxx:~#  mv /etc/filebeat/modules.d/nginx.yml.disabled   /etc/filebeat/modules.d/nginx.yml

root@xxx:~# filebeat   modules  list   ##检查已经启用的模块
Enabled:
nginx

root@xxx:~#  vim /etc/filebeat/modules.d/nginx.yml
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-module-nginx.html

- module: nginx
  # Access logs
  access:
    enabled: true    ##启动aceesslog

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths: ["/var/log/nginx/access.log"]   ##指定accesslog路径

  # Error logs
  error:
    enabled: false

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Ingress-nginx controller logs. This is disabled by default. It could be used in Kubernetes environments to parse ingress-nginx logs
  ingress_controller:
    enabled: false

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:
filebeat配置
root@xxx:~#  vim /etc/filebeat/filebeat.nginx.moudule_to.es.yml  ##编辑配置文件
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml   ##指定模块加载路径

  # Set to true to enable config reloading*
  reload.enabled: true   ##(是否支持热加载)

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"]    ##指定es主机
  index: "ubuntu-xx-nginx-access-%{+yyyy.MM.dd}"  ##指定索引

setup.ilm.enabled: false   ##禁用ilm
setup.template.name: "ubuntu-xx-nginx"   ##设置索引模板名称
setup.template.pattern: "ubuntu-xx-nginx*" ##设置索引模模式
setup.template.overwrite: false    ##禁用模板重写
setup.template.settings:   ##索引模板配置项
  index.number_of_shards: 3   ##设置主分片
  index.number_of_replicas: 1  ##设置副本分片
查看kibana输出

在这里插入图片描述
备注:有50个可选字段进行组合输出

2)处理tomcat日志

使用模块处理 访问日志
filebeat配置文件
vim /etc/filebeat/config/tomcat_filebeat_modules.yml
tomcat_filebeat_modules.yml 
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml    ##指定模块加载路径

  # Set to true to enable config reloading*(是否支持热加载,不需要重启会自动重新加载)
  reload.enabled: true

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"] 
  index: "ubuntu-xx-xx-access-tomcat-%{+yyyy.MM.dd}"

setup.ilm.enabled: false ##禁用ilm
setup.template.name: "ubuntu-xx-xx-tomcat"
setup.template.pattern: "ubuntu-xx-xx-tomcat*"
setup.template.overwrite: false
setup.template.settings:   
  index.number_of_shards: 3  ##设置主分片
  index.number_of_replicas: 1  ##设置副本分片
启用tomcat 模块
root@xxx~:# /etc/filebeat/modules.d# vim tomcat.yml 
# Module: tomcat
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-module-tomcat.html  ##参考文档

- module: tomcat
  log:
    enabled: true
    var.paths:
      - "/var/log/tomcat7/*.txt"
    # Set which input to use between udp (default), tcp or file.
    # var.input: udp
    # var.syslog_host: localhost
    # var.syslog_port: 9501

    # Set paths for the log files when file input is used.
    # var.paths:
    #   - /var/log/tomcat/*.log
    # var.paths:
    #   - /var/log/tomcat7/*.txt

    # Toggle output of non-ECS fields (default true).
    # var.rsa_fields: true

    # Set custom timezone offset.
    # "local" (default) for system timezone.
    # "+02:00" for GMT+02:00
    # var.tz_offset: local

避坑点
  • 当运行filebeat时,发现没有采集到日志,也没有报错查询官方文档之后找到解决方案:
    https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-module-tomcat.html
var.input
读取消息的输入, udp 、file、tcp默认udp为udp。

**var.paths
读取文件的路径。需要是一个列表。仅当var.input设置为时才有效file。**

var.syslog_host
监听基于 UDP 或 TCP 的系统日志流量的地址。默认为localhost。设置为0.0.0.0可绑定到所有可用接口。

var.syslog_port
监听系统日志流量的端口。默认为9501
1024 以下的端口需要 Filebeat 以 root 身份运行。

var.tz_offset
默认情况下,日志中的日期时间将被解释为相对于运行 Filebeat 的主机中配置的时区。如果从不同时区的主机提取日志,请使用此字段设置时区偏移量,以便正确解析日期时间。有效值的格式为 ±HH:mm,-07:00例如UTC-7。

var.rsa_fields
用于控制向事件添加非 ECS 字段的标志。默认为 true,这将导致rsa添加 ECS 和自定义字段。

var.keep_raw_fields
用于控制将原始解析器字段添加到事件的标志。此字段位于 下rsa.raw。默认值为 false。
重新修改模块配置
  • 重新修改tomcat.yml
# Module: tomcat
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-module-tomcat.html

- module: tomcat
  log:
    enabled: true
    var.input: file
    var.paths:
      - "/var/log/tomcat7/*.txt"
    # Set which input to use between udp (default), tcp or file.
    # var.input: udp
    # var.syslog_host: localhost
    # var.syslog_port: 9501

    # Set paths for the log files when file input is used.
    # var.paths:
    #   - /var/log/tomcat/*.log
    # var.paths:
    #   - /var/log/tomcat7/*.txt

    # Toggle output of non-ECS fields (default true).
    # var.rsa_fields: true

    # Set custom timezone offset.
    # "local" (default) for system timezone.
    # "+02:00" for GMT+02:00
    # var.tz_offset: local
tomcat module解释
tomcat 模块三种输入方式

在这里插入图片描述

TCP、UDP 需要指定:
  • var.syslog_host
    监听基于 UDP 或 TCP 的系统日志流量的地址。默认为localhost。设置为0.0.0.0可绑定到所有可用接口。

  • var.syslog_port
    监听系统日志流量的端口。默认为9501
    1024 以下的端口需要 Filebeat 以 root 身份运行

  • 基于udp/tcp监听

- module: tomcat
  log:
    enabled: true
    var.input: udp/tcp
    var.syslog_host: localhost
    var.syslog_port: 9501
启动filebeat:
netstat  -nulp |grep 95
udp        0      0 127.0.0.1:9501          0.0.0.0:*                           155499/filebeat
查看kibana输出发现针对tomcat模块,实际并没有太多字段的可选字段

在这里插入图片描述

自定义tomcat access_log json
修改tomcat配置logfromat
  • 修改tomcat配置文件
vim /etc/tomcat7/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="access_log_" suffix=""
               pattern="{&quot;Time&quot;:&quot;%t&quot;,&quot;Status&quot;:&quot;%s&quot;,&quot;Userinfo&quot;:&quot;%u&quot;,&quot;Client_ip&quot;:&quot;%a&quot;,&quot;Request_Proto&quot;:&quot;%H&quot;,&quot;Method&quot;:&quot;%m&quo
t;,&quot;Request_URI&quot;:&quot;%U&quot;,&quot;query&quot;:&quot;%q&quot;,&quot;Respone_time&quot;:&quot;%D&quot;,&quot;Request_thread_name&quot;:&quot;%l&quot;,&quot;User_Agent&quot;:&quot;%{User-Agent}i&quot;,&quot;Referer&quot;:&quo
t;%{Referer}i&quot;}"/>

备注:json格式写法和nginx\apache有区别:{"KEY":"VALUE"},多个用逗号隔开

{"Time":"[24/Jul/2024:20:29:22 +0800]","Status":"200","Userinfo":"-","Client_ip":"10.17.11.225","Request_Proto":"HTTP/1.1","Method":"GET","Request_URI":"/","query":"","Respone_time":"1","Request_thread_name":"-","User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","Referer":"-"}
filebeat配置

filebeat配置和nginx access log 配置类似,此处不在展示

tomcat catalina日志多行查询
多行日志处理,将符合条件的行合并成一行显示

仅适用于filestream输入,而不适用于log输入

parsers:
- multiline:
    type: pattern
    pattern: '^\['
    negate: true
    match: after

如果仍然使用的log输入,则无需使用parsers。

multiline.type: pattern
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
参数解释
  • multiline.type
    定义要使用的聚合方法。默认值为pattern。另一个选项是count允许您聚合固定数量的行。
  • multiline.pattern
    指定要匹配的正则表达式模式。请注意,Filebeat 支持的正则表达式模式与 Logstash 支持的模式略有不同。请参阅正则表达式支持以获取受支持的正则表达式模式列表。根据您配置其他多行选项的方式,与指定正则表达式匹配的行将被视为上一行的延续或新多行事件的开始。您可以设置选项negate以否定模式。
  • multiline.negate
    定义模式是否被否定。默认值为false。
  • multiline.match
    指定 Filebeat 如何将匹配的行组合成事件。设置为after或before。这些设置的行为取决于您为 指定的内容

在这里插入图片描述

总结:
false after  :匹配行放在非匹配行之后
false   before:匹配行放在非匹配行之前
true    after:  不匹配的行,放到匹配的行之后
true    before: 不匹配的行放在匹配行之前
测试案例
  • 测试文件:
vim /tmp/testfile
a
c
d
b
b
a
a
c
b
c
b
  • 示例一:
    false after
    #按行读取,遇到非匹配行就换行,遇到匹配行就继续读取,直到遇见新的非匹配行,将非匹配行作为行首,最后一个匹配行为行位的区别合并成一行输出;匹配行放到非匹配行之后,合并成一行。即从第一行开始读取,如果第二行是非匹配行,第一行则作为单独一行展示;如果第二行及后面行是匹配行,则将第二行和后面匹配行合并成一行展示,直到遇到新的非匹配行出现就换行。最终输出每行的开头都是非匹配行;

cat multi.filebeat.out.yml

filebeat.inputs:
- type: log
  paths: 
    - "/tmp/testfile"
  tags: ["testing"] 
  multiline.type: pattern
  multiline.pattern: '^b'
  multiline.negate: false
  multiline.match: after   ####匹配行放到非匹配行之后

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"]

输出结果:
在这里插入图片描述

  • 示例二:
    false before
    #按行读取,遇到匹配行,就以新匹配作为行首继续向下读取,直到遇到第一个非匹配行就结束,将此区间的行合并成一行;如果连续非匹配行,则非匹配行都作为单独行展示;
    即:从第一行往下读取,如果第二行、及后面的行都是非匹配行,这读取的这些行都识别成单独一行展示,如果遇到匹配的行,则以匹配的行为开始向下匹配,如果后续行都为匹配行就合并成一行,直到遇到新的非匹配行出现,就以该非匹配行为截止,将匹配行-新遇到的非匹配行合并成一行展示,换行继续向下读取;
    cat multi.filebeat.out.yml
filebeat.inputs:
- type: log
  paths: 
    - "/tmp/testfile"
  tags: ["testing"] 
  multiline.type: pattern
  multiline.pattern: '^b'
  multiline.negate: false
  multiline.match: before   ####匹配行放在不匹配行之前

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"]

输出结果:
在这里插入图片描述

  • 示例三:
    true after
    #非匹配行放到匹配行之后,即日志收集每一行开头都是以匹配行为开头,往下处理合并成一行输出,直至遇到新匹配行在另起新行。如果文件首行为非匹配行,则往下读取,内容合并成一行,直到匹配行出现在另起一行;

cat multi.filebeat.out.yml

filebeat.inputs:
- type: log
  paths: 
    - "/tmp/testfile"
  tags: ["testing"] 
  multiline.type: pattern
  multiline.pattern: '^b'
  multiline.negate: true
  multiline.match: after   ####不匹配的行放在匹配行之后

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"]

输出结果:
在这里插入图片描述

  • 示例四:
    true before
    #按行读取,遇到匹配行就将匹配行作为合并行的行尾,和之前的非匹配行合并成一行输出;

cat multi.filebeat.out.yml

filebeat.inputs:
- type: log
  paths: 
    - "/tmp/testfile"
  tags: ["testing"] 
  multiline.type: pattern
  multiline.pattern: '^b'
  multiline.negate: true
  multiline.match: after   ####不匹配的行放在匹配行之前

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"]

输出结果:
在这里插入图片描述

多行输出配置示例:
root@ubuntu-xx:/var/log/tomcat7# cat /etc/filebeat/config/tomcat_filebeat_mutil.yml 
filebeat.inputs:
- type: log
  paths:
    - "/var/log/tomcat7/catalina.out"
  tags: ["applog"]
#  parsers:      ###此格式仅适用于filestream,###
#    - multiline:
#      type: pattern
#      pattern: '^Jan|^Feb|^Mar|^Apr|^May|^Jun|^Jul|^Aug|^Sep|^Oct|^Nov|^Dec'
#      negate: true
#      match: after

  multiline.type: pattern
  multiline.pattern: '(^Jan|^Feb|^Mar|^Apr|^May|^Jun|^Jul|^Aug|^Sep|^Oct|^Nov|^Dec)'
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200:9200"] 
  index: "ubuntu-8-136-tomcat-applog-%{+yyyy.MM.dd}"

setup.ilm.enabled: false
setup.template.name: "ubuntu-xx-tomcat"
setup.template.pattern: "ubuntu-xx-tomcat*"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 1

####https://www.elastic.co/guide/en/beats/filebeat/7.17/multiline-examples.html

二、KQL使用方式:


简单查询:

field:value
根据字段和值进行简单的精确匹配查询。

逻辑操作符:

field1:value1 AND field2:value2
field1:value1 OR field2:value2
NOT field:value
使用逻辑操作符进行AND、OR和NOT的组合查询。

通配符:

field:va*
field:v?lue
使用通配符进行模糊匹配查询,*代表多个字符,?代表一个字符。

范围查询:

field:[value1 TO value2]
根据字段值的范围进行查询。

子查询:

(field1:value1 OR field2:value2) AND field3:value3
使用括号进行子查询,可以构建复杂的查询逻辑。

字段存在性查询:

_exists_:field
查询指定字段存在的文档。

三、filebeat日志过滤:

参考官方文档:https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-input-log.html

1.exclude_lines:

匹配Filebeat 排除的行的正则表达式列表。Filebeat 会删除与列表中的正则表达式匹配的所有行。默认情况下,不会删除任何行。空行将被忽略;如果还指定了多行设置,则每个多行消息将合并为一行,然后用 进行过滤exclude_line

filebeat.inputs:
- type: log
  ...
  exclude_lines: ['^DBG'] ##排除以^DBG开头的行,且区分大小写,支持通配符,特殊字符需要加转义符

2.include_lines:

正则表达式列表,用于匹配您希望 Filebeat 包含的行。Filebeat 仅导出与列表中的正则表达式匹配的行。默认情况下,将导出所有行。空行将被忽略;如果还指定了多行设置,则每个多行消息将合并为一行,然后再按 进行过滤include_lines;

filebeat.inputs:
- type: log
  ...
  include_lines: ['^ERR', '^WARN']

如果同时定义了include_lines和exclude_lines,Filebeat会先执行include_lines,然后执行exclude_lines。这两个选项的定义顺序并不重要。 include_lines 选项将始终在 exclude_lines 选项之前执行,即使在配置文件中exclude_lines 出现在 include_lines 之前。

filebeat.inputs:
- type: log
  ...
  include_lines: ['^ERROR']
  exclude_lines: ["404"]

filebeat input 之filestream(文件流) 【log输入流在7.16之后弃用】

- ndjson:
    target: ""
    add_error_key: true
filebeat.inputs:
- type: filestream
  paths:
    - "/var/log/nginx/access.log"
  tags: ["access"]
  id: nginx-access-0001
  fields:
    log_type: "access"
  parsers:
    - ndjson:
        add_error_key: true
        keys_under_root: true
  

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"] 
  index: "ubuntu-8-136-nginx-access-%{+yyyy.MM.dd}"

setup.ilm.enabled: false
setup.template.name: "ubuntu-xx-xx-nginx"
setup.template.pattern: "ubuntu-xx-xx-nginx*"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 1

3.多行匹配:

parsers:
    - ndjson:
        add_error_key: true
        keys_under_root: true
    - multiline:
        type: pattern
        pattern: '^\['
        negate: true
        match: after  

四、作业:收集服务器日志信息,多日志集合一配置文件

1.作业配置

filebeat.inputs:
- type: filestream
  id: dpkg_log-0001
  paths:
    - "/var/log/dpkg.log"
  tags: ["sys","dpkg"]
  fields:
    log_type: "sys"
    name: "dpkglog"

- type: filestream
  id: command_log-0001
  paths:
    - "/var/log/dpkg.log"
  tags: ["sys","command"]
  fields:
    log_type: "sys"
    name: "commandlog"

- type: filestream
  id:  auth_log-0001
  paths:
    - "/var/log/auth.log"
  tags: ["sys","auth"]
  fields:
    log_type: "sys"
    name: "authlog"

- type: filestream
  id:  kern_log-0001
  paths:
    - "/var/log/kern.log.1"
  tags: ["sys","kern"]
  fields:
    log_type: "sys"
    name: "kernlog"

- type: filestream
  id: kibana_log-0001
  paths:
    - "/var/log/kibana/kibana.log"
  tags: ["app","kibana"]
  fields:
    log_type: "app"
    name: "kibanalog"
  parsers: 
    - ndjson:
        keys_under_root: true
        add_error_key: true
        message_key: message


- type: filestream
  id:  samba_log-0001
  paths:
    - "/var/log/samba/log.nmbd"
  tags: ["app","samba"]
  fields:
    log_type: "app"
    name: "sambalog"
  parsers:
    - multiline:    
        type: pattern    ##这里我想使用counter类型,但是似乎有问题,如果配置type为counter,运行会提示没有这个类型,当我修改成count可用,但是提示count不能为空,查询之后得知counter似乎并不支持filebeat 7.17.3
        pattern:  '^\['
        negate:  true
        match:  after

- type: filestream
  id: sys_log-0001
  paths:
    - "/var/log/syslog"
  tags: ["sys","sys"]
  fields:
    log_type: "sys"
    name: "syslog"

- type: filestream
  id:  tomcat_access_log-0001
  paths:
    - "/var/log/tomcat7/access_log.*"
  tags: ["app","tomcat"]
  fields:
    log_type: "app"
    name: "tomcat_accesslog"
  parsers:
    - ndjson:
        keys_under_root: true
        add_error_key: true

- type: filestream
  id:  tomcat_catalina_log-0001
  paths:
    - "/var/log/tomcat7/catalina.out"
  tags: ["app","tomcat"]
  fields:
    log_type: "app"
    name: "tomcat_log"
  parsers:
    - multiline:
        type: pattern
        pattern: '^Jan|^Feb|^Mar|^Apr|^May|^Jun|^Jul|^Aug|^Sep|^Oct|^Nov|^Dec'
        negate: true
        match: after

output.elasticsearch:
  hosts: ["http://xx.xx.xx.xx:9200","http://xx.xx.xx.xx:9200","http://xx.xx.xx.xx:9200"] 
  index: "ubuntu-8-136-%{[fields.name]}-%{+yyyy.MM.dd}"

setup.ilm.enabled: false
setup.template.name: "ubuntu-xx.xx"
setup.template.pattern: "ubuntu-xx.xx*"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 1

2.作业解析

1)问题分析

现象

centos现象:一个配置文件收集实例超过4个,写入es是可能会出现部分数据无法写入的问题

2)解决方案:

拆成多个filebeat实例

运行多个实例,需要指定数据路径,即

filebeat -e -c xxxxx .yml  --path.data=/xxxxx

当运行实例时,会在数据路径检查是否存在filebeat.lock,如果存在会报冲突

日志聚合
  • 流程图
    在这里插入图片描述

  • 使用rsyslog将日志聚合输入到一个文件
    centos:
    vim /etc/rsyslog.conf

    ###TCP 系统日志
    $ModLoad imtcp
    $InputTCPServerRun 514

    ###日志聚合
    # *.* @xx.xx.xx.xx:514 放在远程服务器
    *.* /var/log/merge_system.log

重启服务测试

systemctl restart syslog

logger "111111"

五、filebeat其他output:

1、file

数据流走向

在这里插入图片描述

配置信息

将文件输出将转储到一个文件中,其中每个输出均采用 JSON 格式。目前,此输出用于测试,但它可以用作 Logstash 的输入。

filebeat.inputs:
- type: tcp
  max_message_size: 10MiB
  host: "localhost:9000"
  max_connections: 50

output.file:
  path: "/tmp/filebeat"     ##指定输出目标目录,必须
  filename: filebeat        ##指定存储文件名
  rotate_every_kb: 10000    ##每个文件的最大大小(以千字节为单位)。达到此大小时,文件将被轮换。默认值为 10240 KB
  number_of_files: 7    ##path目录下可保存的最大文件数。达到此文件数时,将删除最旧的文件,其余文件将从最后移到最前面。文件数必须介于 2 到 1024 之间。默认值为 7
  permissions: 0600    ##用于文件创建的权限。默认值为 0600

2、redis

数据流走向

在这里插入图片描述

配置信息

filebeat.inputs:
- type: filestream
  id: redis-test-01
  paths:
    - "/tmp/filebeat/filebeat"
  parsers:
    ndjson:
      keys_under_root: true
      add_error_key: true


output.redis:
  hosts: ["localhost"]   ##指定redis主机
  password: "your_paaswd"   ##指定redis passwd
  key: "filebeat"     ##指定key的值
  db: 0      ##指定链接数据库编号
  timeout: 5   ##指定超时时间

3.tcp log

数据流走向

在这里插入图片描述

也可用nc xxx  9000

tcp日志详解

参数参考文档详见:https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-input-tcp.html

什么是tcp日志

TCP日志(TCP log)是指记录与TCP(传输控制协议)相关的网络活动的日志。这些日志通常用于监控、调试和分析网络通信。TCP日志可以包含以下信息:

  • 连接建立和终止:记录TCP连接的建立(如三次握手)和终止(如四次挥手)的时间和状态。
  • 数据传输:记录通过TCP连接传输的数据包,包括发送和接收的数据字节数。
  • 错误和警告:记录在TCP连接中发生的错误、超时、重传等异常情况。
  • 连接状态:记录TCP连接的状态变化,如从SYN_SENT到ESTABLISHED再到CLOSED。
常见的TCP日志记录工具和方法
  • 系统日志(syslog, rsyslog, syslog-ng):许多操作系统的系统日志服务可以配置为记录TCP连接信息。
  • 网络分析工具(如tcpdump, Wireshark):这些工具可以捕获并分析网络流量,包括TCP流量,并生成详细的日志或报告。
  • Web服务器日志(如Apache, Nginx):这些服务器通常记录与TCP连接相关的访问日志。
  • 防火墙和路由器日志:网络设备通常记录与流量过滤和路由相关的TCP连接信息。

案例分析

  • 创建新的所引如果和已经存在的所以模板
filebeat.inputs:
- type: tcp    ##指定输入类型为tcp 
  max_message_size: 10MiB    ##通过 TCP 接收的消息的最大值。默认值为20MiB
  host: "0.0.0.0:9000"        ##用于侦听事件流的主机和 TCP 端口

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"] 
  index: "ubuntu-8-tcplog-%{+yyyy.MM.dd}"

setup.ilm.enabled: false
setup.template.name: "ubuntu-8"
setup.template.pattern: "ubuntu-8*"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 3
  • 启动filebeat示例

测试:

telnet  xxxx 9000
aaaa
  • 终端提示:
2024-07-27T22:37:10.843+0800    ERROR   [publisher_pipeline_output]     pipeline/output.go:154  Failed to connect to backoff(elasticsearch(http://xx.xx.xx.xx:9200)): Connection marked as failed because the onConnect callback failed: error loading template: failed to load template: couldn't load template: 400 Bad Request: {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"index template [ubuntu-8] has index patterns [ubuntu-8*] matching patterns from existing templates [ubuntu-8-136] with patterns (ubuntu-8-136 => [ubuntu-8-136*]) that have the same priority [150], multiple index templates may not match during index creation, please use a different priority"}],"type":"illegal_argument_exception","reason":"index template [ubuntu-8] has index patterns [ubuntu-8*] matching patterns from existing templates [ubuntu-8-136] with patterns (ubuntu-8-136 => [ubuntu-8-136*]) that have the same priority [150], multiple index templates may not match during index creation, please use a different priority"},"status":400}. Response body: {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"index template [ubuntu-8] has index patterns [ubuntu-8*] matching patterns from existing templates [ubuntu-8-136] with patterns (ubuntu-8-136 => [ubuntu-8-136*]) that have the same priority [150], multiple index templates may not match during index creation, please use a different priority"}],"type":"illegal_argument_exception","reason":"index template [ubuntu-8] has index patterns [ubuntu-8*] matching patterns from existing templates [ubuntu-8-136] with patterns (ubuntu-8-136 => [ubuntu-8-136*]) that have the same priority [150], multiple index templates may not match during index creation, please use a different priority"},"status":400}

提示不能加载模板,和已经存在的模板ubuntu-8-136冲突
在这里插入图片描述

  • 尝试修改索引模板将范围缩小
filebeat.inputs:
- type: tcp
  host: "0.0.0.0:9000"

output.elasticsearch:
  hosts: ["http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200","http://10.xx.xx.xx:9200"] 
  index: "ubuntu-8-tcplog-%{+yyyy.MM.dd}"

setup.ilm.enabled: false
setup.template.name: "ubuntu-8-136-tcplog"
setup.template.pattern: "ubuntu-8-136-tcplog*"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 3
  • 分析
    重新测试还是得到和已经存在的索引模板冲突

  • 得出结论:
    新建实例中的索引模板名称可以使用和已经存在的所以模板相同的名字,但是不能使用比已经存在索引模板名称范围更大或者更小的作为新模板的名字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java计算机毕设课设—网上招聘系统(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; java计算机毕设课设—网上招聘系统&#xff08;附源码、文章、相关截图、部署视频&#xff09; 网上招聘系统的设计与实现旨在提供一个便捷、高效的在线平台&#xff0c;使个人求职者和公司能够有效地进行职位申请和人才招聘。该系统特别设计了两种…

Golang | Leetcode Golang题解之第318题最大单词长度乘积

题目&#xff1a; 题解&#xff1a; func maxProduct(words []string) (ans int) {masks : map[int]int{}for _, word : range words {mask : 0for _, ch : range word {mask | 1 << (ch - a)}if len(word) > masks[mask] {masks[mask] len(word)}}for x, lenX : ra…

狮子鱼 CMS ApiController.class.php SQL 注入漏洞

本章提供的所有内容仅供学习、交流和分享用途&#xff0c;只供参考。本站资源禁止并谢绝未经本站许可的使用&#xff0c;如若欲转载&#xff0c;请署名以及注明出处&#xff0c;请务必以文字链接的形式标明或保留文章原始出处和作者的信息。本站(原创)文章、资源、图片等所有内…

嵌入式全栈开发学习笔记---数据结构(顺序表)

目录 顺序结构 顺序表初始化 顺序表插入 顺序表遍历操作 顺序表前驱和后继 顺序表查找操作 顺序表删除操作 顺序表清空销毁 顺序表销毁操作 完整代码 List.c List.h Main.c 顺序表优缺点&#xff08;面试可能会考&#xff09; 上一节我们介绍了数据结构的一般概念…

【ModelSim】仿真问题记录

1、波形出不全&#xff1a; 1、甚至连clk波形都出不来 2、个别波形只有到仿真结束的时候才出现 解决办法&#xff1a; 1、添加波形需要是实例中的net 2、排查是否存在声明与示例的位宽不一致的信号 3、观察是否存在未初始化的变量寄存器 4、缩短整个仿真的步长 2、Instance列…

【HBZ分享】spring启动时自动装配的位置

自动装配流程 springboot启动时&#xff0c;自动装配逻辑在SpringBootApplication这个符合注解中的EnableAutoConfiguration新版springboot3会扫描META-INF的spring文件夹下的org.springframework.boot,autoconfigure,AutoConfiguration.imports文件&#xff0c;会把这里所有写…

FSMC--灵活的静态存储控制器

&#xff08;1&#xff09;在STM32F1系列&#xff08;及F407&#xff09;的芯片上封装了FSMC外设&#xff0c;支持拓展SARM作为RAM。 &#xff08;2&#xff09;SRAM和SDRAM的区别&#xff1a; 存储结构&#xff1a;SRAM使用锁存器、SDRAM使用电容通讯方式&#xff1a;SRAM多…

Leaf分布式ID

文章目录 系统对Id号的要求UUIDsnowflakeLeafLeaf-snowflakeLeaf-segmentMySQL自增主键segment双buffer 系统对Id号的要求 1、业务 1&#xff09;全局唯一性&#xff1a;不能出现重复的ID号&#xff0c;既然是唯一标识&#xff0c;这是最基本的要求 2&#xff09;趋势递增&a…

使用LLM(Large Language Model)进行主题建模

随着互联网技术的快速发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域取得了显著的进步。其中&#xff0c;大型语言模型&#xff08;LLM&#xff09;在文本生成任务中表现尤为抢眼。本文旨在探讨LLM在主题建模方面的优势&#xff0c;以及如何将其应用于文本生成任…

深度图进行运算检测物体表面粗糙度

文章目录 应用场景算法原理核心代码应用场景 不同程度凹凸的零件表面粗糙度对零件的磨损产生影响,很大程度上关系到产品性能和使用寿命。不同于单独使用的产品,零件需要在装配中与其他零件相连,密封性和磨损量是厂商需要考虑的一大加工要素;其次,产品外观和触感也会影响到…

数据结构链表2(常考习题1)(C语言)

移除链表元素&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 解题思路&#xff1a; 情况1&#xff1a; 情…

【vluhub】skywalking

SkyWalking是一个开源监控平台&#xff0c;用于从服务和云原生基础设施收集、分析、聚合和可视化数据 低版本存在sql注入漏洞 访问地址 http://192.168.203.12:8080/graphql burpsuite抓数据包 替换 {"query":"query queryLogs($condition: LogQueryConditi…

安装STM32开发工具:STM32CubeMX、STM32CubeIDE、STM32CubeCLT

ST官网地址&#xff1a;https://www.st.com/content/st_com/en.html ST官网因为链接原因下载会比较慢&#xff0c;推荐使用STMCU中文官网&#xff0c;下载很通畅&#xff1a;STMCU中文官网 安装Java 在安装STM32开发软件STM32CubeMX和STM32CubeIDE、STM32CubeCTL之前&#x…

浏览器事件循环详解

1. 浏览器的进程模型 1.1. 何为进程&#xff1f; 程序运行需要有它自己的专属内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 1.2. 何为线程&#xff1f…

【Linux】进程间通信(3):共享内存

目录 一、共享内存概述 二、共享内存相关函数 1、shmget函数 2、ftok函数 3、shmctl函数 4、 shmat函数 5、 shdt函数 三、使用共享内存相关函数管理共享内存的一般过程 1. 生成唯一的键值 2. 创建或获取共享内存段 3. 连接到共享内存段 4. 操作共享内存 5. 断开…

2024 NVIDIA开发者社区夏令营环境配置指南(Win Mac)

2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac) 1 创建Python环境 首先需要安装Miniconda&#xff1a; 大家可以根据自己的网络情况从下面的地址下载&#xff1a; miniconda官网地址&#xff1a;https://docs.conda.io/en/latest/miniconda.html 清华大学镜像地…

对提高数据和指令缓存命中率方法的验证

对于如何写出让CPU跑得更快的代码这一问题&#xff0c;我看到了两种方法&#xff0c;分别是&#xff1a;1、提高数据缓存命中率&#xff1b;2、提高指令缓存命中率。 本文对这两种方法进行了简单的验证&#xff0c;并提供了示例代码。 本文基于2.3 如何写出让 CPU 跑得更快的代…

大规模深度学习推理引擎是什么?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 首先&#xff0c;我们来理解 “深度学习”&#xff1a;它是人工智能的一个重要分支&#xff0c;模仿人脑的神经网络结构&#xff0c;运用多层神经网络来学习和解析数据。这些神经网络能够从庞大的数据集…

二、版本更新与插件安装

版本更新 点击版本管理 点击刷新列表后点击一键更新&#xff0c;即可完成更新&#xff08;注意完成更新必须要关闭正在运行的服务&#xff09; 更新拓展&#xff08;更新插件&#xff09; 点击拓展-刷新列表-一键更新 即可 注意&#xff1a;操作完成以后必须重新启动方可生效…

(六)activiti-modeler 设计器属性编辑弹窗bug修复

BUG重现 在使用流程设计器时&#xff0c;经常碰到弹窗不小心关闭&#xff0c;比如不小心点击了灰色背景上&#xff0c;此时BUG就出现了。弹窗被关闭了&#xff0c;分配用户属性被置空了&#xff0c;以前有数据也被清空了&#xff0c;还无法再次点击弹窗编辑。 不仅仅是分配用…