Ukládání a analýza logů

Systém pro ukládání a analýzu logů se skládá z následujících komponent: Logstash, Elasticsearch, Kibana.

Logstash

Logstash je otevřený softwarový nástroj pro příjem, analýzu a předzpracování logovacích dat. Logstash je schopný shromažďovat data z různých zdrojů a v různých formátech. Tato data může dále transformovat a odeslat do různých cílových systémů pro další zpracování a analýzu. Logstash je zvlášť užitečný pro shromažďování logů a událostí v reálném čase. Při zpracování dat umí provádět různé operace jako filtraci, výběr specifických atributů, přidávání dalších informací a transformaci dat do jiných formátů.

Elasticsearch

Elasticsearch je vysoce škálovatelný open-source full-textový vyhledávací a analytický nástroj. Je schopen uložit, prohledávat a analyzovat velké množství dat v reálném čase. Je optimalizován pro distribuované prostředí a podporuje mnoho datových typů, od textu až po geografické polohy. Jedním z klíčových vlastností Elasticsearch je jeho schopnost provádět komplexní vyhledávání pomocí dotazů, které mohou zahrnovat plnotextové vyhledávání, vyhledávání podle rozsahu a fuzzy vyhledávání. Tento nástroj je často používán v aplikacích, které vyžadují komplexní vyhledávací funkce, jako jsou webové vyhledávače, logovací a monitorovací systémy, analýza dat, a další.

Kibana

Kibana je open-source nástroj pro vizualizaci dat, který umožňuje uživatelům prozkoumávat a vizualizovat data uložená v Elasticsearch. Kibana poskytuje uživatelské rozhraní pro Elasticsearch a umožňuje uživatelům vytvářet různé druhy vizualizací, včetně grafů, tabulek, map a dalších. Umožňuje také tvorbu interaktivních dashboardů, které mohou zobrazovat mnoho různých vizualizací najednou a mohou být upraveny pro různé potřeby. Kibana také poskytuje nástroje pro správu a monitorování Elasticsearch clusterů, stejně jako nástroje pro prohlížení a analýzu logů a událostí, které byly shromážděny a zpracovány pomocí Logstash. V kombinaci s ostatními nástroji Elastic Stacku (Elasticsearch a Logstash), Kibana nabízí silný nástroj pro shromažďování, zpracování, vyhledávání a vizualizaci dat.

Konfigurace systému

Logové zprávy jsou posílány z Django aplikace do Logstash přes TCP protokol s využitím modulu python-logstash. Nastavení je v souboru base.py.

{
    "logstash": {
        "level": "DEBUG",
        "class": "logstash.TCPLogstashHandler",
        "host": "logstash",
        "port": 5959,
        "version": 1,
        "message_type": "logstash",
        "fqdn": false
    }
}

Níže je konfigurace systému Logstash.

input {
    tcp {
        port => 5959
        codec => json
    }
}

output {
    elasticsearch {
        hosts => ["IP:9200"]
        index => "amcr"
        password => "CHANGE_ME"
        user => "amcr"
    }
}

Input (vstup): - tcp: Tato část konfigurace definuje TCP jako zdroj dat. TCP je protokol, který se používá pro přenos dat z Django (viz výše). - port => 5959: Tato část konfigurace určuje, že Logstash bude naslouchat na portu 5959 pro příchozí data. - codec => json: Tato část konfigurace určuje, že příchozí data budou ve formátu JSON.

Output (výstup): - elasticsearch: Tato část konfigurace definuje Elasticsearch jako místo, kam Logstash pošle zpracovaná data. - hosts => [“IP:9200”]: Toto určuje, že Logstash pošle zpracovaná data na adresu Elasticsearch hostitele, který je na IP adrese IP a na portu 9200. Je doporučeno používat IP adresy serverů v síti (tj. začínající 192.168.) - index => “amcr”: Toto určuje, že zpracovaná data budou uložena v Elasticsearch indexu nazvaném “amcr”. - user => “amcr” a password => “CHANGE_ME”: Tyto části konfigurace definují jméno uživatele a heslo, které Logstash použije pro autentizaci u Elasticsearch.

Elasticsearch

