elasticsearch telegraf输出到Elasticsearch:“;运行状况检查超时:没有可用的Elasticsearch节点“;,elasticsearch,telegraf,telegraf-plugins,telegraf-output-plugins,elasticsearch,Telegraf,Telegraf Plugins,Telegraf Output Plugins" /> elasticsearch telegraf输出到Elasticsearch:“;运行状况检查超时:没有可用的Elasticsearch节点“;,elasticsearch,telegraf,telegraf-plugins,telegraf-output-plugins,elasticsearch,Telegraf,Telegraf Plugins,Telegraf Output Plugins" />

elasticsearch telegraf输出到Elasticsearch:“;运行状况检查超时:没有可用的Elasticsearch节点“;

elasticsearch telegraf输出到Elasticsearch:“;运行状况检查超时:没有可用的Elasticsearch节点“;,elasticsearch,telegraf,telegraf-plugins,telegraf-output-plugins,elasticsearch,Telegraf,Telegraf Plugins,Telegraf Output Plugins,我无法使用Telegraf输出插件连接到Elasticsearch实例 我通过Elasticsearch服务创建了Elasticsearch设置。我在Kibana中为它创建了一个用户和密码(连接到一个角色) 然后我为它设置了一个Telegraf输出: [[outputs.elasticsearch]] urls = [ "https://hostname:port" ] # required. timeout = "5s" enable_sniffer = false

我无法使用Telegraf输出插件连接到Elasticsearch实例

我通过Elasticsearch服务创建了Elasticsearch设置。我在Kibana中为它创建了一个用户和密码(连接到一个角色)

然后我为它设置了一个Telegraf输出:

  [[outputs.elasticsearch]]
  urls = [ "https://hostname:port" ] # required.

  timeout = "5s"

  enable_sniffer = false

  health_check_interval = "10s"

  ## HTTP basic authentication details.
  username = "my_username"
  password = "my_password"

  index_name = "device_logs" # required.

  insecure_skip_verify = true

  manage_template = true

  template_name = "telegraf"

  overwrite_template = false
但当我试着用这个启动Telegraf时,它只是给出了一个错误

[agent]无法连接到[outputs.elasticsearch],在15秒内重试,错误为“运行状况检查超时:没有可用的elasticsearch节点”

连接失败似乎起源于golang的net/http库的内部,我不知道如何在这一点上获得更有用的输出

我尝试过的事情:

东西1:我测试了卷曲:

curl -u my_username:my_password -X POST "https://hostname:port/device_logs/_doc" -H 'Content-Type: application/json' -d'
    {
        "name": "John Doe"
    }'
这个很好用

Thing#2:我创建了一个简单的Go程序,从Go连接到elasticsearch:

package main

import (
    "log"
    "time"
    "gopkg.in/olivere/elastic.v3"
)

func main() {
    // configure connection to ES
    client, err := elastic.NewClient(elastic.SetURL("https://hostname:port"))
    if err != nil {
      panic(err)
    }
    log.Printf("client.running? %v",client.IsRunning())
    if ! client.IsRunning() {
      panic("Could not make connection, not running")
    }
}
。。而且它在第一次恐慌中使用了相同的“没有可用的Elasticsearch节点”

事情3:我试着在Go程序上运行gdb来调试它。 我一调用NewClient,它就跳转到assembly,因此我无法真正了解net/http内部发生了什么

我以前从未使用过围棋,所以我希望避免几个小时的围棋学习、探洞和调试,以绕过这里希望是一个简单的问题


关于如何在这里获取更多信息或者为什么失败,有什么想法吗?是否有我可以使用的Go构建或运行时标志?gdb和Go调试技巧,这样我就可以进入Go库代码了?Elasticsearch客户端专有技术?

回答我自己的问题,这里的问题是角色权限。Elasticsearch的Telegraf输出插件需要启用监视器管理索引模板权限,否则它将无法连接到Elasticsearch服务器而不打印任何有关原因的信息

顺便说一句:要构建golang代码并能够调试到它调用的库中,请执行以下操作:
go build-gcflags=all=“-N-l”

回答我自己的问题,这里的问题是角色权限。Elasticsearch的Telegraf输出插件需要启用监视器管理索引模板权限,否则它将无法连接到Elasticsearch服务器而不打印任何有关原因的信息

顺便说一句:要构建golang代码并能够调试到它调用的库中,请执行以下操作:
go build-gcflags=all=“-N-l”