标签: fluent-bit

无法在 k8s 环境中使用 Fluentbit 多行解析器

我的项目部署在k8s环境中,我们使用Fluent Bit将日志发送到ES。我需要将 java stacktrace 作为一个文档发送。因此,我使用了流利的位多行解析器,但我无法让它工作。

方法一:

根据大量教程和文档,我按如下方式配置了 Fluent Bit。

[INPUT]
  Name              tail
  Tag               kube.test.*
  Path              /var/log/containers/*.log
  DB                /var/log/test.db
  Mem_Buf_Limit     50MB
  Refresh_Interval  10
  Multiline         On
  Parser_Firstline  multine_parser_first_line

[PARSER]
  Name        multine_parser_first_line
  Format      regex
  Regex       /^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(?<message>.*)/
  Time_Key    time
  Time_Format %Y-%m-%d %H:%M:%S.%L
  Time_Keep On
Run Code Online (Sandbox Code Playgroud)

方法2:

根据Fluentbit with mycat multiline parsing中的回答使用了两个解析器

[INPUT]
  Name              tail
  Tag               kube.test.*
  Path              /var/log/containers/*.log
  DB                /var/log/test.db
  Mem_Buf_Limit     50MB
  Refresh_Interval  10
  Multiline         On
  Parser_Firstline  multine_parser_first_line
  Parser_1          error_log_parser

[PARSER]
  Name        multine_parser_first_line
  Format      regex
  Regex       (\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d{3})
  Time_Key    time
  Time_Format %Y-%m-%d %H:%M:%S.%L …
Run Code Online (Sandbox Code Playgroud)

java elasticsearch spring-boot kubernetes fluent-bit

9
推荐指数
1
解决办法
4435
查看次数

如何从 fluent-bit 日志记录中排除命名空间

有没有办法排除某些命名空间fluent-bit?我想排除某些命名空间,因此fluent-bit不会将在这些命名空间中创建的所有日志转发到 ELK。

除了为该命名空间中的每个 pod 添加注释之外,还有其他方法吗?我知道您可以通过 kubectl 更新命名空间中的所有 pod 注释。

kubectl annotate pods --namespace=pks-system --all fluentbit.io/exclude='true'

kubernetes kubernetes-namespace fluent-bit

8
推荐指数
3
解决办法
7503
查看次数

使用 flutter-bit 与 kubernetes 过滤器和 elasticsearch 输出时丢失日志条目

有时我们会发现ES中缺少一些日志,而在Kubernetes中却可以看到它们。

我只能在日志中找到问题,指出 kubernetes 解析器的问题,在 fluid-bit 日志中包含以下内容: [2020/11/22 09:53:18] [debug] [filter:kubernetes:kubernetes.1] could not merge JSON log as requested

一旦我们将 kubernetes 过滤器的“Merge_Log”选项配置为“Off”,问题似乎就消失了(至少在流利位日志中不再出现“警告/错误”)。但是,我们当然会失去一个重要的功能,例如实际上拥有除“消息”本身之外的字段/值。

除此之外,在 fluid-bit 或 elasticsearch 中没有其他错误/警告消息,这就是我主要怀疑的原因。日志(info中的log_level)填充为:

k --context contexto09 -n logging-system logs -f -l app=fluent-bit --max-log-requests 31 | grep -iv "\[ info\]"
[2020/11/22 19:45:02] [ warn] [engine] failed to flush chunk '1-1606074289.692844263.flb', retry in 25 seconds: task_id=31, input=appstream > output=es.0
[2020/11/22 19:45:02] [ warn] [engine] failed to flush chunk '1-1606074208.938295842.flb', retry in 25 seconds: task_id=67, input=appstream > output=es.0
[2020/11/22 19:45:08] [ …
Run Code Online (Sandbox Code Playgroud)

elasticsearch fluentd kubernetes fluent-bit

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

Android 设备的日志收集

我最近一直在阅读有关 Fluentd 和 Fluent-bit 作为日志统一和收集工具的内容。文档说它支持一些 Linux 发行版,但我找不到任何关于 Android 的参考 - 无论是支持还是不支持。

知道 Fluent-bit 是否可以编译在 Android 上运行吗?或者,是否还有其他工具,例如 Android 版 Fluent-bit?

谢谢

logging monitoring android fluentd fluent-bit

7
推荐指数
0
解决办法
792
查看次数

Fluent-bit - 将 json 日志拆分为 Elasticsearch 中的结构化字段

我试图在 Fluent-bit 配置中找到一种方法来告诉/强制 ES 以结构化的方式存储纯 json 格式的日志(下面日志位来自 docker stdout/stderror) - 请参阅底部的图像以获得更好的解释。例如,除了(或连同)将日志存储为log字段下的纯 json 条目之外,我想单独存储每个属性,如red所示。

过滤器和解析器的文档真的很差而且不清楚。最重要的是,forward输入没有“解析器”选项。我试过json/docker/regex解析器,但没有运气。如果我必须使用正则表达式,我的正则表达式就在这里。目前使用 ES (7.1)、Fluent-bit (1.1.3) 和 Kibana (7.1) - 而不是 Kubernetes。

如果有人可以指导我举一个例子或举一个例子,我将不胜感激。

谢谢

{
  "_index": "hello",
  "_type": "logs",
  "_id": "T631e2sBChSKEuJw-HO4",
  "_version": 1,
  "_score": null,
  "_source": {
    "@timestamp": "2019-06-21T21:34:02.000Z",
    "tag": "php",
    "container_id": "53154cf4d4e8d7ecf31bdb6bc4a25fdf2f37156edc6b859ba0ddfa9c0ab1715b",
    "container_name": "/hello_php_1",
    "source": "stderr",
    "log": "{\"time_local\":\"2019-06-21T21:34:02+0000\",\"client_ip\":\"-\",\"remote_addr\":\"192.168.192.3\",\"remote_user\":\"\",\"request\":\"GET / HTTP/1.1\",\"status\":\"200\",\"body_bytes_sent\":\"0\",\"request_time\":\"0.001\",\"http_referrer\":\"-\",\"http_user_agent\":\"curl/7.38.0\",\"request_id\":\"91835d61520d289952b7e9b8f658e64f\"}"
  },
  "fields": {
    "@timestamp": [
      "2019-06-21T21:34:02.000Z"
    ]
  },
  "sort": [
    1561152842000
  ]
} …
Run Code Online (Sandbox Code Playgroud)

logging elasticsearch fluentd fluent-bit

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

Fluent-bit 可以解析一个文件中的多种类型的日志行吗?

我在 k8s 中有一个相当简单的 Apache 部署,使用 Fluent-bit v1.5 作为日志转发器。我的设置与下面存储库中的设置几乎相同。我正在运行 AWS EKS 并将日志输出到 AWS ElasticSearch Service。

https://github.com/ Fluent/ Fluent-bit-kubernetes-logging

ConfigMap 位于: https: //github.com/ Fluent/ Fluent-bit-kubernetes-logging/blob/master/output/elasticsearch/ Fluent-bit-configmap.yaml

Apache 访问 (-> /dev/stdout) 和错误 (-> /dev/stderr) 日志行均位于节点上的同一容器日志文件中。我遇到的问题是 fluid-bit 似乎无法自动检测要使用哪个解析器,我不确定它是否应该这样做,而且我们只能在部署的注释部分指定一个解析器,我已经指定了 apache 。因此,最终,写入同一文件但来自 stderr 的错误日志行不会被解析。我应该将日志从 Fluent-bit 发送到 Fluentd 来处理错误文件(假设 Fluentd 可以处理这个问题),还是应该以某种方式仅将错误行抽回到 Fluent-Bit 中进行解析?

我错过了什么吗?

谢谢!

fluentd fluent-bit

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

Kubernetes 将时间戳添加到每个 docker 容器日志条目中

我有2个集群

  1. Server Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.11-eks-f17b81", GitCommit:"f17b810c9e5a82200d28b6210b458497ddfcf31b", GitTreeState:"clean", BuildDate:"2021-10-15T21:46:21Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

  2. Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.6-gke.1500", GitCommit:"7ce0f9f1939dfc1aee910732e84cba03840df91e", GitTreeState:"clean", BuildDate:"2021-11-17T09:30:26Z", GoVersion:"go1.16.9b7", Compiler:"gc", Platform:"linux/amd64"}

我用来fluent-bit尾部容器日志文件并将日志推送到elasticsearch

在第一个 k8s 集群中,容器日志的格式为:

{"log":"{\"method\":\"GET\",\"path\":\"/healthz\",\"format\":\"*/*\",\"controller\":\"Api::ApplicationController\",\"action\":\"healthz\",\"status\":204,\"duration\":0.61,\"view\":0.0,\"request_id\":\"4d54cc06-08d2-4487-b2d9-fabfb2286e89\",\"headers\":{\"SCRIPT_NAME\":\"\",\"QUERY_STRING\":\"\",\"SERVER_PROTOCOL\":\"HTTP/1.1\",\"SERVER_SOFTWARE\":\"puma 5.4.0 Super Flight\",\"GATEWAY_INTERFACE\":\"CGI/1.2\",\"REQUEST_METHOD\":\"GET\",\"REQUEST_PATH\":\"/healthz\",\"REQUEST_URI\":\"/healthz\",\"HTTP_VERSION\":\"HTTP/1.1\",\"HTTP_HOST\":\"192.168.95.192:80\",\"HTTP_USER_AGENT\":\"kube-probe/1.20+\",\"HTTP_ACCEPT\":\"*/*\",\"HTTP_CONNECTION\":\"close\",\"SERVER_NAME\":\"192.168.95.192\",\"SERVER_PORT\":\"80\",\"PATH_INFO\":\"/healthz\",\"REMOTE_ADDR\":\"192.168.79.131\",\"ROUTES_19640_SCRIPT_NAME\":\"\",\"ORIGINAL_FULLPATH\":\"/healthz\",\"ORIGINAL_SCRIPT_NAME\":\"\"},\"params\":{\"controller\":\"api/application\",\"action\":\"healthz\"},\"response\":{},\"custom\":{},\"@version\":\"dutycast-b2c-backend-v1.48.0-rc.5\",\"@timestamp\":\"2022-03-04T11:16:14.236Z\",\"message\":\"[204] GET /healthz (Api::ApplicationController#healthz)\"}\n","stream":"stdout","time":"2022-03-04T11:16:14.238067813Z"}
Run Code Online (Sandbox Code Playgroud)

