Cómo configurar Graphite con Statsd en Ubuntu 16.04
Hola, hoy vamos a mostrarte la instalación y configuración de Graphite y Statsd en Ubuntu 16.04 LTS. En resumen, Graphite es un sistema de gráficos en tiempo real altamente escalable que proporciona visualización y almacenamiento en tiempo real de datos numéricos de series de tiempo. Esto significa que Graphite requiere otras aplicaciones para recopilar y transferir los puntos de datos. El proyecto Graphite en sí se compone de algunos componentes diferentes, cada uno de los cuales tiene un propósito específico y enfocado donde el componente más visible y dinámico de una instalación Graphite es la aplicación web Graphite. Graphite-Web, una aplicación web basada en Django que genera gráficos y cuadros de mando. Proporciona una interfaz flexible para diseñar gráficos. Puede combinar diferentes tipos de métricas, controlar el etiquetado, las fuentes, los colores y las propiedades de la línea, puede cambiar el tamaño y manipular los datos donde sea necesario. El segundo componente principal de Graphite son los demonios de procesamiento métrico de carbono. Una sola configuración de Graphite tendrá uno o más demonios de Carbon que son responsables de manejar los datos enviados por otros procesos que recopilan y transmiten estadísticas. Mientras que el tercer componente principal de Graphite es la biblioteca de bases de datos de series de tiempo Whisper, que es muy flexible y permite almacenar datos de series de tiempo con gran detalle. Crea diferentes archivos con diferentes niveles de detalle, de modo que en el uso práctico, la información se degrada con gracia a resoluciones más bajas cuando pasa ciertos umbrales de antigüedad configurados.
Graphite en sí no se preocupa por la recolección de datos, por lo que para este propósito usaremos un programa de recolección que es Statsd, que se utilizará para enviar otros datos a Graphite para su procesamiento. El servicio StatsD recopilará todos los datos a medida que lleguen, los agregará y luego enviará puntos de datos resumidos a Graphite en el período de tiempo que espera.
Prerrequisitos
Antes de pasar a la instalación de Graphite y Statsd, debemos asegurarnos de que el sistema esté completamente actualizado, ya que muchos de los paquetes Graphite necesarios están disponibles en el repositorio predeterminado de Ubuntu.
Iniciemos sesión en su servidor Ubuntu 16.04 LTS usando las credenciales de usuario root o sudo y ejecutemos el siguiente comando para actualizar su sistema.
# apt-get update -y
Una vez que su sistema esté actualizado, pase primero a la instalación de los paquetes Graphite.
Instalación de Graphite en Ubuntu 16
La instalación de Graphite se ha hecho bastante simple debido a su disponibilidad de repositorio en Ubuntu. Ejecutemos el siguiente comando para instalar Graphite junto con todos los componentes que son la aplicación web, un backend de almacenamiento llamado Carbon y la biblioteca de base de datos llamada whisper.
# apt-get install graphite-web graphite-carbon
Una vez que presione ‘y’ y presione la tecla Enter, su proceso de instalación comenzará, mientras que durante el proceso de instalación se le preguntará si desea que Carbon elimine los archivos de la base de datos o no. Elijamos «No» aquí para no destruir tus estadísticas.
Deje que el proceso de instalación se complete, luego de eso tenemos que configurar algunos parámetros necesarios para que Graphite funcione correctamente.
Configuración de la base de datos para Django
La aplicación web Graphite es una aplicación Django Python que necesita almacenar sus datos en lugar de carbono y la biblioteca de base de datos whisper. De forma predeterminada, está configurado para usar la base de datos SQLite3, pero sería mucho mejor usar PostgreSQL. Instalemos PostgreSQL junto con sus paquetes dependientes usando el siguiente comando.
# apt-get install postgresql libpq-dev python-psycopg2
Los paquetes de PostgreSQL junto con las bibliotecas de Python necesarias para interactuar con Graphite se instalarán después de escribir ‘Y’ y presionar la tecla «Enter».
Ahora conéctese a PostgreSQL usando el usuario ‘postgres’ y cree un nuevo usuario y base de datos para usar con Graphite usando los siguientes comandos.
# sudo -u postgres psql
# CREATE USER graphite WITH PASSWORD 'passw0rd';
# CREATE DATABASE graphite WITH OWNER graphite;
Configuración de la aplicación web Graphite
Después de configurar la base de datos, ahora configuraremos Graphite abriendo su archivo de configuración de la aplicación web para actualizar su ‘SECRET_KEY’ que debe establecerse en una cadena única larga y aleatoria para usar como clave secreta para esta instalación. Esta clave se usa para el procesamiento de hashes usados en tokens de autenticación, middleware CRSF, almacenamiento de cookies, etc. Debe establecerse de manera idéntica entre instancias si se usa detrás de un balanceador de carga.
# vim /etc/graphite/local_settings.py
SECRET_KEY = 'secure_key'
Establezca su zona horaria local (el valor predeterminado de Django es América / Chicago) Si sus gráficos parecen estar desplazados por un par de horas, entonces probablemente deba establecerse explícitamente en su zona horaria local.
TIME_ZONE = 'Europe/London'
Descomente la autenticación REMOTE_USER
USE_REMOTE_USER_AUTHENTICATION = True
Luego, en las configuraciones de la base de datos, actualice los parámetros de acuerdo con el usuario y la base de datos creados previamente en PostgreSQL como se muestra.
DATABASES = { 'default': { 'NAME': 'graphite', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'graphite', 'PASSWORD': 'passw0rd', 'HOST': '127.0.0.1', 'PORT': '' } }
Guarde y cierre el archivo de configuración pero NO OLVIDE EJECUTAR ‘manage.py syncdb’ DESPUÉS DE CONFIGURAR UNA NUEVA BASE DE DATOS.
Sincronización de base de datos Graphite
Ejecute el siguiente comando para sincronizar la base de datos, donde se realizará el siguiente número de operaciones como se muestra en la imagen y se le pedirá que cree una cuenta de superusuario para la base de datos.
# graphite-manage migrate auth
Operations to perform: Apply all migrations: auth Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK
Esto evitará el error de autenticación del usuario, ahora podemos ejecutar el siguiente comando para sincronizar la base de datos.
# graphite-manage syncdb
Operations to perform: Synchronize unmigrated apps: account, cli, render, whitelist, metrics, url_shortener, dashboard, composer, events, browser Apply all migrations: admin, contenttypes, tagging, auth, sessions Synchronizing apps without migrations: Creating tables... Creating table account_profile Creating table account_variable Creating table account_view Creating table account_window Creating table account_mygraph Creating table dashboard_dashboard Creating table events_event Creating table url_shortener_link Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying admin.0001_initial... OK Applying sessions.0001_initial... OK Applying tagging.0001_initial... OK You have installed Django's auth system, and don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): Email address: keshifs@gmail.com Password: Password (again): Superuser created successfully.
Configurando Carbon
Ahora vamos a iniciar la configuración de Carbon, el backend de almacenamiento Graphite abriendo el archivo de configuración del servicio. Pero antes de eso, habilitemos el servicio de carbono para que se inicie en el arranque haciendo cambios en el siguiente archivo.
# vim /etc/default/graphite-carbon
# Change to true, to enable carbon-cache on boot CARBON_CACHE_ENABLED=true
Guarde y cierre este archivo y luego abra el archivo de configuración de Carbon usando su editor favorito para realizar algunos cambios menores en él.
# vim /etc/carbon/carbon.conf
# Habilite la rotación diaria de registros. Si está desactivado, el carbón se volverá a abrir automáticamente
# el archivo si se ha girado fuera de lugar (por ejemplo, mediante el demonio logrotate)
ENABLE_LOGROTATION = True
Guarde y cierre el archivo y continúe con el siguiente paso para configurar los esquemas de almacenamiento.
Configuraciones de esquemas de almacenamiento
Ahora, abra el archivo de esquema de almacenamiento para indicarle a Carbon cuánto tiempo almacenar los valores y qué tan detallados deben estar allí.
#vim /etc/carbon/storage-schemas.conf
Hay dos secciones predeterminadas, agreguemos otra con los parámetros mencionados a continuación que usaremos más adelante.
[test] pattern = ^test. retentions = 5s:5m,1m:1h,5m:1d
Entonces, cuando solicitamos información de Graphite, devolverá información del archivo más detallado que mide el período de tiempo que solicitamos. Guardemos y cerremos el archivo y veamos los métodos de agregación de almacenamiento. Podemos definir la forma en que queremos que ocurra la agregación en un archivo llamado almacenamiento-agregación.conf . Copie el archivo del directorio de ejemplos de Carbon en nuestro directorio de configuración de Carbon usando el siguiente comando.
# cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
# vim /etc/carbon/storage-aggregation.conf
[min] pattern = .min$ xFilesFactor = 0.1 aggregationMethod = min [max] pattern = .max$ xFilesFactor = 0.1 aggregationMethod = max [sum] pattern = .count$ xFilesFactor = 0 aggregationMethod = sum [default_average] pattern = .* xFilesFactor = 0.5 aggregationMethod = average
Guarde y cierre el editor de archivos usando ‘: wq!’ e inicie el servicio Carbon ejecutando lo siguiente.
# systemctl start carbon-cache
Configurar el servidor web Apache
Aquí vamos a instalar el servidor web Apache para usar la interfaz web de Graphite, ejecutemos el siguiente comando para instalar Apache y sus componentes de grafito dependientes.
# apt-get install apache2 libapache2-mod-wsgi
Una vez que se complete la instalación, desactive el archivo de host virtual para que no entre en conflicto.
# a2dissite 000-default
Site 000-default disabled. To activate the new configuration, you need to run: service apache2 reload
Antes de volver a cargar Apache2, copie el archivo de host virtual Graphite Apache en los sitios disponibles, habilite el archivo de host virtual y luego vuelva a cargar el servicio web Apache utilizando el siguiente comando.
# cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
# a2ensite apache2-graphite
# systemctl reload apache2
Instalar y configurar Statsd
Graphite junto con sus componentes principales se ha instalado y configurado correctamente, ahora instalaremos StatsD para usar statsd, necesitamos instalar node.js usando el siguiente comando.
# apt-get install nodejs -y
Luego instale ‘git’ y clone un repositorio de Statsd en el directorio ‘/ opt’ de su sistema.
# apt-get install git
# cd /opt
# git clone git://github.com/etsy/statsd.git
Una vez instalado, cree un nuevo archivo dentro del directorio statsd clonado e inserte las siguientes líneas en él.
# vim /opt/statsd/localConfig.js
{ graphitePort: 2003, graphiteHost: "127.0.0.1", port: 8125 }
Guarde y cierre el archivo y reinicie los siguientes servicios.
# systemctl restart carbon-cache
Luego, muévase al directorio statsd y ejecute el siguiente comando.
# cd /opt/statsd
# node ./stats.js ./localConfig.js
Eso es todo, pasemos a su interfaz web.
Acceso a la interfaz web Graphite
Todos los paquetes necesarios se han instalado con las configuraciones necesarias. Ahora es el momento de abrir su navegador web para interactuar con la interfaz web Graphite. Simplemente use su FQDN o la IP del servidor y verá su página web como se muestra a continuación.
http://your_server_ip
Inicie sesión desde la esquina superior derecha, utilizando las credenciales que configuró anteriormente. A continuación, desplácese hacia abajo en el árbol y expanda las matrices, vea buscar y verifique el gráfico deseado como se muestra a continuación.
Desde Graphite Composer puede elegir un rango del gráfico que desea ver. Del mismo modo, desde el panel de control, puede agregar o eliminar los gráficos personalizados de su elección.
Conclusión
En este artículo, ha aprendido sobre la instalación y configuración de Graphite y StatsD en Ubuntu 16.04. Graphite es un sistema de gráficos en tiempo real altamente escalable. Como usuario, escribe una aplicación que recopila datos numéricos de series de tiempo que le interesa graficar y la envía al backend de procesamiento de Graphite, carbon, que almacena los datos en la base de datos especializada de Graphite. Luego, los datos se pueden visualizar a través de las interfaces web de Graphite. Graphite está diseñado para manejar datos numéricos de series de tiempo. Por lo tanto, se recomienda encarecidamente a cualquier persona que desee realizar un seguimiento de los valores de cualquier cosa a lo largo del tiempo que utilice Graphite. Gracias por seguir nuestra publicación, no dude en comunicarse con nosotros en caso de cualquier dificultad o dejar sus valiosas sugerencias.