使用Categraf安装clickhouse插件报错

Viewed 51

RT,我想使用N9E对click house进行数据库指标的监控,测试结果结果报错./categraf --test --inputs clickhouse
image.png
但是我也没这条查询语句,配置文件里面用户名密码是没问题的,所以权限应该是正常的,想知道是不是默认的连库方式不是用clickhouse-client。。。所以很迷茫,附上clickhouse.toml,麻烦各位大佬帮忙看看

# # collect interval
interval = 15

# Read metrics from one or many ClickHouse servers
[[instances]]
  username = "default"
  password = "passwd"

  ## HTTP(s) timeout while getting metrics values
  ## The timeout includes connection time, any redirects, and reading the
  ## response body.
  timeout = 5

  ## List of servers for metrics scraping
  ## metrics scrape via HTTP(s) clickhouse interface
  ## https://clickhouse.tech/docs/en/interfaces/http/
  servers = ["http://ck1:9000","http://ck2:9000","http://ck3:9000"]

  ## If "auto_discovery"" is "true" plugin tries to connect to all servers
  ## available in the cluster with using same "user:password" described in
  ## "user" and "password" parameters and get this server hostname list from
  ## "system.clusters" table. See
  ## - https://clickhouse.tech/docs/en/operations/system_tables/#system-clusters
  ## - https://clickhouse.tech/docs/en/operations/server_settings/settings/#server_settings_remote_servers
  ## - https://clickhouse.tech/docs/en/operations/table_engines/distributed/
  ## - https://clickhouse.tech/docs/en/operations/table_engines/replication/#creating-replicated-tables
  auto_discovery = true

  ## Filter cluster names in "system.clusters" when "auto_discovery" is "true"
  ## when this filter present then "WHERE cluster IN (...)" filter will apply
  ## please use only full cluster names here, regexp and glob filters is not
  ## allowed for "/etc/clickhouse-server/config.d/remote.xml"
  ## example: cluster_include = ["my-own-cluster"]

  ## Filter cluster names in "system.clusters" when "auto_discovery" is
  ## "true" when this filter present then "WHERE cluster NOT IN (...)"
  ## filter will apply
  ##    example: cluster_exclude = ["my-internal-not-discovered-cluster"]
  # cluster_exclude = []

  ## Optional TLS Config
  # tls_ca = "/etc/telegraf/ca.pem"
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"
  ## Use TLS but skip chain & host verification
  # insecure_skip_verify = false

  [[instances.metrics]]
    mesurement = "clickhouse"
    label_fields = [ "cluster" ]
    metric_fields = ["value"]
    timeout = "3s"
    request = '''
    SELECT * FROM system.metrics;
    SELECT * FROM system.asynchronous_metrics;
    SELECT * FROM system.events;
    SELECT database, table, count() as partition_count, sum(data_compressed_bytes) as total_compressed_size FROM system.parts GROUP BY database, table ORDER BY total_compressed_size DESC;
    '''
1 Answers

已解决。。因为servers使用的是url,所以想用post请求试试,结果报错http只支持8123端口,最终命令如下
curl -X POST "http://ck1:8123" -u default:passwd --data "SELECT cluster, shard_num, host_name FROM system.clusters"
然后修改了servers的端口就成功了,所以clickhouse插件使用的是POST请求而不是click house自带的client连接的,找到原因也是瞎猫碰到死耗子。。不知道日志在哪?journalctl -fu categraf查看也不明不白的
image.png

提个pr,嘿嘿,我看代码上是没有打印这个http的请求的错误原因