Influx DB - un almacenamiento de datos de series temporales.
Grafana - un constructor de gráficos y dashboards para visualizar métricas de series temporales.
Descarga e instala InfluxDB versión 1.x desde https://portal.influxdata.com/downloads/ para tu sistema operativo. (La versión 2.x no está soportada actualmente.)
Inicia InfluxDB
Crea un usuario y una base de datos en InfluxDB usando la CLI de Influx y ejecutando los comandos de abajo:
CREATE DATABASE worldserver
CREATE USER grafana WITH PASSWORD 'grafana'
GRANT READ ON worldserver TO grafana
Descarga e instala Grafana desde https://grafana.com/docs/grafana/latest/installation/
Abre el dashboard en http://localhost:3000
Inicia sesión con el usuario admin y la contraseña admin (los valores por defecto se pueden cambiar en el archivo .ini de Grafana. En versiones más nuevas de Grafana se te pedirá que lo cambies en el primer inicio de sesión.)
Pasa el ratón sobre el engranaje y selecciona Data Sources
Busca InfluxDB y selecciónalo.
Rellena los datos requeridos de abajo.
Name: Influx
Type: InfluxDB
Url: http://localhost:8086
Access: Server
Database: worldserver User: grafana Password: grafana
Pulsa Save & Test, lo que debería darte una casilla verde que dice "Data source is working".
Pasa el ratón sobre el + y selecciona Import e importa cada archivo .json desde /apps/grafana de AzerothCore.
Edita el archivo worldserver.conf
Establece Metric.Enable = 1
Edita Metric.ConnectionInfo con los detalles de conexión (p. ej. "127.0.0.1;8086;worldserver")
Inicia el worldserver; el dashboard debería empezar a recibir valores ahora.
Métricas implementadas (✔) y planificadas (❌):
Nos gustaría recibir ayuda para implementar estas y otras métricas; siéntete libre de enviarnos un pull request.
Hay dos tipos de métricas que se pueden registrar: valores y eventos.
Los valores corresponden a mediciones de una cierta cantidad, como el número de jugadores online o el tiempo del update diff.
Los eventos son algo que ocurre en un instante de tiempo, p. ej., un inicio de sesión de un jugador, el apagado del worldserver, etc...
Para registrar nuevas métricas, llama a METRIC_EVENT o METRIC_VALUE y añade un nuevo gráfico al dashboard.
METRIC_EVENT(category, title, description)
category: cadena arbitraria, tabla donde se almacenan los valores y eventos. Por convención, los logs de eventos deberían llevar el sufijo "_events".
title: nombre del log de evento.
description: información adicional sobre un evento de log.
METRIC_VALUE(category, value)
category: cadena arbitraria, tabla donde se almacenan los valores y eventos. Por convención, los logs de eventos deberían llevar el sufijo "_value".
value: una medición; puede tener uno de los siguientes tipos: bool, std::string, float, double, o cualquier tipo integral (int, int32, uint, etc...).
Ejemplos
// Registering player logins: in WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
METRIC_EVENT("player_events", "Login", pCurrChar->GetName());
// Logging the update diff time: in World::Update(uint32 diff)
METRIC_VALUE("update_time_diff", diff);
Aprende más sobre InfluxDB y Grafana:
Username: grafana
Password: grafana
Initial Organization Name: Grafana
Initial Bucket Name: worldserver
Usa por ejemplo Chronograf para visualizar los datos.
InfluxDB forma parte de un conjunto mayor de proyectos de InfluxData que se integran muy bien con la BD:
Telegraf se puede usar para recopilar métricas del sistema como CPU, I/O, uso de memoria y otros servicios como MySQL, para mostrar esta información junto a las métricas de AC.
Chronograf es una alternativa a Grafana para graficar y visualizar métricas de series temporales.
Kapacitator es capaz de procesar datos en streaming de InfluxDB para proporcionar alertas, disparar eventos, detectar anomalías o transformar datos.