无法将索引插入 AKS 上的 ElasticSearch 数据库容器

Not able to insert index into ElasticSearch DB container on AKS

我在 AKS 中安装了 Elasticsearch 和 Kibana 作为容器。以下是服务的样子:

通过访问外部 IP 地址,我可以看到这两个服务都已启动并且 运行。但问题是我不确定 Kibana 是否能够连接到 Elasticsearch。我该如何检查?因为如果我点击下面的url,我没有得到成功的回应:

我正在使用以下代码从我的 Azure LogAnalytics 工作区获取日志并插入到 ElasticSearch 数据库中:

private static void UploadLogToElasticSearchDB(Microsoft.Azure.OperationalInsights.Models.Table dt)
        {
            ElasticClient client = null;
            var uri = new Uri("http://13.87.227.42:9200/");
            var settings = new ConnectionSettings(uri);
            client = new ElasticClient(settings);
            settings.DefaultIndex("k8scontainercpu");

            for(int i = 0; i < dt.Rows.Count; i++)
            {
                var dtRowJSON = JsonConvert.SerializeObject(dt.Rows[i]);
                client.IndexAsync<string>(dtRowJSON, null);
            }
        }

这个程序是 运行 无限并且没有插入任何记录,它也没有给出任何错误,我在程序的输出 window 中没有看到任何异常。如何在AKS的elasticsearch DB中插入索引?

如果您能够使用外部 IP 和端口进行连接,则该服务工作正常。在集群外部无法访问内部服务名称。

您可以打开 kibana external url 并检查 kibana 是否能够连接到 elasticsearch。如果 kibana 无法连接到弹性搜索,它将在 kibana 的健康状态中可见。但是,如果您能够从外部连接到 elastic search,那么 kibana 应该能够轻松连接到它。

关于索引的创建,你也可以使用kibana来创建索引。请参阅 link 了解如何使用 kibana 创建索引。 ES也有api创建索引link

为了排除哪些文档没有插入到 ES 中,我建议使用 Index 函数(这是一个同步函数)并跟踪调用的响应,这样您就可以确定调用中发生了什么。您可以从 link

了解它