Ինչ եք իմանում 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-ի ինտեգրման պատճառով։