El tamaño de los bytes facturados de la escritura remota de Prometheus puede ser mayor que los bytes enviados a New Relic. Para asegurarse de que la diferencia no le sorprenda, le recomendamos revisar cómo la compresión de datos afecta los bytes facturados.
Comprender la compresión de datos y la facturación
Los datos de escritura remota de Prometheus se envían a New Relic comprimidos para una transmisión más rápida y sin pérdidas. Cuando se ingieren, esos datos se descomprimen y se decoran para que puedan usarse correctamente con la característica New Relic , como la síntesis de entidades. Aunque debería esperar una diferencia en la tasa de bytes comprimidos y sin comprimir, la diferencia potencial para los datos de escritura remota de Prometheus es importante debido al modelo de facturación de New Relic.
Se le factura en función del esfuerzo computacional necesario para ingerir sus datos, así como del tamaño de los datos almacenados en New Relic. El proceso de descompresión y las transformaciones de datos pueden dar como resultado que los bytes finales sin comprimir almacenados tengan aproximadamente 15 veces el tamaño de su contraparte comprimido.
Por ejemplo, según una muestra de datos de series temporales que recopilamos al simular el tráfico del mundo real, es posible que vea algo como esto:
~124 GB/day compressed data sent = ~1.86TB uncompressed data stored
A continuación se muestra una simulación de los cambios en la tasa de bytes a medida que los datos de lectura y escritura de Prometheus se mueven a través de nuestro sistema. En este caso, las métricas se generaron ingiriendo la escritura remota de un servidor Prometheus local de un nodo exportador local.
Observe cómo la tasa de bytes enviados de Prometheus coincide estrechamente con el recuento de bytes comprimidos de escritura remota que registramos por nuestra parte justo antes de descomprimir los puntos de datos. Podemos atribuir la mayor variación de la tasa de bytes comprimidos de escritura remota a la naturaleza del procesamiento de datos a través de nuestros sistemas distribuidos:
Como los puntos de datos no están comprimidos, el factor de expansión de 5 a 10 veces se refleja en la diferencia entre la tasa de bytes de datos comprimidos de escritura remota y la tasa de bytes de escritura remota sin comprimir, que son mediciones tomadas justo antes y después de la descompresión de datos.
Finalmente, a medida que los datos se transforman y se realizan enriquecimientos, la diferencia entre los bytes sin comprimir de escritura remota y el bytecountestimate()
se puede ver a continuación. El bytecountestimate()
enumerado es una medida del recuento de bytes del estado final de los datos antes de almacenarse.
Para comprender mejor las posibles transformaciones o adiciones de datos por las que pueden pasar los datos de lectura y escritura de Prometheus, aquí se compara la métrica prometheus_remote_storage_bytes_total
, una medida informada por el servidor de Prometheus.
La primera es una representación proporcionada por Prometheus y la segunda es la contraparte de la consulta NRQL.
Representación del servidor Prometheus:
"prometheus_remote_storage_bytes_total" { "instance=""localhost:9090" "job=""prometheus" "remote_name=""5dfb33" "url=""https://staging-metric-api.newrelic.com/prometheus/v1/write?prometheus_server=foobarbaz"}23051
Representación de consulta de NRQL
{ "endTimestamp": 1631305327668, "instance": "localhost:9090", "instrumentation.name": "remote-write", "instrumentation.provider": "prometheus", "instrumentation.source": "foobarbaz", "instrumentation.version": "0.0.2", "job": "prometheus", "metricName": "prometheus_remote_storage_bytes_total", "newrelic.source": "prometheusAPI", "prometheus_remote_storage_bytes_total": { "type": "count", "count": 23051 }, "prometheus_server": "foobarbaz", "remote_name": "5dfb33", "timestamp": 1631305312668, "url": "https://staging-metric-api.newrelic.com/prometheus/v1/write?prometheus_server=foobarbaz"}
Sugerencia
El ejemplo anterior es una comparación simplificada destinada a ilustrar los conceptos subyacentes, por lo que hace un uso más ligero que el promedio del etiquetado y la métrica destacada. Las versiones del mundo real se verán un poco diferentes porque tienen más complejidad.
Utilice NRQL para consultar su recuento de datos
Consulte la siguiente consultaNRQL para recopilar información sobre el recuento de bytes.
Para ver el recuento estimado de bytes almacenados en New Relic:
FROM Metric SELECT rate(bytecountestimate(), 1 minute) AS 'bytecountestimate()' WHERE prometheus_server = INSERT_PROMETHEUS_SERVER_NAME SINCE 1 hour ago TIMESERIES AUTO
Para monitor los bytes de Prometheus enviados a New Relic:
FROM Metric SELECT rate(sum(prometheus_remote_storage_bytes_total), 1 minute) AS 'Prometheus sent bytes rate' WHERE prometheus_server = INSERT_PROMETHEUS_SERVER_NAME SINCE 1 hour ago TIMESERIES AUTO
Referencias externas
Aquí hay algunos enlaces externos a documentos de Prometheus y GitHub que aclaran la compresión y la codificación.
Prometheus hace referencia a la compresión Snappy que se utiliza en la codificación: los protocolos de lectura y escritura utilizan una codificación de búfer de protocolo comprimido rápidamente a través de HTTP. Los protocolos aún no se consideran API estables y pueden cambiar para usar gRPC sobre HTTP/2 en el futuro, cuando se pueda asumir con seguridad que todos los saltos entre Prometheus y el almacenamiento remoto son compatibles con HTTP/2.