Knative 日志记录:日志存储 - Kibana 无法获取映射

Knative logging: log stash - Kibana unable to fetch mapping

对于 Knative 日志记录,按照此处的说明 - https://github.com/knative/docs/blob/master/serving/installing-logging-metrics-traces.md#elasticsearch-kibana-prometheus--grafana-setup,我尝试使用 Kibana UI(Elasticsearch 的可视化工具)可视化日志,但在配置索引时遇到以下错误pattern — “无法获取映射。你有匹配模式的索引吗? logstash

是否有任何解决方法或修复方法?

更新:这是我按照评论中的建议发出 cURL GET 请求时看到的内容

最近版本的 KNative 中存在一个错误,已记录在本期 https://github.com/knative/serving/issues/2218 中。 已经有一个已批准但尚未合并的 PR,您可以在此处查看 https://github.com/knative/serving/pull/2560.

简而言之,问题是 fluentd pods 使用 system-node-critical 优先级 class,在 kube-system 命名空间之外不再受支持。

因此 fluentd pods 不会被创建,因此不会将任何日志发送到 Elasticsearch,因此 logstash 索引不会显示在 Kibana 中。

作为 KNative v0.2.2 的解决方法,您可以在此处下载并从发布文件中删除第 1909 行: https://github.com/knative/serving/releases/download/v0.2.2/release.yaml.

然后您可以安装补丁版本: kubectl apply -f release.yaml

如果您不想下载和编辑,您可以得到一个已经 patched version of release 0.2.2 here 的文件,您可以通过以下方式安装:

kubectl apply -f https://github.com/gevou/knative-blueprint/blob/master/knative-serving-release-0.2.2-patched.yaml

你当然可以对以前的版本做类似的事情。

这里有一些额外的步骤,我必须执行这些步骤才能使它完全正常工作。在这里发帖,这样可以帮助面临同样问题并寻找答案的人

这是步骤, 运行 以下命令应用补丁来修复 fluentd-ds pods 未显示问题

kubectl apply -f https://raw.githubusercontent.com/gevou/knative-blueprint/master/knative-serving-release-0.2.2-patched.yaml

确认您的每个节点都有 beta.kubernetes.io/fluentd-ds-ready=true 标签:

kubectl get nodes --selector beta.kubernetes.io/fluentd-ds-ready=true

如果您收到“未找到资源”响应: 运行 以下命令确保所有节点上的 Fluentd DaemonSet 运行s:

kubectl label nodes — all beta.kubernetes.io/fluentd-ds-ready=”true”

运行 以下命令确保 fluentd-ds daemonset 在至少一个节点上准备就绪:

kubectl get daemonset fluentd-ds --namespace knative-monitoring

稍等片刻运行这个命令

kubectl proxy

导航至 Kibana UI。代理可能需要几分钟才能工作。

  • 在“配置索引模式”页面中,在索引模式中输入 logstash-* 并在时间过滤器字段名称中输入 select @timestamp,然后单击“创建”按钮。

  • 要创建第二个索引,select 页面左上角的“创建索引模式”按钮。在索引模式中输入 zipkin*,在时间过滤器字段名称中输入 select timestamp_millis,然后单击“创建”按钮。

如果问题仍然存在,按照上面评论中的建议应该可以修复错误

GET _cat/indices?v

添加了端到端的调查结果here