Nastavení Elasticsearch je součástí docker-compose.yml souborů.

  • discovery.type=single-node: Toto nastavení říká Elasticsearch, že se jedná o jediný uzel (node).

  • ES_JAVA_OPTS=-Xms750m -Xmx750m: Tyto Java nastavení definují minimální (-Xms) a maximální (-Xmx) velikost paměti heap, kterou může Elasticsearch využít. V tomto případě je nastaveno na 750 megabajtů.

  • http.host=0.0.0.0: Toto nastavení definuje IP adresu, na které bude Elasticsearch naslouchat příchozím HTTP spojením. Hodnota 0.0.0.0 znamená, že Elasticsearch bude naslouchat na všech síťových rozhraních.

  • xpack.security.enabled=true: Toto nastavení aktivuje X-Pack Security, což je součást Elastic Stacku, která poskytuje různé bezpečnostní funkce, jako je autentizace, autorizace, šifrování komunikace a další.

  • XPACK_MONITORING_ENABLED=false: Toto nastavení deaktivuje X-Pack Monitoring. Monitoring je další součást Elastic Stacku, která poskytuje nástroje pro sledování výkonu a zdraví Elasticsearch clusteru. Cílem nastavení je snížit zatížení systému.

  • v elasticu je potřeba vytvořit amcr_template v Index Management - Templates. Pomocí této template se poté automaticky vytváří nové indexy pomocí politiky, která zajištuje rotaci indexů a jejich případné mazání.

    Zde je vzor amcr_template

{
"settings": {
   "index": {
      "lifecycle": {
      "name": "politika",
      "rollover_alias": "amcr"
      },
      "number_of_replicas": "0",
      "routing": {
      "allocation": {
         "include": {
            "_tier_preference": "data_content"
         }
      }
      }
   }
},
"mappings": {
   "dynamic": "false",
   "dynamic_templates": [],
   "properties": {
      "@timestamp": {
      "type": "date"
      },
      "@version": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "X": {
      "type": "float",
      "ignore_malformed": false,
      "coerce": true
      },
      "Y": {
      "type": "float"
      },
      "Z": {
      "type": "float"
      },
      "adb_ident_cely": {
      "type": "keyword"
      },
      "address": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "app": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "attachment": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "az_error": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "bottom": {
      "type": "float"
      },
      "change": {
      "type": "boolean"
      },
      "class_name": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "close_transaction": {
      "type": "boolean"
      },
      "columns": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "constant": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "count": {
      "type": "long",
      "ignore_malformed": false,
      "coerce": true
      },
      "custom_created": {
      "type": "boolean"
      },
      "custom_message": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "data": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "dj": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "element": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "email": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "error": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "exception": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "field_type": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "file": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "filed": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "form_error": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword"
         }
      }
      },
      "format": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "geom": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "geom_sjtsk": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "geom_system": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "group": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "heslar": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "historie": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "host": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "hv_pk": {
      "type": "long"
      },
      "ident_cely": {
      "type": "keyword"
      },
      "ident_cely_old": {
      "type": "keyword"
      },
      "index": {
      "type": "long"
      },
      "info": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "initial": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "initial_record_pk": {
      "type": "long"
      },
      "instance": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "ip": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "katastr": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "key": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "komponenta": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "large": {
      "type": "boolean"
      },
      "left": {
      "type": "float"
      },
      "level": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "limit": {
      "type": "long"
      },
      "lineno": {
      "type": "long"
      },
      "list": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword"
         }
      }
      },
      "logger_name": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "maximum": {
      "type": "long"
      },
      "message": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "method": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "mime_type": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "name": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "new": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "next_url": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "notification_type": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "number": {
      "type": "long",
      "ignore_malformed": false,
      "coerce": true
      },
      "old": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "option": {
      "type": "boolean"
      },
      "path": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "pian": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "pk": {
      "type": "long"
      },
      "process": {
      "type": "long"
      },
      "project_ident_cely": {
      "type": "keyword"
      },
      "projekt": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "query": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "queue": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "record": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "text"
         }
      }
      },
      "redis": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "request": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "request_type": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "request_url": {
      "type": "text"
      },
      "response": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "result": {
      "type": "boolean"
      },
      "right": {
      "type": "float"
      },
      "s_pk": {
      "type": "long"
      },
      "signal": {
      "type": "boolean"
      },
      "soubor": {
      "type": "text",
      "fields": {
         "Keyword": {
            "type": "keyword"
         }
      }
      },
      "source_url": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "stack_trace": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "status_code": {
      "type": "long"
      },
      "stav": {
      "type": "long"
      },
      "stav_old": {
      "type": "text"
      },
      "subject": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "text": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "thread_name": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "thumb_large": {
      "type": "boolean"
      },
      "thumb_small": {
      "type": "boolean"
      },
      "to": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "top": {
      "type": "float"
      },
      "traceback": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "transaction": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "typ_akce": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "typ_arch_z": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "typ_vazby": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "type": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "update": {
      "type": "boolean"
      },
      "url": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "user_active": {
      "type": "boolean"
      },
      "user_id": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "uuid": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "valid": {
      "type": "boolean"
      },
      "validation_results": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "value": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "warning": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      },
      "zasilat_neaktivnim": {
      "type": "boolean"
      },
      "zaznam": {
      "type": "text",
      "fields": {
         "keyword": {
            "type": "keyword",
            "ignore_above": 256
         }
      }
      }
   }
},
"aliases": {}
}

