Sobes.tech
Middle

Ինչ եք իմանում ELK և EFK ճկուն շերտի մասին։

sobes.tech AI

Պատասխան AI-ից

Elastic Stack (ELK) — դա գործիքների հավաքածու է կենտրոնական հավաքագրման, վերլուծության և տեսողականացման համար։ EFK — դրա տարբերակն է, որը փոխարինում է Logstash-ին Fluentd-ով։

ELK-ի բաղադրիչները:

  • Elasticsearch: Տարածված որոնողական և վերլուծական շարժիչ՝ Lucene-ի վրա հիմնված։ Օգտագործվում է լոգների պահպանում, ինդեքսավորում և որոնում։
  • Logstash: Տվյալների մշակման գիծ։ Ստանում է տվյալներ տարբեր աղբյուրներից, ֆիլտրում, փոխում և ուղարկում Elasticsearch։
  • Kibana: Վեբ-միջերես՝ տվյալների տեսողականացման համար, որոնք պահվում են Elasticsearch-ում։ Позволяет строить панельներ, գրաֆիկներ և իրական ժամանակի վերլուծություն։

Ստեկի մեջ հաճախ ընդգրկվում են Beats — թեթև գործակալներ սերվերներից տվյալներ հավաքելու համար (Filebeat՝ լոգների համար, Metricbeat՝ մետրիկների համար և այլն):

EFK-ի բաղադրիչները:

  • Elasticsearch: Դրա նման, օգտագործվում է պահպանում և որոնում։
  • Fluentd: Լոգների կոնսոլիդատոր՝ բաց աղբյուրից։ Կատարում է նույն ֆունկցիաները, ինչ Logstash-ը, բայց հաճախ համարվում է ավելի թեթև և ունի ավելի ճկուն պլագինների համակարգ։ Ավելին, շատ տարածված է կոնտեյներային միջավայրերում (Kubernetes)։
  • Kibana: Դրա նման, օգտագործվում է տեսողականացման համար։

Հիմնական գործառույթներն ու առավելությունները:

  • Լոգների կենտրոնականացում: Լոգների հավաքագրում բազմաթիվ սերվերներից և ծրագրերից՝ մեկ վայրում։
  • Որոնում և վերլուծություն: Արագ որոնում մեծ տվյալների ծավալում և բարդ վերլուծություն։
  • Հսկողություն և ծանուցումներ: Թենդենցների տեսողականացում, անոմալիաների հայտնաբերում և ծանուցումների կարգավորում։
  • Սխալների վերացում: Սպասարկման խնդիրների և սխալների արագ հայտնաբերում։
  • Մասշտաբայնություն: Հորիզոնտալ մասշտաբավորում բոլոր բաղադրիչներում։

Logstash և Fluentd-ի համեմատություն:

Գծագրություն Logstash Fluentd
Կառուցվածք JVM-ի վրա հիմնված, մոնոլիտային Ruby/C-ի վրա հիմնված, մոդուլային, պլագիններով
Հիշողություն Սովորաբար ավելի բարձր սպառում Ավելի քիչ պահանջներ հիշողության նկատմամբ
Արդյունավետություն Լավ, բայց կարող է լինել ծանր Սովորաբար ավելի արդյունավետ բարձր բեռների դեպքում
Միջավայր Տрадиոնալ սերվերային միջավայրեր, VM Ավելին՝ հատկապես կոնտեյներային միջավայրերում (Docker, K8s)
Պլագիններ Շատ տեղադրված պլագիններ Կոմունիտեի կողմից շատ պլագիններ
Կարգավորումներ Իրենց սինտաքսը JSON կամ YAML

Օրինակ օգտագործման:

# Filebeat կոնֆիգուրացիայի օրինակ՝ Docker լոգների հավաքագրում Kubernetes-ում
- module: docker
  containers:
    ids: '*'
    stream: 'stdout' # Միայն stdout-ից լոգների հավաքում
    paths:
      - /var/lib/docker/containers/${data.docker.container.id}/*.log

  processors:
  - add_kubernetes_metadata:
      in_cluster: true # Կոնտեյներային մետադատությունների ավտոմատ ավելացում
# Fluentd կոնֆիգուրացիայի օրինակ՝ լոգների ուղարկում Elasticsearch
<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<match kubernetes.**>
  @type elasticsearch
  host elasticsearch-logging.default.svc.cluster.local # Elasticsearch հասցե
  port 9200
  logstash_format true
  logstash_prefix kubernetes
  <buffer>
    flush_interval 5s
  </buffer>
</match>

ELK և EFK ընտրությունը կախված է ենթակառուցվածքի առանձնահատկություններից, գործիքների նախընտրություններից և կատարողականության և ռեսուրսների պահանջներից։ Կոնտեյներային միջավայրերում հաճախ EFK-ը նախընտրելի տարբերակ է՝ Fluentd-ի թեթևության և Kubernetes-ի ինտեգրման պատճառով։