Ciao, mi chiamo Eugene, sono un team leader B2B di Citymobil. Uno dei compiti del nostro team è supportare le integrazioni per ordinare un taxi dai partner e, per garantire un servizio stabile, dobbiamo sempre capire cosa sta succedendo nei nostri microservizi. E per questo è necessario monitorare costantemente i registri.
In Citymobil, utilizziamo lo stack ELK (ElasticSearch, Logstash, Kibana) per lavorare con i log e la quantità di dati in arrivo è enorme. Trovare problemi in questa massa di richieste che possono apparire dopo la distribuzione di nuovo codice è abbastanza difficile. E per la loro identificazione visiva, Kibana ha una sezione Dashboard.
Ci sono parecchi articoli su Habré con esempi su come impostare uno stack ELK per ricevere e archiviare dati, ma non ci sono materiali rilevanti sulla creazione di un dashboard. Pertanto, voglio mostrare come creare una rappresentazione visiva dei dati basata sui log in entrata in Kibana.
registrazione
Per renderlo più chiaro, ho creato un'immagine Docker con ELK e Filebeat. E messo in un contenitore un piccolo
Clona il repository di configurazione docker-compose
e impostazioni ELK e avvialo con il comando docker-compose up
. Intenzionalmente non aggiungendo una chiave -d
per vedere l'avanzamento dello stack ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Se tutto è configurato correttamente, vedremo una voce nei log (forse non immediatamente, il processo di avvio di un container con l'intero stack potrebbe richiedere diversi minuti):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
A localhost:5061
Kibana dovrebbe aprirsi.
L'unica cosa che dobbiamo configurare è creare un modello di indice per Kibana con informazioni su quali dati visualizzare. Per fare ciò, eseguiremo una richiesta curl o eseguiremo una serie di azioni nell'interfaccia grafica.
$ 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"}}'
Creazione di un modello di indice tramite la GUI
Per configurare, seleziona la sezione Scopri nel menu a sinistra e accedi alla pagina di creazione del modello di indice.
Cliccando sul pulsante "Crea pattern indice", arriviamo alla pagina di creazione dell'indice. Nel campo "Index pattern name", inserisci "logstash-*". Se tutto è configurato correttamente, sotto Kibana verranno mostrati gli indici che rientrano nella regola.
Nella pagina successiva, seleziona il campo chiave con un timestamp, nel nostro caso lo è @timestamp
.
Verrà visualizzata la pagina delle impostazioni dell'indice, ma al momento non sono richieste ulteriori azioni da parte nostra.
Ora possiamo andare di nuovo alla sezione Scopri, dove vedremo le voci di registro.
Performance modelli/hostess
Nel menu a sinistra, fai clic sulla sezione Creazione dashboard e accedi alla pagina corrispondente.
Fai clic su "Crea nuova dashboard" e accedi alla pagina per l'aggiunta di oggetti alla dashboard.
Fai clic sul pulsante "Crea nuovo" e il sistema ti chiederà di selezionare il tipo di visualizzazione dei dati. Kibana ne ha un gran numero, ma cercheremo di creare una rappresentazione grafica della "Barra verticale" e una "Tabella dati" tabulare. Altri tipi di presentazione sono configurati in modo simile.
Alcuni oggetti disponibili sono etichettati B ed E, il che significa che il formato è sperimentale o in beta testing. Nel tempo, il formato potrebbe cambiare o scomparire completamente da Kibana.
Barra verticale
Per l'esempio "Barra verticale", creiamo un istogramma del rapporto tra stati di risposta riusciti e non riusciti del nostro servizio. Al termine delle impostazioni, otteniamo il seguente grafico:
Classificheremo tutte le richieste con uno stato di risposta < 400 come riuscite e >= 400 come problematiche.
Per creare un grafico a "barre verticali", dobbiamo selezionare un'origine dati. Seleziona il modello di indice che abbiamo creato in precedenza.
Per impostazione predefinita, dopo aver selezionato un'origine dati viene visualizzato un singolo grafico a tinta unita. Sistemiamolo.
Nel blocco "Buckets", premi il pulsante "Add", seleziona "X-asis" e imposta l'asse X. Mettiamo da parte i timestamp delle voci nel registro lungo di esso. Nel campo "Aggregation", selezionare "Date Histogram", e nel "Field" selezionare "@timestamp", indicando il campo dell'ora. Lasciamo "Intervallo minimo" nello stato "Auto" e si adatterà automaticamente al nostro display.
Cliccando sul pulsante "Aggiorna", vedremo un grafico con il numero di richieste ogni 30 secondi.
Ora impostiamo le colonne lungo l'asse Y. Ora stiamo visualizzando il numero totale di richieste nell'intervallo di tempo selezionato.
Modifichiamo il valore "Aggregation" in "Sum Bucket", che ci consentirà di combinare i dati per le richieste riuscite e non riuscite. Nel blocco Bucket -> Aggregation selezionare l'aggregazione per "Filtri" e impostare il filtro per "statusCode >= 400". E nel campo "Etichetta personalizzata", indichiamo il nostro nome dell'indicatore per una visualizzazione più comprensibile nella legenda sul grafico e nell'elenco generale.
Facendo clic sul pulsante "Aggiorna" sotto il blocco delle impostazioni, otterremo un grafico con le richieste problematiche.
Se fai clic sul cerchio accanto alla legenda, verrà visualizzata una finestra in cui puoi modificare il colore delle colonne.
Ora aggiungiamo i dati sulle richieste riuscite al grafico. Nella sezione "Metriche", fai clic sul pulsante "Aggiungi" e seleziona "Asse Y".
Nella metrica creata, eseguiamo le stesse impostazioni delle richieste errate. Solo nel filtro specifichiamo "statusCode < 400".
Modificando il colore della nuova colonna, otteniamo una visualizzazione del rapporto tra richieste problematiche e riuscite.
Facendo clic sul pulsante "Salva" nella parte superiore dello schermo e specificando il nome, vedremo il primo grafico sulla Dashboard.
Tabella dati
Consideriamo ora la vista tabulare "Tabella dati". Creiamo una tabella con un elenco di tutti gli URL richiesti e il numero di tali richieste. Come per l'esempio della barra verticale, selezioniamo prima un'origine dati.
Successivamente, sullo schermo verrà visualizzata una tabella con una colonna, che mostra il numero totale di richieste per l'intervallo di tempo selezionato.
Cambieremo solo il blocco "Secchi". Fare clic sul pulsante "Aggiungi" e selezionare "Dividi righe".
Nel campo "Aggregazione", seleziona "Termini". E nel campo apparso "Campo" seleziona "url.keyword".
Specificando il valore "Url" nel campo "Etichetta personalizzata" e cliccando su "Aggiorna", otterremo la tabella desiderata con il numero di richieste per ciascuno degli URL per il periodo di tempo selezionato.
Nella parte superiore dello schermo, fai nuovamente clic sul pulsante "Salva" e specifica il nome della tabella, ad esempio URL. Torniamo alla Dashboard e vediamo entrambe le visualizzazioni create.
Lavorare con Dashboard
Durante la creazione del dashboard, impostiamo solo i parametri della vista principale nelle impostazioni dell'oggetto di visualizzazione. Non ha senso specificare i dati per i filtri negli oggetti, ad esempio "intervallo di date", "filtro per agente utente", "filtro per paese della richiesta", ecc. È molto più conveniente specificare il periodo di tempo desiderato o impostare il filtro necessario nel pannello delle query, che si trova sopra gli oggetti.
I filtri aggiunti in questo pannello verranno applicati all'intero dashboard e tutti gli oggetti di visualizzazione verranno ricostruiti in base ai dati effettivi filtrati.
conclusione
Kibana è un potente strumento che ti consente di visualizzare qualsiasi dato in modo conveniente. Ho provato a mostrare l'impostazione dei due principali tipi di display. Ma altri tipi sono configurati in modo simile. E l'abbondanza di impostazioni che ho lasciato "dietro le quinte" ti consentirà di personalizzare in modo molto flessibile i grafici in base alle tue esigenze.
Fonte: habr.com