Použité názvy atributů parametru extra v Django log

Zde je seznam doporučených jmen atributů extra při logování v Django. Je možné použít jakékoliv jiné názvy, ale obsah vyjmenovaných proměnných je indexován a je možné hodnoty dále vyhledávat nebo podle nich třídit výsledky.

Jméno proměnné

typ

adb_ident_cely

Keyword

address

Text

app

Text

attachment

Text

az_error

Text

bottom

Float

class_name

Text

close_transaction

Boolean

columns

Text

constant

Text

count

Long

custom_created

Boolean

custom_message

Text

data

Text

dj

Text

element

Text

email

Text

error

Text

exception

Text

field_type

Text

file

Text

filed

Text

form_error

Text

format

Text

geom

Text

geom_sjtsk

Text

geom_system

Text

group

Text

heslar

Text

historie

Text

hv_pk

Long

change

Boolean

ident_cely

Keyword

ident_cely_old

Keyword

index

Long

info

Text

initial

Text

initial_record_pk

Long

instance

Text

ip

Text

katastr

Text

key

Text

komponenta

Text

large

Boolean

left

Float

limit

Long

list

Text

maximum

Long

method

Text

mime_type

Text

new

Text

next_url

Text

notification_type

Text

number

Long

old

Text

option

Boolean

pian

Text

pk

Long

project_ident_cely

Keyword

projekt

Text

query

Text

queue

Text

record

Text

redis

Text

request_type

Text

request_url

Text

response

Text

result

Boolean

right

Float

s_pk

Long

signal

Boolean

soubor

Text

source_url

Text

status_code

Long

stav

Long

stav_old

Text

subject

Text

text

Text

thumb_large

Boolean

thumb_small

Boolean

to

Text

top

Float

traceback

Text

transaction

Text

typ_akce

Text

typ_arch_z

Text

typ_vazby

Text

update

Boolean

user_active

Boolean

uuid

Text

valid

Boolean

validation_results

Text

value

Text

warning

Text

X

Float

Y

Float

Z

Float

zasilat_neaktivnim

Boolean

zaznam

Text

Seznam vyhrazených jmen

Tyto jména používá Django a neměli by se používat jako atributy extra při logování.

Jméno

typ

@timestamp

Date

@version

Text

host

Text

level

Text

lineno

Long

logger_name

Text

message

Text

name

Text

path

Text

stack_trace

Text

type

Text

url

Text

user_id

Text

process

Long

request

Text

thread_name

Text

Nesmí se také používat jména uvedená v tomto seznamu: https://docs.python.org/3/library/logging.html#logrecord-attributes

Kibana

Níže je konfigurace systému Kibana

server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]

monitoring.ui.container.elasticsearch.enabled: true
monitoring.ui.container.logstash.enabled: true

elasticsearch.username: user
elasticsearch.password: CHANGE_ME
  • server.host: "0.0.0.0": Toto nastavení definuje IP adresu, na které bude Kibana naslouchat příchozím spojením. Hodnota 0.0.0.0 znamená, že Kibana bude naslouchat na všech dostupných síťových rozhraních.

  • server.shutdownTimeout: "5s": Toto nastavení definuje, kolik času má Kibana k dispozici pro bezpečné ukončení své činnosti před tím, než je násilně ukončena. V tomto případě je to nastaveno na 5 sekund.

  • elasticsearch.hosts: [ "http://elasticsearch:9200" ]: Toto nastavení definuje adresy uzlů Elasticsearch, ke kterým se Kibana připojí. V tomto případě je nastavena jedna adresa: http://elasticsearch:9200.

  • monitoring.ui.container.elasticsearch.enabled: true a monitoring.ui.container.logstash.enabled: true: Tyto dvě nastavení aktivují monitorování kontejnerů Elasticsearch a Logstash v rámci uživatelského rozhraní Kibany. Toto umožňuje uživatelům sledovat výkon a zdraví těchto služeb přímo z Kibany.

  • elasticsearch.username: kibana_system a elasticsearch.password: CHANGE_ME: Tyto dva řádky definují jméno a heslo, které Kibana použije pro připojení k Elasticsearch. Toto je součást autentizace a je důležité pro zabezpečení dat.

Nasazení systému

Po nasazení je potřeba sputit následující příkaz a nastavit hesla systémových účtů.

sudo docker exec -t -i $(sudo docker ps -q -f name=swarm_webamcr_elasticsearch) bin/elasticsearch-reset-password -u elastic -i --url http://localhost:9200
sudo docker exec -t -i $(sudo docker ps -q -f name=swarm_webamcr_elasticsearch) bin/elasticsearch-reset-password -u kibana_system -i --url http://localhost:9200

