标签: filebeat

Elasticsearch:字段[hostname]上没有声明类型[keyword]的处理程序

从filebeat索引日志时,我在Elasticsearch上面得到了Mapper解析错误.

我尝试了Filebeat - > Elasticserach和Filebeat - > Logstash - > Elasticsearch方法.

我按照他们自己的文档,按照指示安装了filebeat模板,并通过在Elasticsearch中加载索引模板进行验证.Filebeat参考

我的弹性搜索通常与我的其他数据索引工作正常,我在Kibana上测试它们.它是一个官方码头Docker Hub | Elasticsearch安装.

谷歌搜索了很多运气,所以,任何帮助表示赞赏.

更新1:

ES版本:2.3.3(我相信最新版本)

模板文件是filebeat附带的默认文件.

{
  "mappings": {
    "_default_": {
      "_all": {
        "norms": false
      },
      "dynamic_templates": [
        {
          "fields": {
            "mapping": {
              "ignore_above": 1024,
              "type": "keyword"
            },
            "match_mapping_type": "string",
            "path_match": "fields.*"
          }
        }
      ],
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "beat": {
          "properties": {
            "hostname": {
              "ignore_above": 1024,
              "type": "keyword"
            },
            "name": {
              "ignore_above": 1024,
              "type": "keyword"
            }
          } …
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash elastic-stack filebeat

13
推荐指数
1
解决办法
2万
查看次数

使用正则表达式检查字符串是否以数字开头

如果一行以03:32:33(时间戳)之类的数字开头,我在匹配时编写文件配置.我目前正在做 -

\d
Run Code Online (Sandbox Code Playgroud)

但它没有得到认可,还有什么我应该做的.我不是特别好/有正则表达式的经验.帮助将不胜感激.

regex logstash filebeat

11
推荐指数
3
解决办法
4万
查看次数

ELK堆栈中REDIS的重点是什么?

我目前使用filebeat作为日志托运者的架构,它将日志发送到日志存储索引器实例,然后发送到AWS中的托管弹性搜索.由于持久的TCP连接,我无法使用AWS ELB多个日志存储索引器实例进行负载平衡,因为filebeats总是选择实例并将其发送到那里.所以我决定使用redis.现在看看在ELK堆栈中扩展redis并使其高度可用的组件是多么困难,我想问一下redis的重点是什么.我读了一百万次它作为一个缓冲区,但如果logbeash停止发送日志到logstash如果logstash无法处理负载,为什么我们甚至需要一个缓冲区.Filebeat非常聪明,可以知道停止发送日志.如果弹性搜索发生故障,Logstash足够聪明,可以停止向弹性搜索发送日志.所以管道停止了.我真的不明白redis在每个标准ELK架构中充当缓冲区.

redis elastic-stack filebeat

8
推荐指数
1
解决办法
7039
查看次数

Filebeat vs Rsyslog用于转发日志

我目前正在使用filebeat将日志转发到logstash,然后转发到elasticsearch.

现在,我正在考虑通过rsyslog将日志转发到logstash.这样做的好处是,我不需要在每台服务器上安装和配置filebeat,而且我也可以转发JSON格式的日志,这种格式易于解析和过滤.

我可以使用TCP/UDP通过rsyslog将日志转发到logstash.

我想知道rsyslog优于filebeat的优点和缺点,包括性能,可靠性和易用性.

rsyslog elasticsearch logstash filebeat

8
推荐指数
1
解决办法
4836
查看次数

logstash:如何包含输入文件行号

我正在尝试创建一种导航我的日志文件的方法,我需要的主要功能是:

  1. 在日志文件中搜索字符串(并返回出现的行).
  2. 从一行x到另一行的分页y.

现在我正在检查Logstash,它看起来很适合我的第一个功能(搜索),但不是第二个功能.我的想法是,我可以以某种方式索引文件行号以及每条记录的日志信息,但我似乎无法找到方法.

是否有某种Logstash过滤器来执行此操作?还是Filebeat处理器?我不能让它发挥作用.

我想也许我可以为我的所有进程创建一种方法来登录带有处理信息的数据库,但这也是不可能的(或非常困难),因为Log Handler也不知道当前的日志行是什么.

最后,我能做的是,为服务分页我的日志文件(通过服务)的方法是实际打开它,导航到一个特定的行并在一个不是最优的服务中显示它作为文件可能非常大,我已经将它索引到Elasticsearch(使用Logstash).

我目前的配置非常简单:

Filebeat

filebeat.prospectors:
- type: log
  paths:
    - /path/of/logs/*.log
output.logstash:
  hosts: ["localhost:5044"]
Run Code Online (Sandbox Code Playgroud)

Logstash

input {
    beats {
        port => "5044"
    }
}
output {
  elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}
Run Code Online (Sandbox Code Playgroud)

现在例如我得到的项目如下:

    {
      "beat": {
        "hostname": "my.local",
        "name": "my.local",
        "version": "6.2.2"
      },
      "@timestamp": "2018-02-26T04:25:16.832Z",
      "host": "my.local",
      "tags": [
        "beats_input_codec_plain_applied",
      ],
      "prospector": {
        "type": "log"
      },
      "@version": "1",
      "message": "2018-02-25 22:37:55 [mylibrary] INFO: this is an example …
Run Code Online (Sandbox Code Playgroud)

logging elasticsearch logstash filebeat

8
推荐指数
1
解决办法
1172
查看次数

Filebeat:数据路径已被另一个节拍锁定。请确保多个节拍不共享相同的数据路径

查看其中一个 filebeat pod 中的日志,我可以看到以下内容:

2021-01-04T10:10:52.754Z        DEBUG   [add_cloud_metadata]    add_cloud_metadata/providers.go:129     add_cloud_metadata: fetchMetadata ran for 2.351101ms
2021-01-04T10:10:52.754Z        INFO    [add_cloud_metadata]    add_cloud_metadata/add_cloud_metadata.go:93     add_cloud_metadata: hosting provider type detected as openstack, metadata={"ava
ilability_zone":"us-east-1c","instance":{"id":"i-08f536567bd9945df","name":"ip-10-101-2-178.ec2.internal"},"machine":{"type":"m5.2xlarge"},"provider":"openstack"}
2021-01-04T10:10:52.755Z        DEBUG   [processors]    processors/processor.go:120     Generated new processors: add_cloud_metadata={"availability_zone":"us-east-1c","instance":{"id":"i-08f5
36567bd9945df","name":"ip-10-101-2-178.ec2.internal"},"machine":{"type":"m5.2xlarge"},"provider":"openstack"}, add_docker_metadata=[match_fields=[] match_pids=[process.pid, process.ppid]]    
2021-01-04T10:10:52.755Z        INFO    instance/beat.go:392    filebeat stopped.
2021-01-04T10:10:52.755Z        ERROR   instance/beat.go:956    Exiting: data path already locked by another beat. Please make sure that multiple beats are not sharing the same data path (pat
h.data).
Exiting: data path already locked by another beat. Please make sure …
Run Code Online (Sandbox Code Playgroud)

elasticsearch filebeat

8
推荐指数
1
解决办法
2万
查看次数

Filebeat - 解析消息行中的字段

我正在使用Filebeat将我的本地txt文件中的日志数据发送到Elasticsearch,我想从该message行添加一些字段到事件 - 如时间戳和日志级别.例如,这是我的一个日志行:

2016-09-22 13:51:02,877 INFO 'start myservice service'

我的问题是:我可以通过Filebeat - > Elasticsearch做到这一点,还是我必须通过Logstash?

elasticsearch filebeat

7
推荐指数
1
解决办法
6055
查看次数

使用持久队列的Logstash

我使用以下配置启动了logstash:

logstash.yml里面:

queue.type: persisted
queue.max_bytes: 8gb
queue.checkpoint.writes: 1
Run Code Online (Sandbox Code Playgroud)

配置文件:

input {
    beats {
        port => "5043"
    }
}
filter {
    grok {
        match => {
            "message" => "%{COMBINEDAPACHELOG}"
        }
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "test"
        document_type => "tw"
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这样的情况.

  1. 想象一下,弹性搜索被关闭了

  2. 现在想象一下,当关闭elasticsearch时,logstash会收到日志记录事件

  3. 现在想象我们也关闭了logstash

现在,如果我打开logstash和elasticsearch,logstash不会发送在步骤2中收到的消息 - 即弹性搜索关闭并且logstash正在接收事件.

elasticsearch logstash logstash-configuration filebeat

7
推荐指数
1
解决办法
2650
查看次数

Filebeat:由未知机构签署的证书

我从 filebeat 收到此错误:

无法连接到 backoff(elasticsearch( https://elk.example.com:9200 )): 获取https://elk.example.com:9200 : x509: 由未知机构签名的证书

INFO pipeline/output.go:93 尝试重新连接到 backoff(elasticsearch( https://elk.example.com:9200 )) 并进行 1468 次重新连接尝试

INFO [publish] pipeline/retry.go:189 重试器:向消费者发送取消等待信号

信息 [发布] pipeline/retry.go:191 已完成

INFO [publish] pipeline/retry.go:166 重试器:向消费者发送等待信号

信息 [发布] pipeline/retry.go:168 已完成

然而,elasticsearch 通过 LetsEncrypt 拥有有效的 SSL。(这不是自签名证书)。

Filebeat kubernetes 配置:

output.elasticsearch:
  hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
  username: ${ELASTICSEARCH_USERNAME}
  password: ${ELASTICSEARCH_PASSWORD}
Run Code Online (Sandbox Code Playgroud)

我尝试在配置文件中添加这些参数并且它有效。但是,为什么即使证书有效,我也需要绕过验证。

ssl.verification_mode: "none"
Run Code Online (Sandbox Code Playgroud)

ssl elasticsearch kubernetes filebeat

7
推荐指数
1
解决办法
1万
查看次数

Windows docker:权限被拒绝 /var/run/docker.sock

当我尝试使用自动发现运行 filebeat 时,出现以下错误:

退出:自动发现提供程序设置中的错误:尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1。 22/containers/json?limit=0 : 拨打 unix /var/run/docker.sock: 连接: 权限被拒绝

我从 docker 设置在 tcp://localhost:2375 上公开了守护进程。

我检查了我的用户是否是“docker-users”组的成员。

docker-compose.yml:

filebeat:
    image: store/elastic/filebeat:7.3.0
    volumes:
      - ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
      - /var/lib/docker/containers/:/var/lib/docker/containers/:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
Run Code Online (Sandbox Code Playgroud)

windows docker filebeat

7
推荐指数
1
解决办法
1857
查看次数