¿Alguien tiene alguna fórmula, o tal vez algunos datos de muestra de su entorno que puedan ayudarme a estimar cuánto espacio en disco utilizará el grafito por punto de datos?
¿Alguien tiene alguna fórmula, o tal vez algunos datos de muestra de su entorno que puedan ayudarme a estimar cuánto espacio en disco utilizará el grafito por punto de datos?
Respuestas:
whisper-info.py
le brinda una gran cantidad de información sobre qué y cómo se agrega cada archivo, incluido el tamaño del archivo.
Sin embargo, solo es útil para los archivos de susurro existentes.
Cuando desee ver el tamaño predictivo de un esquema antes de ponerlo en práctica, pruebe una Calculadora de susurros, como la disponible en https://gist.github.com/jjmaestro/5774063
EDITAR:
Cuando se le pide un ejemplo ...
almacenamiento_esquema:
{
:catchall => {
:priority => "100",
:pattern => "^\.*",
:retentions => "1m:31d,15m:1y,1h:5y"
}
}
Mirando mi archivo applied-in-last-hour.wsp
, ls -l
produce
-rwxr-xr-x 1 root root 4415092 Sep 16 08:26 applied-in-last-hour.wsp
y whisper-info.py ./applied-in-last-hour.wsp
rendimientos
maxRetention: 157680000
xFilesFactor: 0.300000011921
aggregationMethod: average
fileSize: 4415092
Archive 0
retention: 604800
secondsPerPoint: 10
points: 60480
size: 725760
offset: 52
Archive 1
retention: 2678400
secondsPerPoint: 60
points: 44640
size: 535680
offset: 725812
Archive 2
retention: 157680000
secondsPerPoint: 600
points: 262800
size: 3153600
offset: 1261492
Entonces, básicamente, combina sus hosts por coincidencia de retención por segmento de período de retención por estadística, multiplica por un factor de los sistemas que tiene la intención de aplicar también, factoriza el número de estadísticas nuevas que va a rastrear. Luego, toma la cantidad de almacenamiento que sea y al menos la duplica (porque estamos comprando almacenamiento y sabemos que lo usaremos ...)
ls -l
resultado, considero que son bytes. Cuando sumo los tamaños de los archivos dentro del archivo .wsp (según lo informado por whisper-info.py
), se acercan al tamaño general del archivo .wsp (el resto supongo que son metadatos y demás. Este debería ser el tamaño del archivo para todos tiempo, como datos cae hacia abajo para bajar resoluciones de datos, y se descartan los puntos de datos antiguos.
ServerCount * MetricCount * 4.5MBytes
En la documentación de statsd dan un ejemplo para una política de retención de datos.
Las retenciones son 10s:6h,1min:7d,10min:5y
2160 + 10080 + 262800 = 275040 puntos de datos y dan un tamaño de archivo de 3.2 MiB .
Suponiendo una relación lineal, esto sería aproximadamente 12.2 Bytes por punto de datos .
No hay experiencia directa con Graphite, pero imagino la misma lógica que usamos para Cacti o cualquier otra cosa que se aplicaría RRD o impulsada por rollover de tiempo (Graphite ya no usa RRD internamente, pero la lógica de almacenamiento parece comparable).
La respuesta rápida es "Probablemente no tanto espacio como crees que necesitarás".
La respuesta larga implica algunas matemáticas específicas del sitio. Para nuestro sistema de monitoreo (InterMapper) calculo los períodos de retención, las resoluciones y el tamaño del punto de datos, hago algunas multiplicaciones y agrego sobrecarga.
Como ejemplo, usaré espacio en disco: almacenamos cifras con una precisión de 5 minutos durante 30 días, una precisión de 15 minutos por otros 60 días, y luego una precisión por hora durante otros 300 días, y estamos usando un 64 -bit (8 bytes) entero para almacenarlo:
Con 8 bytes por muestra, eso es aproximadamente 173 KB, más una sobrecarga saludable para la indexación de almacenamiento y similares lo lleva a aproximadamente 200 KB para los datos de uso del disco de una partición (cualquier error tiende a sobreestimar).
A partir de las métricas básicas, puedo calcular un tamaño promedio "por máquina" (10 particiones de disco, espacio de intercambio, RAM, promedio de carga, transferencia de red y algunas otras cosas): equivale a aproximadamente 5 MB por máquina.
También agrego un saludable 10% sobre el número final y redondeo, así que dimensiono las cosas a 6MB por máquina.
Luego miro los 1 TB de espacio que tengo para almacenar datos de métricas para gráficos y digo "Sí, ¡probablemente no me quede sin almacenamiento en mi vida a menos que crezcamos mucho!" :-)
Tengo 70 nodos que generan muchos datos. Usando Carbon / Whisper, un nodo creó 91k archivos solo (el nodo genera múltiples esquemas, cada uno con múltiples contadores y campos variables que deben ser seleccionables, por ejemplo: (nombre de nodo). (Esquema). (Contador). (Subcontador). (Etc. )....y así).
Esto proporcionó la granularidad que necesitaba para trazar cualquier gráfico que quisiera. Después de ejecutar el script para completar los 69 nodos restantes, tenía 1.3Tb de datos en el disco. Y eso es solo 6 horas de datos / nodo. Lo que me sorprende es que el archivo csv plano real para 6 horas de datos es de aproximadamente 230 Mb / nodo. 70 nodos son ~ 16 Gb de datos. Mi esquema de almacenamiento era 120s: 365d.
Soy relativamente nuevo en bases de datos, por lo que podría estar haciendo algo mal, pero supongo que es toda la sobrecarga para cada muestra.
Así que fue un experimento divertido, pero no creo que tenga sentido usar susurro para el tipo de datos que estoy almacenando. MongoDB parece una mejor solución, pero necesito descubrir cómo usarlo como un backend para Grafana.