Po nastavení je nutné restartovat kontejner Kibana a vytvořit index amcr s využitím konzole (konzoli lze otevřít kliknutím na odkaz Dev Tool na titulní stránce).

PUT /amcr
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}

Dále je nutné vytvořit roli amcr a uživatele amcr a nastavit mu stejné heslo jako v konfiguračním souboru logstash.conf.

Vytvoření role: Klikněte na ikonu “Management” (správa) v hlavním navigačním panelu. V sekci Stack Management vyberte možnost “Security” a přejděte na Roles (role). Dále klikněte na tlačítko “Create role”. Do pole “Role name” zadejte název nové role a nastavte oprávnění. Nakonec klikněte na tlačítko “Create role” pro uložení role.

Vytvoření uživatelského účtu: Klikněte na “Users” a poté na tlačítko “Create user”. Do polí “Username” a “Password” zadejte jméno uživatele a heslo. Můžete také zadat “Full name”, “Email” a “Password confirmation”. Také můžete rozhodnout, zda chcete, aby uživatel musel změnit heslo při příštím přihlášení. V sekci “Roles” můžete vybrat jednu nebo více rolí, které chcete uživateli přiřadit. Tyto role určují, jaká oprávnění má uživatel v Elasticsearch a Kibana. Nakonec klikněte na tlačítko “Create user” pro uložení uživatele.

Práce s obrazovkou Discover

Obrazovka “Discover” v Kibana je nástroj, který umožňuje prozkoumávat a hledat data uložená v Elasticsearch. Tato obrazovka je často využívána pro zkoumání dat v reálném čase, hledání specifických záznamů, analýzu trendů a pro ladění aplikací.

Při použití obrazovky “Discover” můžete provést následující akce: - Výběr indexu: Nejprve musíte vybrat index, který chcete prozkoumat. To můžete udělat v pravém horním rohu obrazovky. Vyberte index amcr. - Prohlížení a hledání dat: Poté můžete procházet dokumentu ve zvoleném indexu. Každý záznam představuje jeden logový záznam. - Filtrace dat: Můžete vytvářet filtry, které omezí zobrazené záznamy na ty, které splňují určité kritéria. - Prohlížení detailů záznamu: Kliknutím na záznam můžete zobrazit jeho detaily, včetně všech jeho polí a jejich hodnot. - Výběr časového období: V horní části obrazovky můžete vybrat časové období, pro které chcete data zobrazit. - Vytváření a ukládání vyhledávání: Po vytvoření vyhledávání, které chcete znovu použít, můžete toto vyhledávání uložit pro budoucí použití.

Dashboardy

Dashboardy v Kibana představují kolekce vizualizací a interaktivních ovládacích prvků, které jsou uspořádány na jedné stránce a slouží k monitoringu, analýze a vizualizaci dat z Elasticsearch.

Při práci s dashboardy můžete provádět následující kroky: - Vytvoření nového dashboardu: Klikněte na “Dashboard” v hlavním navigačním panelu a pak na “Create new dashboard”. - Přidání vizualizací na dashboard: Klikněte na “Add” a vyberte vizualizaci, kterou chcete přidat. Můžete přidat jakékoli vizualizace, které jste vytvořili v Kibana, včetně grafů, map, tabulek a dalších. - Úprava a uspořádání prvků na dashboardu: Prvky na dashboardu můžete přesouvat, měnit jejich velikost a upravovat jejich nastavení podle vašich potřeb. - Ukládání a sdílení dashboardu: Jakmile jste s dashboardem spokojeni, můžete ho uložit pro budoucí použití. Také ho můžete sdílet s ostatními členy svého týmu nebo vytvořit URL, které lze vložit do jiných webových stránek. - Využití filtrů a interaktivních ovládacích prvků: Dashboardy mohou obsahovat interaktivní ovládací prvky, jako jsou rozevírací seznamy nebo posuvníky, které umožňují filtrovat a prozkoumávat data na různých úrovních granularit. - Zobrazení dat v reálném čase: Některé dashboardy mohou být nastaveny tak, aby zobrazovaly data v reálném čase. To je užitečné pro monitorování výkonu systému, logování událostí nebo jakékoliv jiné aktivity, které vyžadují okamžité zobrazení dat.

Vyčištění databáze

Pokud je v databázi příliš mnoho záznamů, je možné uvolnit místo smazáním všech záznamů s úrovní DEBUG.

POST /amcr/_delete_by_query
{
  "query": {
    "term": {
      "level.keyword": "DEBUG"
    }
  }
}

Kontrola stavu kontejneru

Stav kontejneru může být zkontrolován pomocí příkazu

docker inspect --format='{{json .State.Health}}' <container_name_or_id>

Stav služby ve swarm módu může být zkontrolován příkazem

::

docker service ps <service_name> –no-trunc