它是 json 格式,我可以使用fluent-bit解析器轻松解析

我对第二个 k8s 集群执行相同的行为,但容器日志的格式是:

2022-03-04T11:19:24.050132912Z stdout F {"method":"GET","path":"/healthz","format":"*/*","controller":"Public::PublicPagesController","action":"healthz","status":204,"duration":0.52,"view":0.0,"request_id":"bcc799bb-5e5c-4758-9169-ecebb04b801f","headers":{"SCRIPT_NAME":"","QUERY_STRING":"","SERVER_PROTOCOL":"HTTP/1.1","SERVER_SOFTWARE":"puma 5.6.2 Birdie's Version","GATEWAY_INTERFACE":"CGI/1.2","REQUEST_METHOD":"GET","REQUEST_PATH":"/healthz","REQUEST_URI":"/healthz","HTTP_VERSION":"HTTP/1.1","HTTP_HOST":"10.24.0.22:3000","HTTP_USER_AGENT":"kube-probe/1.21","HTTP_ACCEPT":"*/*","HTTP_CONNECTION":"close","SERVER_NAME":"10.24.0.22","SERVER_PORT":"3000","PATH_INFO":"/healthz","REMOTE_ADDR":"10.24.0.1","ROUTES_71860_SCRIPT_NAME":"","ORIGINAL_FULLPATH":"/healthz","ORIGINAL_SCRIPT_NAME":"","ROUTES_71820_SCRIPT_NAME":""},"params":{"controller":"public/public_pages","action":"healthz"},"custom":null,"request_time":"2022-03-04T11:19:24.048+00:00","process_id":8,"@version":"vcam-backend-v0.1.0-rc24","response":"#\u003cActionDispatch::Response:0x00007f9d1f600888 @mon_data=#\u003cMonitor:0x00007f9d1f600838\u003e, @mon_data_owner_object_id=144760, @header={\"X-Frame-Options\"=\u003e\"ALLOW-FROM https://vietcapital.com.vn\", \"X-XSS-Protection\"=\u003e\"0\", \"X-Content-Type-Options\"=\u003e\"nosniff\", \"X-Download-Options\"=\u003e\"noopen\", \"X-Permitted-Cross-Domain-Policies\"=\u003e\"none\", \"Referrer-Policy\"=\u003e\"strict-origin-when-cross-origin\"}, @stream=#\u003cActionDispatch::Response::Buffer:0x00007f9d1f6045a0 @response=#\u003cActionDispatch::Response:0x00007f9d1f600888 ...\u003e, @buf=[\"\"], @closed=false, @str_body=nil\u003e, @status=204, @cv=#\u003cMonitorMixin::ConditionVariable:0x00007f9d1f600720 @monitor=#\u003cMonitor:0x00007f9d1f600838\u003e, @cond=#\u003cThread::ConditionVariable:0x00007f9d1f6006f8\u003e\u003e, @committed=false, @sending=false, @sent=false, @cache_control={}, @request=#\u003cActionDispatch::Request GET \"http://10.24.0.22:3000/healthz\" for 10.24.0.1\u003e\u003e","@timestamp":"2022-03-04T11:19:24.049Z","message":"[204] …
Run Code Online (Sandbox Code Playgroud)

elasticsearch kubernetes fluent-bit

7
推荐指数
0
解决办法
631
查看次数

Fluentbit 在 kubernetes 中收集到 Elasticsearch 的 Serilog 日志无法正确解析 Json

在 Kubernetes (Minikube) 上使用 EFK 堆栈。有一个使用 Serilog 的 asp.net 核心应用程序以 Json 的形式写入控制台。日志确实会发送到 Elasticsearch,但它们到达未解析的字符串,进入“日志”字段,这就是问题所在。

这是控制台输出:

{
    "@timestamp": "2019-03-22T22:08:24.6499272+01:00",
    "level": "Fatal",
    "messageTemplate": "Text: {Message}",
    "message": "Text: \"aaaa\"",
    "exception": {
        "Depth": 0,
        "ClassName": "",
        "Message": "Boom!",
        "Source": null,
        "StackTraceString": null,
        "RemoteStackTraceString": "",
        "RemoteStackIndex": -1,
        "HResult": -2146232832,
        "HelpURL": null
    },
    "fields": {
        "Message": "aaaa",
        "SourceContext": "frontend.values.web.Controllers.HomeController",
        "ActionId": "0a0967e8-be30-4658-8663-2a1fd7d9eb53",
        "ActionName": "frontend.values.web.Controllers.HomeController.WriteTrace (frontend.values.web)",
        "RequestId": "0HLLF1A02IS16:00000005",
        "RequestPath": "/Home/WriteTrace",
        "CorrelationId": null,
        "ConnectionId": "0HLLF1A02IS16",
        "ExceptionDetail": {
            "HResult": -2146232832,
            "Message": "Boom!",
            "Source": null,
            "Type": "System.ApplicationException"
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

elasticsearch serilog kubernetes asp.net-core fluent-bit

6
推荐指数
1
解决办法
3002
查看次数

flutter-bit 上 grep 过滤器上的排除模式似乎不起作用

我正在尝试从尾部输入中过滤出一些记录到流畅位。但这似乎不起作用。从日志文件中,我需要从所有具有键值“log”的记录中排除 1) 具有 1 个或多个数字后跟空格的记录 2) 行中任何位置具有值“Series”的记录 3) 具有值“transacttime”的记录' 线路上的任何地方。

它们可以是相同或不同的记录

[INPUT]
    Name         tail
    Path         /mnt/volume_nyc3_03/xenfix*.out
    Tag          genfix
    DB           /mnt/volume_nyc3_03/ggantel-gf.db


[FILTER]
    Name         grep
    Match        *
    Exclude      log ^[0-9]*\
    Exclude      log *Series*
    Exclude      log *transacttime*

[OUTPUT]
    Name         pulsar
    Match        *
    Host         somerandom-id.us-east-1.elb.amazonaws.com
    Port         6650
    Topic        persistent://public/default/genfixlogs

[OUTPUT]
    Name         stdout
    Match        genfix
Run Code Online (Sandbox Code Playgroud)

这不会从输出中排除任何记录,如下所示

{"log":"0 1"}
----- got message -----
{"log":"2019-09-17 21:25:08.636465 Series([], Name: transacttime, dtype: datetime64[ns])"}
----- got message -----
{"log":"2019-09-17 21:25:08.633038 Series([], Name: transacttime, dtype: datetime64[ns])"}
----- got message -----
{"log":"2019-09-17 …
Run Code Online (Sandbox Code Playgroud)

grep filter fluent-bit

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

在 helm 的 values.yaml 中使用 Release.Name

我正在尝试使用 stable/fluent-bit 作为图表中的子图表。该图表在 values.yaml 中有一个值:

backend:
  es:
    host: elasticsearch
Run Code Online (Sandbox Code Playgroud)

如何在不更改流畅位图的情况下将 backend.es.host 的值设置为 {Release.Name}-elasticsearch 之类的值?

fluentd kubernetes-helm fluent-bit

5
推荐指数
1
解决办法
2819
查看次数