标签: fluentd

流畅的通配符out_file,文件路径中带有标记

我刚刚开始流利,但我希望能够设置单个输出匹配规则,如下所示:

<match myapp.**>
   type file
   path logs/
   time_slice_format %Y%m%dT%H
   time_slice_wait 5m
   time_format %Y%m%dT%H%M%S%z
</match>
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想找到一种方法来进一步将标签的名称添加到输出文件名中; 这可能吗?例如,如果我登录,myapp.debug我希望它写入logs/myapp.debug20140918T12_0.log,如果我登录myapp.info它将写入logs/myapp.info20140918T12_0.log

有没有办法将标签添加到文件名中?

fluentd

4
推荐指数
1
解决办法
2717
查看次数

Fluentd给出错误:启动服务器时,日志文件不可写

这是我的td-agent.conf文件

<source>
 @type http  
 port 8888
</source>

<match whatever.access>
 @type file
 path /var/log/what.txt
</match>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用启动服务器时

sudo /etc/init.d/td-agent start
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

'2016-02-01 10:45:49 +0530 [错误]:fluent / supervisor.rb:359:> main_process中的救援:配置错误文件=“ / etc / td-agent / td-agent.conf” error = “ out_file:> /var/log/what.txt.20160201_0.log不可写”

有人可以解释什么地方吗?

fluentd

4
推荐指数
1
解决办法
2954
查看次数

解析流利的日志

我在docker容器中运行了本地服务器,该容器设置为使用fluentd作为日志驱动程序。我有docker compose文件,该文件在自己的容器中运行fluentd,nginx,elasticsearch和kibana。因此,fluentd从我的服务器中获取日志,并将其传递给elasticsearch并显示在Kibana上。

我的问题是,如何解析流利的日志(elasticsearch或kibana,如果不能流利的话)以创建新标签,以便我可以对它们进行排序并简化导航。

这是在Kibana中显示的当前日志。现在,我希望将此日志字符串“分解”为新标签。在这种情况下:

2017/01/04 13:26:56.574909 UTC (Example deployment.web) [INFO] [GET] /api/device/ 200 10.562379ms
Run Code Online (Sandbox Code Playgroud)

date: 2017/01/04
time: 13:26:56.574909 UTC
message: (Example deployment.web)
logType: [INFO]
other: [GET] /api/device/ 200 10.562379ms
Run Code Online (Sandbox Code Playgroud)

我的docker-compose.yml

version: "2"

services:

  fluentd:
    image: fluent/fluentd:latest
    ports:
      - "24224:24224"
    volumes:
      - ./fluentd/etc:/fluentd/etc
    command: /fluentd/etc/start.sh
    networks:
      - lognet

  elasticsearch:
    image: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - /usr/share/elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - lognet

  kibana:
    image: kibana
    restart: always
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_URL=http://localhost:9200
    networks:
      - lognet

  nginx:
    image: nginx
    ports: …
Run Code Online (Sandbox Code Playgroud)

logging elasticsearch fluentd docker kibana

4
推荐指数
1
解决办法
2927
查看次数

是否可以使用 fludd 监控整个目录?

我想将日志转发设置为部署过程的一部分。机器的活动会有所不同,但它们都会记录到特定的位置(特别是/var/log)。

是否可以配置fluentd使其监视整个目录?(包括拾取处于活动状态时弹出的文件的能力)

我知道in_tail可以对给定的指定文件执行此操作,但文档没有提及整个目录。


2014 年这个问题有一个理想的精确副本,它指向tail_ex插件。不幸的是它的描述提到

已弃用:自 0.10.45 起,Fluentd 就具有此插件的功能。所以,该插件不再维护

我仍然找不到提到的功能。

fluentd

4
推荐指数
1
解决办法
4989
查看次数

如何为RBAC配置fluentd守护进程

问题

如果启用RBAC ,Kluentnetes Logging with Fluentd中的流畅守护进程清单将导致授权错误.

$ kubectl logs fluentd-4nzv7 -n kube-system
2018-01-06 11:28:10 +0000 [info]: reading config file path="/fluentd/etc/fluent.conf"
2018-01-06 11:28:10 +0000 [info]: starting fluentd-0.12.33
2018-01-06 11:28:10 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '1.10.0'
2018-01-06 11:28:10 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '0.29.0'
2018-01-06 11:28:10 +0000 [info]: gem 'fluent-plugin-record-reformer' version '0.9.1'
2018-01-06 11:28:10 +0000 [info]: gem 'fluent-plugin-secure-forward' version '0.4.5'
2018-01-06 11:28:10 +0000 [info]: gem 'fluentd' version '0.12.33'
2018-01-06 11:28:10 +0000 [info]: adding match pattern="fluent.**" type="null"
2018-01-06 11:28:10 …
Run Code Online (Sandbox Code Playgroud)

logging fluentd kubernetes

4
推荐指数
1
解决办法
1854
查看次数

在 GKE 上启用 Stackdriver 结构化日志记录

