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
对于 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