- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自从 https://istio.io/docs/tasks/telemetry/logs/fluentd/ 中的“使用 Fluentd 记录”很有限,我试过配置更完整的logentry
包含要发送到 fluentd 的 IP 地址(就像这里定义的 https://github.com/istio/istio/blob/84f3b8ff576125a6c3cab667bb213c65768f68a3/install/kubernetes/helm/istio/charts/mixer/templates/config.yaml#L242 )。
当我这样做时,elasticsearch 会提示无效的 UTF-8 字符,因为 IP 实际上是以字节形式发送的。 (见这里:https://github.com/istio/istio/blob/84f3b8ff576125a6c3cab667bb213c65768f68a3/mixer/pkg/lang/cel/types.go#L291)。有没有办法使用 istio 的表达式语言或在预先存在的 fluentd 插件中转换为字符串?
下面是我发送到 stdout 的消息示例,其中包括带有 stdio 适配器的混音器和带有 stdout 插件的 fluentd。如您所见,字段 destinationIP
和 sourceIP
在fluentd的输出中确实是乱码。
Mixer stdio adapter
{"level":"info","time":"2019-09-10T17:06:09.847408Z","instance":"accesslog.instance.istio-system","apiClaims":"","apiKey":"","clientTraceId":"","connection_security_policy":"none","destinationApp":"telemetry","destinationIp":"10.1.2.64","destinationName":"istio-telemetry-cb4486d94-c8b8z","destinationNamespace":"istio-system","destinationOwner":"kubernetes://apis/apps/v1/namespaces/istio-system/deployments/istio-telemetry","destinationPrincipal":"","destinationServiceHost":"istio-telemetry.istio-system.svc.cluster.local","destinationWorkload":"istio-telemetry","grpcMessage":"","grpcStatus":"0","httpAuthority":"mixer","latency":"1.586447ms","method":"POST","permissiveResponseCode":"none","permissiveResponsePolicyID":"none","protocol":"http","receivedBytes":1251,"referer":"","reporter":"destination","requestId":"5c796abc-b379-41e6-9814-c6ef2d33dec2","requestSize":873,"requestedServerName":"","responseCode":200,"responseFlags":"-","responseSize":5,"sentBytes":141,"sourceApp":"reviews","sourceIp":"10.1.1.61","sourceName":"reviews-v1-59fd8b965b-5zp9f","sourceNamespace":"default","sourceOwner":"kubernetes://apis/apps/v1/namespaces/default/deployments/reviews-v1","sourcePrincipal":"","sourceWorkload":"reviews-v1","url":"/istio.mixer.v1.Mixer/Report","userAgent":"","xForwardedFor":"10.1.1.61"}
Fluentd stdout
2019-09-10 17:06:09.000000000 +0000 accesslog.instance.istio-system: {"sourcePrincipal":"","destinationNamespace":"istio-system","permissiveResponseCode":"none","permissiveResponsePolicyID":"none","latency":"2.250387ms","apiClaims":"","destinationOwner":"kubernetes://apis/apps/v1/namespaces/istio-system/deployments/istio-telemetry","requestedServerName":"","connection_security_policy":"none","destinationName":"istio-telemetry-cb4486d94-c8b8z","requestId":"486b70d4-85e8-4c34-aa1b-7c4a83accbb7","userAgent":"","responseCode":200,"xForwardedFor":"10.1.2.83","reporter":"destination","grpcStatus":"0","grpcMessage":"","apiKey":"","severity":"Info","destinationServiceHost":"istio-telemetry.istio-system.svc.cluster.local","sourceOwner":"kubernetes://apis/apps/v1/namespaces/default/deployments/reviews-v2","referer":"","responseFlags":"-","sourceWorkload":"reviews-v2","protocol":"http","httpAuthority":"mixer","sourceIp":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000��\n\u0001\u0002S","destinationApp":"telemetry","sourceApp":"reviews","method":"POST","requestSize":1902,"destinationPrincipal":"","destinationIp":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000��\n\u0001\u0002@","receivedBytes":2280,"destinationWorkload":"istio-telemetry","sentBytes":141,"url":"/istio.mixer.v1.Mixer/Report","sourceNamespace":"default","sourceName":"reviews-v2-d6cfdb7d6-hckpr","responseSize":5,"clientTraceId":""}
destinationIP
之后的内容。有两个字节,0xC4 和 0x04,这意味着后面是一个长度为 4 的字节数组。
https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family
最佳答案
我最终编写了一个流利的过滤器插件来纠正错误的条目。
require 'fluent/plugin/filter'
module Fluent::Plugin
class IstioCorrector < Filter
Fluent::Plugin.register_filter('istiocorrect', self)
def configure(conf)
super
end
def filter(tag, time, record)
if (record["destinationIp"] != nil)
record["destinationIp"] = record["destinationIp"].unpack('CCCC').join('.')
end
if (record["sourceIp"] != nil)
record["sourceIp"] = record["sourceIp"].unpack('CCCC').join('.')
end
record
end
end
end
关于elasticsearch - Istio fluentd 适配器以字节形式发送 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57876014/
我正在寻找一种将 source_hostname 发送到 fluentd 目标服务器的方法。 我在 logstash 上,但我们有代理/服务器端,我们有变量来获取 logstash 服务器配置文件中的
我有一个包含 json 记录的文件,并且想在将它们发送到 fluentd 输出之前从 json 记录中删除一些键。我可以使用“record_transformer Filter Plugin”来删除键
我需要将我的应用程序日志发送到作为 EFK 服务一部分的 FluentD。所以我尝试配置另一个 FluentD 来执行此操作。 my-fluent.conf: @type kafka_group
环境:-适用于 Windows 的 Fluentd-td-agent 发行版。Elasticsearch-v6.1.2应用插件-Nodejs Fluent-logger 我正在尝试使用 Fluentd
用例:设置要发送到目标服务的最大消息数(在一个时间范围内)。 例子。我们从具有以下类型日志的服务 X 收集日志: {"@timestamp":"2020-10-30T13:00:00.310Z","l
我写 @type tail format nginx path /home/work/opt/nginx/var/log/access.log tag nginx.access 在
Guyz……我们被困住了……救救我们! :-) 我们有一个使用 Fluentd 的 3 步日志聚合管道。 [#1 - 尾部日志(原始日志)] --(TCP)--> [#2 - 将读取的日志解析为 JS
我有来源: @type tail tag service path /tmp/l.log format json read_from_head true 我
我想排除 serive_name 为空的行 "service_name":"" . 这是我流利的 conf ## match tag=debug.** and dump to console
我设置了在 Docker 引擎上运行的 Fluentd 和 Elasticsearch。我有大量服务想要登录到 Fluentd。 我想要做的是为我运行的每个服务创建一个标签,并使用该标签作为 Elas
我正在使用的当前设置是具有多个容器的 Docker 组合堆栈。这些容器将它们的日志信息发送到运行 Fluentd 守护进程的日志容器(在 compose 堆栈内)。 Fluentd 的配置包含一个 i
这是我的 FluentD 解析器配置:
用例是这样的:我有几个运行的 java 应用程序都必须与不同的(每个都有特定的目标)elasticsearch 索引交互。例如应用程序 A 使用 ElasticSearch 的索引 A、B、C 进行查
我正在尝试使用 cat_sweep 插件在 fluentd 中处理扩展名为 .gz 的日志文件,但我的尝试失败了。如下面的配置所示,我正在尝试处理 /opt/logfiles/* 位置下的所有文件。但
我的系统时间是:Tue Jan 6 09:44:49 CST 2015 td-agent.conf : type webhdfs host Page on test.com port 5
我刚刚开始使用 fluentd,但我希望能够设置单个输出匹配规则,如下所示: type file path logs/ time_slice_format %Y%m%dT%H
我正在从在 Docker Swarm 集群上运行我的容器迁移到在 Google Container Engine 上运行的 Kubernetes。在 Docker Swarm 上运行时,我配置了 Do
我正在尝试使用 Bindplane 将 Java 开发人员创建的“系统日志”上传到 Google 的 Stackdriver。 Bindplane 是基于 fluentd 构建的。 我使用的是源类型的
我在 k8s 中有一个相当简单的 Apache 部署,使用 fluent-bit v1.5 作为日志转发器。我的设置与下面的 repo 中的设置几乎相同。我正在运行 AWS EKS 并将日志输出到 A
编辑:我已根据efrat-levitan's的建议在评论中添加了新信息。当我按照原始注释的建议将Elasticsearch版本升级到7.6.0时,列出的日志输出略有不同。为了帮助调试,我也没有立即启动
我是一名优秀的程序员,十分优秀!