我试图使用flunetd从scribe服务器读取并输出这些日志暂时存储在logstash中.我知道将scribe_central日志记录到另一个中央记录器是非常愚蠢的,但我们需要在我们当前的架构中完成.
有谁知道是否有任何插件可以做到这一点?我搜索了谷歌但找不到任何东西.
我正在设置我的fluentD配置,对于某些事件,我需要将它们推送到loggly和elasticsearch.我正在使用复制插件,但看到fluentD调用返回所花费的时间差异很大 - 通过邮递员进行测试POST调用所花费的时间.如果我使用弹性搜索匹配内部副本vs <1s进行直接弹性搜索匹配,则需要大约5秒.我使用以下配置.
<match testapp.elastic>
@type elasticsearch
host localhost
port 9200
index_name fluentdtest
type_name fluentdtest
</match>
#Common match for loggly and mongo
<match logapp.**>
type copy
<store>
@type elasticsearch
host localhost
port 9200
index_name fluentdtest
type_name fluentdtest
</store>
<store>
type forest
subtype loggly
<template>
loggly_url ##myurl##/tag/${tag}
</template>
</store>
</match>
Run Code Online (Sandbox Code Playgroud) 我正在使用 Fluentd 和 Elasticsearch 来获取来自 Kubernetes 的日志,但我注意到某些 JSON 日志无法正确索引,因为 JSON 存储为字符串。
kubectl 日志中的日志如下所示:
{"timestamp":"2016-11-03T15:48:12.007Z","level":"INFO","thread":"cromwell-system-akka.actor.default-dispatcher-4","logger":"akka.event.slf4j.Slf4jLogger","message":"Slf4jLogger started","context":"default"}
Run Code Online (Sandbox Code Playgroud)
但是保存在 /var/log/containers/... 文件中的日志已经转义了引号并使它们成为字符串而不是破坏索引的 JSON:
{"log":"{\"timestamp\":\"2016-11-03T15:45:07.976Z\",\"level\":\"INFO\",\"thread\":\"cromwell-system-akka.actor.default-dispatcher-4\",\"logger\":\"akka.event.slf4j.Slf4jLogger\",\"message\":\"Slf4jLogger started\",\"context\":\"default\"}\n","stream":"stdout","time":"2016-11-03T15:45:07.995443479Z"}
Run Code Online (Sandbox Code Playgroud)
我试图让日志看起来像:
{
"log": {
"timestamp": "2016-11-03T15:45:07.976Z",
"level": "INFO",
"thread": "cromwell-system-akka.actor.default-dispatcher-4",
"logger": "akka.event.slf4j.Slf4jLogger",
"message": "Slf4jLogger started",
"context": "default"
},
"stream": "stdout",
"time": "2016-11-03T15: 45: 07.995443479Z"
}
Run Code Online (Sandbox Code Playgroud)
你能建议我怎么做吗?
我在Google容器引擎中有一个容器集群,启用了Stackdriver日志代理.它正确地从我的容器中提取stdout日志.现在我想更改fluentd配置以指定日志解析器,以便GCP Logging视图中显示的日志具有正确的严重性和组件.
遵循kubernetes.io的这个Stackdriver日志指南,我试图:
ConfigMap的yml文件<filter>根据我的log4js日志格式添加了一个新的ConfigMap名为fluentd-cm-2的新kube-system命名DaemonSet精通,并设置ConfigMap为流利的-cm-2.我使用kubectl edit ds而不是kubectl replace -f因为后者失败并显示错误消息:"对象已被修改",即使在获取了DaemonSetyaml 的新副本之后.意外结果:DaemonSet重新启动,但其配置恢复为原始配置ConfigMap,因此我的更改未生效.
我也尝试过编辑ConfigMap直接(kubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system)并保存它,但它也被还原了.
我注意到,DaemonSet并且ConfigMap为流利的人标记了addonmanager.kubernetes.io/mode: Reconcile.我会得出结论,由于这种"协调"模式,GKE已经覆盖了我的设置.
所以,我的问题是:当GKE在集群配置上安装日志代理时,如何更改Google Container Engine集群中的流畅配置?
fluentd google-cloud-platform kubernetes google-kubernetes-engine stackdriver
启动 Fluentd docker 容器时有 0 条错误消息,因此很难调试。
来自 fluentd-container 的curl http://elasticsearch:9200/_cat/indices显示索引,但不显示 fluentd-index。
docker logs 7b
2018-06-29 13:56:41 +0000 [info]: reading config file path="/fluentd/etc/fluent.conf"
2018-06-29 13:56:41 +0000 [info]: starting fluentd-0.12.19
2018-06-29 13:56:41 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '1.4.0'
2018-06-29 13:56:41 +0000 [info]: gem 'fluent-plugin-rename-key' version '0.1.3'
2018-06-29 13:56:41 +0000 [info]: gem 'fluentd' version '0.12.19'
2018-06-29 13:56:41 +0000 [info]: gem 'fluentd' version '0.10.61'
2018-06-29 13:56:41 +0000 [info]: adding filter pattern="**" type="record_transformer"
2018-06-29 13:56:41 +0000 [info]: adding match pattern="docker.*" type="rename_key"
2018-06-29 13:56:41 +0000 …Run Code Online (Sandbox Code Playgroud) 我有一个 Fluentd 实例,我需要它来将与标签匹配的日志发送fv-back-*到 Elasticsearch 和 Amazon S3。
有没有办法配置 Fluentd 将数据发送到这两个输出?现在我只能使用<match fv-back-*>config 指令将日志发送到一个源。
目标:从内部版本为1.11.2的Kuberntes HA群集中获取有关Google Stackdriver的日志记录/监视信息。
我已经能够使用Fluentd Daemonset for Kubernetes将日志发送到Elasticsearch ,但是该项目不支持Stackdriver(问题)。就是说,有一个为Stackdriver(source)创建的docker镜像,但是没有daemonset。查看此存储库中的其他守护程序集,不同的fluent.conf文件之间有相似之处,除了fluent.conf缺少任何环境变量的Stackdriver 文件。
如 上面提到的GitHub问题所述,此处的Kubernetes GitHub中有一个插件 ,但这是旧版。这些文档可以在这里找到 。
它指出:
“警告:除了Google Kubernetes Engine以外,Stackdriver日志记录守护程序在其他平台上都存在已知问题。请您自担风险。”
以这种方式安装失败,没有说明原因。
其他一些注意事项。有Stackdriver Kubernetes Monitoring明确指出:
“易于在任何云或本地上入门”
在首页上,但似乎没有解释如何做。这个Stack Overflow问题 中有人希望将监视添加到他的AWS集群中。似乎尚不支持。
此外,在实际的Google Stackdriver上还指出
“与多个云和本地基础结构一起使用”。
值得注意的是,我是Fluentd和Google Cloud Platform的新手,但对管理本地Kubernetes集群非常熟悉。
有没有人能够从另一个平台上进行监视或登录以在GCP上工作?如果是这样,使用了什么方法?
我有来源:
<source>
@type tail
tag service
path /tmp/l.log
format json
read_from_head true
</source>
Run Code Online (Sandbox Code Playgroud)
我想对它做几个过滤器,并将match它的输出到几个输出:
<source>
@type tail
tag service.pi2
path /tmp/out.log
format json
read_from_head true
</source>
<source>
@type tail
tag service.data
path /tmp/out.log
format json
read_from_head true
</source>
<filter service.data>
# some filtering
</filter>
<filter service.pi2>
# some filtering
</filter>
<match service.data>
@type file
path /tmp/out/data
</match>
<match service.pi2>
@type file
path /tmp/out/pi
</match>
Run Code Online (Sandbox Code Playgroud)
到目前为止,为了使一切正常,我必须source使用不同的标签进行复制。我可以让它从一个源定义工作吗?
我的 docker-compose 文件中有以下配置:
fluentd:
build: ./fluentd
container_name: fluentd
expose:
- 24224
- 24224/udp
depends_on:
- "elasticsearch"
networks:
- internal
public-site:
build: ./public-site
container_name: public-site
depends_on:
- fluentd
logging:
driver: fluentd
options:
tag: public-site
networks:
- internal
networks:
internal:
Run Code Online (Sandbox Code Playgroud)
当我使用 启动应用程序时docker-compose up,网络服务器存在错误消息ERROR: for public-site Cannot start service public-site: failed to initialize logging driver: dial tcp 127.0.0.1:24224: connect: connection denied。
另一方面,当我从 fluentd ( ports: 24224:24224)发布端口时,它可以工作。问题是我不想在主机上发布这些端口,因为它绕过了 linux 防火墙(即它向所有人公开了 fluentd 端口,请参阅此处)。
这令人困惑,因为公开端口应该使其可用于网络中的每个容器。我使用的是fluentd 和网络服务器之间的内部网络,所以我希望 fluentd 的暴露端口就足够了(事实并非如此)。 …
我是流利的新手。我已经配置了我需要的基本 fluentd 设置并将其作为守护程序集部署到我的 kubernetes 集群。我看到日志已发送到我的第 3 方日志记录解决方案。但是,我现在想要处理一些作为多个条目进入的日志,而它们确实应该是一个条目。来自节点的日志看起来像 json 并且格式如下
{"log":"2019-09-23 18:54:42,102 [INFO] some message \n","stream":"stderr","time":"2019-09-23T18:54:42.102Z"}
{"log": "another message \n","stream":"stderr","time":"2019-09-23T18:54:42.102Z"}
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像的配置图
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-config-map
namespace: logging
labels:
k8s-app: fluentd-logzio
data:
fluent.conf: |-
@include "#{ENV['FLUENTD_SYSTEMD_CONF'] || 'systemd'}.conf"
@include kubernetes.conf
@include conf.d/*.conf
<match fluent.**>
# this tells fluentd to not output its log on stdout
@type null
</match>
# here we read the logs from Docker's containers and parse them
<source>
@id fluentd-containers.log
@type tail
path /var/log/containers/*.log
pos_file /var/log/es-containers.log.pos …Run Code Online (Sandbox Code Playgroud) fluentd ×10
kubernetes ×4
logging ×4
docker ×3
stackdriver ×2
amazon-s3 ×1
json ×1
log-shipping ×1
logstash ×1
plugins ×1