Prometheus & Grafana 05/05/2021 Versión 1 Índice Prometheus Introducción Precio Ejemplo 1) Metric sample ingestion usage and costs 2) Storage usage and costs 3) Query usage and costs 3 3 3 4 4 4 5 Grafana Introducción Precio Ejemplo 6 6 6 6 Seguridad 7 Step by Step Prometheus Grafana Prerrequisito Pasos 8 8 9 9 9 Prometheus & Grafana | Versión 1 |2 Prometheus Introducción Es un conjunto de herramientas de alerta y monitorización de sistemas de código abierto, lo que le facilita monitorear de forma segura los entornos de contenedores. Está diseñado específicamente para manejar la alta cardinalidad en la supervisión de datos que se generan por aplicaciones basadas en contenedores. Escala elásticamente la ingestión, el almacenamiento y la consulta de métricas para satisfacer la demanda de cualquier cliente. Ofrece una prueba gratuita de 90 días (en las regiones de AWS admitidas) con: • Metric samples ingested: 40 M • Sum of query execution time: 60 min • Metrics stored: 10 GB Precio El precio se calcula según storage, ingesta y query. • Storage: esto es por las mectic samples y la metadata en GB, la metadata varía de tamaño según el nombre de la métrica y sus labels (key/values). • Metric sample ingestion: Los cargos por métricas ingeridas y almacenadas se prorratean por hora y se facturan solo cuando envía métricas a AMP(Amazon Managed Service for Prometheus), medidos usando gigabytes-month (GB-Mo). • Query: Calcula el tiempo de ejecución de todas las solicitudes de consulta al endpoint compatible con Prometheus. Los cargos por las métricas consultadas se prorratean por minuto y solo se facturan cuando consulta las métricas. Los precios no incluyen los impuestos y aranceles aplicables, incluido el IVA, el GST y el impuesto a las ventas aplicable. Prometheus & Grafana | Versión 1 |3 Ejemplo Amazon Elastic Kubernetes Service (EKS) on EC2 and Kubernetes Si monitoreamos 1 Kubernetes cluster con 10 nodes y 100 métricas de Prometheus por nodo, colectados cada 60 segundos por un mes entero (744 horas). Los costos de uso se calcularían: 1. Metric sample ingestion, 2. Storage, and 3. Query. 1) Metric sample ingestion usage and costs Primero calculamos el número de muestras métricas ingeridas y los costos por esos muestras. El número de muestras ingeridas por mes es de 44,64 millones (10 nodos * 100 métricas por nodo / 60 intervalo de recogida en segundos * 3,600 segundos en una hora * 744 horas en un mes = 10 * 100/60 * 3,600 * 744 = 44.64 millones de muestras). Los costos ingeridos de métricas mensuales son $ 8,93 ($ 0,002 / 10,000 para los primeros 2000 millones de muestras métricas * 44,64 millones de muestras). 2) Storage usage and costs En segundo lugar, calcularemos el almacenamiento en GB y los costos de las metric samples y los metadatos métricos almacenados. Para este ejemplo, asumiremos que tiene 20 labels por métrica con 100 valores de labels únicos por labels. Los metadatos, incluidos el nombre de la métrica, los labels y los valores de las etiquetas, se almacenan a diario. También asumiremos un promedio de 30 bytes por labels y valor de labels y 2 bytes por metric sample ingested. El GB mensual de almacenamiento es 0.25 GB (metadatos de métricas * # de días por mes) + (2 bytes * número de metric samples = (100 métricas * 20 labels * 100 valores de labels * 30 bytes * ~ 30 días por mes) + ( 2 bytes * 44,64 millones de muestras) = 180 millones de bytes + 89,28 millones de bytes = 91,08 millones de bytes = 0,25 GB). El cargo por almacenamiento es de $0.01 ($0.03/GB * 0.25 GB). Prometheus & Grafana | Versión 1 |4 3) Query usage and costs Ahora calcularemos el tiempo de ejecución de la consulta y los costos de la query para este ejemplo. Asumiremos que tiene 1 usuario final monitoreando un panel durante un promedio de 2 horas al día actualizándolo cada 60 segundos con 20 widgets de gráficos por panel (asumiendo 1 consulta PromQL por widget). El tiempo medio de ejecución de una query es de 10 a 300 ms, pero para casos de uso de supervisión, los tiempos de ejecución suelen ser más rápidos. Por lo tanto, en las querys de las últimas 24 horas de metric samples, el tiempo de ejecución será más rápido. Supondremos 18ms por query para este ejemplo. Primero, comenzaremos calculando el recuento de queries por mes, que es de 72,000 queries (1 usuario final * 20 gráficos * 2 horas de visualización de un panel * 3600 segundos por hora / 60 segundos por actualización del panel * ~ 30 días en un mes). En segundo lugar, calculamos el tiempo de ejecución de la query en minutos por mes, que es de 21,6 minutos (72.000 consultas * 18 ms / 1000 ms en un segundo / 60 segundos en un minuto). Ahora podemos calcular el cargo de query de $3.07 ($0.142/minute * 21.6 minutes). Ahora podemos calcular sus costos mensuales para este ejemplo: Metric ingestion costs: $8.93 ($0.002/10,000 * 44.64 million samples) Storage costs: $0.01 ($0.03/GB * 0.25 GB) Query costs: $3.07 ($0.142/minute * 21.6 minutes) Total Amazon Managed Service for Prometheus Monthly charges = $8.93 (metric ingestion) + $0.01 (storage) + $3.07 (query) = $12.01 Prometheus & Grafana | Versión 1 |5 Grafana Introducción Es una solución de visualización de datos de código abierto y operaciones en dashboards. Solo está disponible para US East (N. Virginia) us-east-1 y Europe (Ireland) eu-west-1. Se debe tener en cuenta que para su utilización necesitamos tener Single-Sign-On (SSO) activo. No se puede usar CloudFormation para los workspaces, está en preview. Ofrece una prueba gratuita de 90 días, con hasta cinco usuarios gratuitos por cuenta. Existen dos tipos de licencia de usuario: Editor (Admin) / Viewer. Precio Se cobra por mes, y por licencia. Los Editor/Admin valen 9 dólares por mes, este tiene permisos administrativos, para administrar usuarios, crear y administrar dashboards, alertas, y asignar permisos para acceder a fuentes de datos. Los Viewers valen 5 dólares por mes, tiene acceso de sólo visualización del workspace. Ahora, tengan en cuenta que se cobra por usuario activo, este es al que accede al dashboard al menos una vez al mes. Ejemplo Si tenes 10 Editores y en ese mes solo 3 accedieron al dashboard se les va a cobrar por esos 3, como salen 9 dólares sería un total de 27 dólares y no 90 dólares. Otra cosa a tener en cuenta es que puedes crear muchos workspaces, pero te van a cobrar por separado, si un usuario admin ingresa a dos dashboards se va a cobrar 9 dólares por cada uno. Prometheus & Grafana | Versión 1 |6 Seguridad Para Prometheus y Grafana de la seguridad se encarga AWS, se usa como en todos los servicios que se utilizan el modelo de responsabilidad compartida donde básicamente AWS es responsable de proteger la infraestructura que ejecuta los servicios de AWS. Los auditores externos prueban y verifican la eficacia de la seguridad como parte de los programas de cumplimiento de AWS. Prometheus & Grafana | Versión 1 |7 Step by Step Prometheus 1. 2. Crear el workspace en AWS, en la región que desee monitorear. Dentro del workspace verás el Ingest/Collect, seguiremos sus pasos. 2.1. Si no lo tiene, crear un rol de IAM llamado amp-iamproxy-ingest-role siguiendo esta guía: https://docs.aws.amazon.com/prometheus/latest/userguide/set-up-irsa.html #set-up-irsa-ingest 2.2. Por terminal, crear archivo de configuración “amp_ingest_override_values.yaml” con los valores que les brinda el Ingest/Collect. vim amp_ingest_override_values.yaml 3. Ingresar al Cluster aws eks update-kubeconfig --name <cluster> --profile <profile> 4. Ya dentro del Cluster debemos añadir el repositorio de Prometheus helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 5. Instalamos Prometheus con el archivo yaml anteriormente agregado helm install -f amp_ingest_override_values.yaml prometheus-community/prometheus --generate-name 6. Verificar que los PODs se hayan creado correctamente kubectl get pods -A 7. En caso de que no esté previamente creado añadir el Identity provider 7.1. Desde la consola de AWS ir a Amazon Container Services → Amazon EKS → Clusters. 7.2. Seleccionar el Cluster al que se quiere monitorear. 7.3. En la solapa de Configuration → Details debemos copiar el OpenID Connect provider URL. 7.4. Desde la consola de AWS ir a IAM → Identity Providers → Add provider. 7.5. En la configuración seleccionar OpenID Connect. 7.6. Pegar en Provider URL la URL previamente copiada en el punto 6.3. 7.7. En Audience poner: sts.amazonaws.com 7.8. Add Provider. Prometheus & Grafana | Versión 1 |8 Grafana Prerrequisito Tener SSO (AWS Single Sign-On) Enabled. En caso de no tenerlo: 1. Desde la consola de AWS ir a AWS Single Sign-On y activarlo. 2. Añadir un usuario y un grupo. Luego se podrán añadir más usuarios, lo haremos más adelante en caso de ser necesario. Pasos Teniendo los prerrequisitos, desde la consola de AWS ir a Grafana. 1. Dentro de las regiones soportadas crear el workspace. 2. Añadir el/los usuario/usuarios previamente creados con SSO. 3. Seleccione uno o varios de los usuarios y hágalo administrador (Make admin). 4. Haga click en link de Grafana workspace URL e ingrese con su usuario y contraseña de SSO. Dentro del workspace de Grafana, como administrador, podremos añadir las métricas de prometheus. 1. Vamos al ícono de AWS a la izquierda del panel y hacemos click en Data sources. 2. Seleccionamos Amazon Managed Service for Prometheus y la región donde lo creamos. 3. Seleccionamos el workspace de Prometheus y lo añadimos. Una vez hecho esto, podemos crear un dashboard o importarlo. Al ser el primer dashboard vamos a importar uno. 1. Nos posicionamos en el ícono de “+” a la izquierda del panel y hacemos click en Import. 2. Importaremos desde grafana.com*, solo tenemos que añadir el id (en nuestro caso 11074) y hacer click en Load. En la última casilla seleccionaremos el data source e importamos. *Para obtener mas plantillas de dashboards ingrese en https://grafana.com/grafana/dashboards en la parte de abajo de la página podrá filtrar para elegir el dashboard que más se adecue con lo que quiere. Prometheus & Grafana | Versión 1 |9