Ola, chámome Eugene, son líder de equipo B2B en Citymobil. Unha das tarefas do noso equipo é apoiar as integracións para pedir un taxi aos socios, e para garantir un servizo estable debemos entender sempre o que está a pasar nos nosos microservizos. E para iso cómpre supervisar constantemente os rexistros.
En Citymobil, usamos a pila ELK (ElasticSearch, Logstash, Kibana) para traballar cos rexistros, e a cantidade de datos que chegan alí é enorme. Encontrar problemas nesta masa de solicitudes que poden aparecer despois do despregue de código novo é bastante difícil. E para a súa identificación visual, Kibana ten unha sección Dashboard.
Hai bastantes artigos sobre Habré con exemplos de como configurar unha pila ELK para recibir e almacenar datos, pero non hai materiais relevantes para crear un panel. Polo tanto, quero mostrar como crear unha representación visual de datos baseada nos rexistros entrantes en Kibana.
axuste
Para que quede máis claro, creei unha imaxe de Docker con ELK e Filebeat. E colocado nun recipiente pequeno
Clonar o repositorio de configuración docker-compose
e configuración de ELK e lánzao co comando docker-compose up
. Non engadir unha chave intencionalmente -d
para ver o progreso da pila ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Se todo está configurado correctamente, veremos unha entrada nos rexistros (quizais non inmediatamente, o proceso de lanzar un contedor con toda a pila pode levar varios minutos):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Polo enderezo localhost:5061
Kibana debería abrir.
O único que necesitamos configurar é crear un patrón de índice para Kibana con información sobre que datos mostrar. Para iso, executaremos unha solicitude de curl ou realizaremos unha serie de accións na interface gráfica.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
Creando un patrón de índice a través da GUI
Para configurar, selecciona a sección Descubrir no menú da esquerda e accede á páxina de creación de patróns de índice.
Facendo clic no botón "Crear patrón de índice", chegamos á páxina de creación de índices. No campo "Nome do patrón de índice", introduza "logstash-*". Se todo está configurado correctamente, a continuación Kibana mostrará os índices que están baixo a regra.
Na páxina seguinte, seleccione o campo clave cunha marca de tempo, no noso caso é @timestamp
.
Isto mostrará a páxina de configuración do índice, pero neste momento non se precisa ningunha outra acción.
Agora podemos ir de novo á sección Descubrir, onde veremos as entradas do rexistro.
panel de control
No menú da esquerda, fai clic na sección Creación do panel e accede á páxina correspondente.
Fai clic en "Crear novo panel" e accede á páxina para engadir obxectos ao panel.
Fai clic no botón "Crear novo" e o sistema pedirache que selecciones o tipo de visualización de datos. Kibana ten un gran número deles, pero veremos a creación dunha representación gráfica da "Barra Vertical" e unha táboa "Táboa de datos". Outros tipos de presentación configúranse de xeito similar.
Algúns obxectos dispoñibles están etiquetados como B e E, o que significa que o formato é experimental ou en probas beta. Co paso do tempo, o formato pode cambiar ou desaparecer completamente de Kibana.
Barra vertical
Para o exemplo da "Barra vertical", creemos un histograma da proporción de estados de resposta satisfactoria e non satisfactoria do noso servizo. Ao final da configuración, obtemos o seguinte gráfico:
Clasificaremos todas as solicitudes cun estado de resposta < 400 como satisfactorias e >= 400 como problemáticas.
Para crear un gráfico de "barras verticales", necesitamos seleccionar unha fonte de datos. Seleccione o patrón de índice que creamos anteriormente.
De forma predeterminada, aparecerá un único gráfico sólido despois de seleccionar unha fonte de datos. Imos configuralo.
No bloque "Cubos", prema o botón "Engadir", seleccione "X-asis" e configure o eixe X. Deixemos de lado as marcas de tempo para a recepción de entradas no rexistro. No campo "Agregación", seleccione "Histograma de data" e no "Campo" seleccione "@timestamp", indicando o campo de hora. Deixemos "Intervalo mínimo" no estado "Automático", e axustarase automaticamente á nosa pantalla.
Premendo no botón "Actualizar", veremos un gráfico co número de solicitudes cada 30 segundos.
Agora imos configurar as columnas ao longo do eixe Y. Agora estamos a mostrar o número total de solicitudes no intervalo de tempo seleccionado.
Cambiemos o valor de "Agregación" a "Cubo de suma", o que nos permitirá combinar datos para solicitudes exitosas e sen éxito. No bloque Bucket -> Agregación, seleccione a agregación por "Filtros" e configure o filtrado por "statusCode >= 400". E no campo "Etiqueta personalizada", indicamos o noso nome do indicador para unha visualización máis comprensible na lenda do gráfico e na lista xeral.
Ao facer clic no botón "Actualizar" baixo o bloque de configuración, obteremos un gráfico coas solicitudes de problemas.
Se fai clic no círculo ao lado da lenda, aparecerá unha xanela na que podes cambiar a cor das columnas.
Agora imos engadir datos sobre solicitudes exitosas ao gráfico. Na sección "Métricas", fai clic no botón "Engadir" e selecciona "Eixe Y".
Na métrica creada, realizamos a mesma configuración que para as solicitudes erróneas. Só no filtro especificamos "statusCode < 400".
Ao cambiar a cor da nova columna, obtemos unha mostra da proporción de solicitudes problemáticas e exitosas.
Facendo clic no botón "Gardar" na parte superior da pantalla e especificando o nome, veremos o primeiro gráfico no Panel.
Táboa de datos
Agora considere a vista tabular "Táboa de datos". Imos crear unha táboa cunha lista de todos os URL que se solicitaron e o número desas solicitudes. Do mesmo xeito que co exemplo da barra vertical, primeiro seleccionamos unha fonte de datos.
Despois diso, aparecerá unha táboa cunha columna na pantalla, que mostra o número total de solicitudes para o intervalo de tempo seleccionado.
Só cambiaremos o bloque "Cubos". Fai clic no botón "Engadir" e selecciona "Dividir filas".
No campo "Agregación", seleccione "Termos". E no campo que apareceu "Campo" seleccione "url.keyword".
Especificando o valor "Url" no campo "Etiqueta personalizada" e facendo clic en "Actualizar", obteremos a táboa desexada co número de solicitudes para cada un dos URL durante o período de tempo seleccionado.
Na parte superior da pantalla, faga clic de novo no botón "Gardar" e especifique o nome da táboa, por exemplo Urls. Volvamos ao panel e vexamos ambas as vistas creadas.
Traballando con Dashboard
Ao crear o panel, só establecemos os parámetros de vista principais na configuración do obxecto de visualización. Non ten sentido especificar datos para filtros en obxectos, por exemplo, "intervalo de datas", "filtrado por axente de usuario", "filtrado por país de solicitude", etc. É moito máis conveniente especificar o período de tempo desexado ou establecer o filtrado necesario no panel de consulta, que se atopa enriba dos obxectos.
Os filtros engadidos neste panel aplicaranse a todo o panel e todos os obxectos de visualización reconstruíranse de acordo cos datos filtrados reais.
Conclusión
Kibana é unha poderosa ferramenta que che permite visualizar calquera dato dun xeito cómodo. Tentei mostrar a configuración dos dous tipos principais de visualización. Pero outros tipos están configurados dun xeito similar. E a abundancia de opcións que deixei "detrás das escenas" permitirache personalizar gráficos de forma moi flexible para atender ás túas necesidades.
Fonte: www.habr.com