首页 > 解决方案 > 无法将索引插入 AKS 上的 ElasticSearch DB 容器

问题描述

我已将 Elasticsearch 和 Kibana 作为容器安装在 AKS 中。以下是服务的外观: 在此处输入图像描述

通过点击外部 IP 地址,我可以看到这两个服务都已启动并正在运行。但问题是我不确定 Kibana 是否能够连接到 Elasticsearch。我该如何检查?因为当我点击以下网址时没有得到成功的响应时: 在此处输入图像描述

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

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);
            }
        }

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

标签: elasticsearchazure-akselasticsearch-aggregation

解决方案


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

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

关于索引创建,您也可以使用 kibana 创建索引。请参阅有关如何使用 kibana 创建索引的链接ES也有创建索引链接的api

为了解决哪些文档没有插入到 ES 中,我建议使用 Index 函数(这是一个同步函数)并跟踪调用的响应,以便您可以识别调用中发生的情况。您可以从链接中了解它


推荐阅读