;数据配置;指标;InfluxDB指标;将数据从涌入Telegraf推送到Prometheus

将数据从涌入Telegraf推送到Prometheus

我们现在有了可以摄入的支撑输入线协议进入格拉弗纳云。您现在可以将您的Telegraf和其他服务通过HTTP将Line协议指标推送到GrafanaCloud。

例如,如果你正在使用Telegraf为了推送指标,需要进行以下配置:

[[输出。涌入db]] urls = ["/api/v1/push/influx"] ## HTTP Basic Auth username = "Your Metrics instance ID" password = "Your Grafana.com API Key"

您可以通过单击找到度量端点的URL、用户名和密码细节在普罗米修斯卡片上云门户.该URL基于远程写端点URL,但稍加更改。你需要替换普罗米修斯涌入改变路径/ api /舞会/推动api / v1 /推/涌入.例如,如果remote_write端点是https://prometheus-prod-03-prod-us-central-0.grafana.net/api/prom/push,您的输入端点将为https://influx-prod-03-prod-us-central-0.grafana.net/api/v1/push/influx

注意:新端点表单有一个特例。如果您的端点url是prometheus-us-central1.grafana.net,您的新输入端点将为https://influx-prod-06-prod-us-central-0.grafana.net/api/v1/push/influx

内流线协议具有以下结构:Metric_name (k=v标记集)(k=v字段集)时间戳

在《普罗米修斯》中,我们将上述转换为以下系列:

对于字段中的每个(字段,值):metric_name_field{tags…}值@timestamp

例如:Diskio,host=work,name=dm-1 write_bytes=651264i,read_time=29i 1661369405000000000

将转换为:

Diskio_write_bytes {host="work", name="dm-1"} 651264 1661369405000000000 diskio_read_time{host="work", name="dm-1"} 29 1661369405000000000

时间戳是可选的。如果指定了,我们期望时间戳以纳秒为单位进行编码。如果没有指定时间戳,我们将使用服务器接收度量的时间戳毫秒。

直接从应用程序推送

注意:此API的实际目标路径为/ api / v1 / / /写涌入.telegraf插件会自动将" /write "附加到提供的URL后,因此不应该在配置中指定它。如果你正在使用一个不同的插件或直接推送,你可能需要指定完整的路径/ api / v1 / / /写涌入在您的端点URL中。

例如:https://influx-prod-03-prod-us-central-0.grafana.net/api/v1/push/influx/write

使用cURL、Node.js、Python和Ruby的其他示例:

旋度

API_KEY=":" URL="https://influx[…].grafana.net/api/v1/push/influx/write" curl -X \ POST -H \ "Authorization: holder $API_KEY" -H \ "Content-Type: application/json" "$URL" -d "test,bar_label=abc,source=grafana_cloud_docs metric=35.2"

node . js

Import fetch from 'node-fetch';const USER_ID = '123456';const API_KEY = 'your-api-key-123-!! ';Const body = 'test,bar_label=abc,source=grafana_cloud_docs metric=35.2';// Endpoint与userid / API Key在同一页上const response = await fetch('https://influx[…].grafana.net/api/v1/push/influx/write', {method: 'post', body: json .stringify(body), headers: {'Authorization': ' holder ${USER_ID}:${API_KEY} ', 'Content-Type': 'application/json',},});Const data = await response.json();console.log(数据);

Python

import requests import base64 USER_ID = '123456' API_KEY = 'your-api-key-123-!' body = 'test,bar_label=abc,source=grafana_cloud_docs metric=35.2' response = requests.post('https://influx[…].grafana.net/api/v1/push/influx/write', header = {'Content-Type': 'text/plain',}, data = str(body), auth = (USER_ID, API_KEY)) status_code = response. 'status_code print (status_code)

Ruby

require 'net/http' require 'uri' require 'base64' USER_ID = '123456' API_KEY = 'your-api-key-123-!! 'BASE64_ENCODED_AUTH = Base64。strict_encode64(USER_ID + ':' + API_KEY) uri = "https://influx[…].grafana.net/api/v1/push/influx/write" uri = uri. parse(uri) body = 'test,bar_label=abc,source=grafana_cloud_docs metric=35.2' response = Net::HTTP.start(uri. txt)主机,uri。do |客户端|请求= Net::HTTP::Post.new(uri.path)请求。body = body request["Authorization"] = "Basic #{BASE64_ENCODED_AUTH}" request["Content-Type"] = "text/plain" client.request(request) end data = response。代码存放数据

使用远程写输出进行推送

Telegraf也支持使用本机Prometheus远程写入端点

您可以使用您的云门户中给出的相同的Prometheus URL。不需要在任何情况下更改URL。

目前的限制:

  1. 无论您发送的数据的精度是多少,我们都将以毫秒精度存储它。目前我们的平台上还没有支持超过毫秒的精度。
  2. 我们的平台只支持float64。这意味着所有整数和布尔值将在存储之前转换为浮点数。True变成1,false变成0。我们目前不摄取字符串值。
  3. 我们不支持通过Flux进行查询,您需要使用PromQL,但我们已经将其作为支持Flux的路线图的一部分。