我在 GKE 上的 k8s 集群fluentd默认有一个pod 设置(当前命名为fluentd-gcp-v3.1.0-....),但所有日志都以非结构化的形式出现在单个textPayload字段中。让我的 nginx(和所有其他)日志以某种jsonPayload格式出现会更好。

结构化记录的文档有很多信息,如果你将要自己手动安装代理,但似乎没有要上哪里GKE得到启用日志结构化信息的任何fluend默认安装在幕后。

脱壳到其中的一个fluentd容器我看到下面的文件,这些文件不是默认CONFIGS(nginx/ syslog/ apache)上面列出的结构化测井文档。

/etc/google-fluentd/config.d

containers.input.conf
monitoring.conf
output.conf
system.input.conf
Run Code Online (Sandbox Code Playgroud)

所以基本上,我在 GKE/Stackdriver 上有非结构化的 nginx 日志。如何将它们转换为结构化?

fluentd google-kubernetes-engine google-cloud-stackdriver

4
推荐指数
1
解决办法
1301
查看次数

未能熟练掌握clojure

要记录流利的java API,我们首先需要创建一个hashmap,然后将其转换为map,然后将地图传递给日志函数,如:

Map<String, String> data = new HashMap<String, String>();
        data.put("from", "userA");
        data.put("to", "userB");
        LOG.log("follow", data);
Run Code Online (Sandbox Code Playgroud)

在clojure中,我创建了一个hashmap并将其传递给log函数(但是我无法将hashmap转换为map,也许clojure会自动为我执行此操作),但它失败如下.

流利的日志是

2015-05-02 20:52:18 +0800 [warn]: unexpected error error="Could not parse data entirely (0 != 49)"
  2015-05-02 20:52:18 +0800 [warn]: suppressed same stacktrace
Run Code Online (Sandbox Code Playgroud)

clojure错误是

   clojurewerkz.testcom.core=> (def log (org.fluentd.logger.FluentLogger/getLogger "app" "s1" 8888))
    #'clojurewerkz.testcom.core/log
    clojurewerkz.testcom.core=> (def x (java.util.HashMap. {"a" "testa"}))
    #'clojurewerkz.testcom.core/x
    clojurewerkz.testcom.core=> (.log log "test" x)
    true
    clojurewerkz.testcom.core=> (.log log "test" x)
    416694 [nREPL-worker-3] ERROR org.fluentd.logger.sender.RawSocketSender  - org.fluentd.logger.sender.RawSocketSender
    java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
        at …
Run Code Online (Sandbox Code Playgroud)

java clojure fluentd

3
推荐指数
1
解决办法
1176
查看次数

如何在 fluidd 中尾部多个文件

我已经设置了 Fluentd 记录器,并且可以使用 Fluentdtail input插件来监视文件。所有数据由 fluidd 接收,随后发布到elasticsearch集群。以下是 fluidd 的配置文件:

<source>
  @type tail
  path /home/user/Documents/log_data.json
  format json
  tag myfile
</source>

<match *myfile*>
  @type elasticsearch
  hosts 192.168.48.118:9200
  user <username>
  password <password>
  index_name fluentd
  type_name fluentd
</match>
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在log_data.json使用tail. 我在同一目录中也有一个文件log_user.json,我也想监视它并将其日志发布到elasticsearch. 为此,我想用不同的标签创建另一个<source>& <match>,但它开始显示错误。

如何监视多个文件并将fluentd它们发布到elasticsearch. 我看到当我们启动时fluentd它的工作人员就启动了。是否可以启动多个工作程序,以便每个工作程序都监视不同的文件,或者使用任何其他方式来执行此操作。谁能给我指出一些好的链接/教程。

谢谢。

logging json elasticsearch fluentd

3
推荐指数
1
解决办法
6542
查看次数

Fluentd:相同的文件,不同的过滤器和输出

希望在这里得到一些帮助。我的 Fluentd 设置配置为将日志发送到 2 个输出,每个输出都需要不同的日志结构。

目前为止的配置是扫描日志两次,每次添加不同的标签,并根据标签配置相关的解析和输出。

例如:

myapp.log -> tag app_splunk -> filters of type x, y, x -> match and output to splunk

myapp.log -> tag app_s3 -> different set of filters -> output to S3

我正在尝试找到一种正确的方法来处理日志一次并获得相同的结果而无需双重标记。我尝试使用 @relabel 并根据标签提供一组新的过滤器,结果是日志已经由第一个过滤器集合处理,现在新的过滤器无法正常工作。

知道我怎样才能实现这一目标吗?

fluentd

3
推荐指数
1
解决办法
1789
查看次数

如何判断cloudwatch中的哪个日志流触发了警报

我正在使用 fluidd-cloudwatch 将日志从 Kubernetes 转发到 cloudwatch。所有日志都转发到同一个日志组,但每个容器都有自己的日志流。我有一些过滤指标和基于这些指标的警报。例如,一个过滤器度量可以是“xxx 连接错误”。每次日志中出现错误时,我都会收到通知。这就是全部工作。但问题是我无法判断错误来自哪个日志流,因为我想知道哪个容器生成了该错误。

amazon-cloudwatch fluentd

3
推荐指数
1
解决办法
1217
查看次数