Elastic Cloud on Kubernetes (ECK) Nedir ve Nasıl Kurulur?

Elastic Cloud on Kubernetes (ECK); Elasticsearch, Kibana, APM Server, Beats, Enterprise Search, Elastic Agent, Elastic Maps Server ve Logstash gibi Elastic Stack uygulamalarını Kubernetes'te otomatik olarak dağıtmak, provision etmek, yönetmek ve orkestre etmek için Elastic tarafından sağlanan resmi operatördür.

Kubernetes operator pattern'i temel alan ECK, Kubernetes'in dağıtım, ölçeklendirme ve otomasyon yeteneklerini kullanarak Elastic Stack uygulamalarının kurulumunu ve yönetimini kolaylaştırır. Böylece, Elastic Stack uygulamalarını Kubernetes'in YAML dosyalarıyla dağıtabilirsiniz. Bu da, Elastic Stack uygulamalarını Kubernetes'te dağıtmayı ve yönetmeyi daha kolay ve esnek hale getirir.

1. ECK Stack Kurulumu

ECK sayesinde, Elastic Stack uygulamalarını manual dağıtmak yerine hazırladığımız YAML manifest dosyalarıyla Kubernetes cluster'ımız için otomatik olarak kurabiliriz.

ECK ile kurabileceğimiz uygulamaların listesi şu şekildedir:

  • Elasticsearch,
  • Kibana,
  • Logstash,
  • Beats,
  • Elastic Agent,
  • APM Server,
  • Enterprise Search,
  • Elastic Maps Server,

Bu yazıda bir Kubernetes cluster üzerinde baştan sona nasıl bir ECK stack kuracağımızı anlatacağız. Yapacağımız kurulumlar ise şu şekilde olacak:

  1. ECK Operator ve CRD kurulumu
  2. kube-state-metrics kurulumu
  3. Elasticsearch kurulumu
  4. Kibana kurulumu
  5. Fleet Server kurulumu
  6. Elastic Agent kurulumu
  7. APM Server kurulumu

1.1. ECK Operator ve CRD Kurulumu

ECK ile uygulamalarımızı kurabilmek için öncelikle operator ve CRD kurulumunu yapmamız gerekiyor.

Operator ve CRD kurulumunu tamamlamak için sadece şu iki manifesti kurmanız yeterlidir. Aşağıdaki komutları direkt cluster'ınızda çalıştırabilirsiniz:

kubectl create -f https://download.elastic.co/downloads/eck/2.9.0/crds.yaml
kubectl apply -f https://download.elastic.co/downloads/eck/2.9.0/operator.yaml
💡
ECK operator, varsayılan olarak elastic-system namespace'inde çalışır. Bundan sonraki yapacağımız kurulumlarda elastic-system veya default namespace'lerini kullanmak yerine, o workload'lar için özel bir namespace seçmeniz önerilir.

Kurulum hazırlıklarımız burada tamamlandı. Eğer ECK operator loglarını görmek isterseniz şu komutu çalıştırabilirsiniz:

kubectl -n elastic-system logs -f statefulset.apps/elastic-operator

1.2. Kube State Metrics Kurulumu

kube-state-metrics (KSM), Kubernetes API Server'ı dinleyen ve resource'ların durumu hakkında metricler üreten bir servistir.

Kubernetes cluster'ımızdaki resource'ların metriclerini Kibana dashboard üzerinde gösterebilmek için de kube-state-metrics kullanacağız. Bunun için Kibana manifesti içindeki fleet paketlerine kubernetes isimli paketi ekleyeceğiz (şimdilik bu başlıkta bir şey yapmaya gerek yok).

xpack.fleet.packages:
  - name: kubernetes
    version: latest

Geriye sadece kube-state-metrics kurulumu kalıyor. Bunun için aşağıdaki linkte yer alan repodaki examples/standard dizinini kubectl apply komutu ile çalıştırabilirsiniz.

GitHub - kubernetes/kube-state-metrics: Add-on agent to generate and expose cluster-level metrics.
Add-on agent to generate and expose cluster-level metrics. - GitHub - kubernetes/kube-state-metrics: Add-on agent to generate and expose cluster-level metrics.
kubectl apply -f examples/standard
💡
Mevcut manifestlerde namespace kube-state-metrics ayarlandığı için kurulum sonrası fleet içindeki kubernetes paketinin configlerinde tüm adreslerin sonuna internal haberleşme için .kube-state-metrics.svc eklemeniz gerekiyor. Fakat öğrenme aşamasında bununla uğraşmamak için bu namespace'i default olarak değiştirebilirsiniz.

1.3. Elasticsearch Kurulumu

Elasticsearch, Apache Lucene altyapısı üzerinde geliştirilmiş, dağıtık bir arama ve analiz altyapısıdır. Büyük miktarda metin, sayısal ve JSON verisini hızlı ve kolay bir şekilde aramanıza ve analiz etmenize olanak tanır.

ECK içindeki rolü, Elastic Stack'in veri depolama ve arama katmanı olarak hizmet etmektir.

ECK ile, Elasticsearch'ü Kubernetes'e kolayca dağıtıp yönetebiliriz. Bunun için, aşağıdaki manifesti kubectl apply komutu ile çalıştırabilirsiniz.

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: elasticsearch
  namespace: default
spec:
  version: 8.9.1
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false
    volumeClaimTemplates:
      - metadata:
          name: elasticsearch-data
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 40Gi

Bu manifest ile, 40Gi depolama alanına sahip ve sadece 1 node'dan oluşan bir Elasticsearch kurulumu yapmış oluyoruz.

💡
Kubernetes cluster'ınızda en az 2GiB boş belleğe sahip herhangi bir Kubernetes node yoksa, pod, Pending durumunda kalır. Kaynak gereksinimleri ve bunların nasıl yapılandırılacağı hakkında daha fazla bilgi için Manage compute resources sayfasını ziyaret edebilirsiniz.

Kurulumun durumunu görmek için kubectl get elasticsearch komutunu çalıştırabilirsiniz. Yaklaşık 3-4dk sonra Elasticsearch çalışır hale gelecektir.

# kubectl get elasticsearch
NAME             HEALTH    NODES     VERSION   PHASE         AGE
elasticsearch    green     1         8.9.1     Ready         1m

Ekstra kontrol olarak pod listesinden elasticsearch podlarını izleyebilir ve detayları ile loglarını kontrol edebilirsiniz.

kubectl get pods --selector='elasticsearch.k8s.elastic.co/cluster-name=elasticsearch'
NAME                         READY   STATUS    RESTARTS   AGE
elasticsearch-es-default-0   1/1     Running   0          238s
kubectl logs -f elasticsearch-es-default-0

Elasticsearch'e erişebilmek ve istek atabilmek için ise otomatik olarak kurulan service resource'u kullanabilirsiniz.

# kubectl get service elasticsearch-es-http
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
elasticsearch-es-http   ClusterIP   10.15.251.145   <none>        9200/TCP   34m

elastic isimli kullanıcıya ait parola ise yine Secret resource olarak cluster'a eklenecektir. Parolayı açığa çıkarmak için base64 decode kullanabilirsiniz.

PASSWORD=$(kubectl get secret elasticsearch-es-elastic-user -o go-template='{{.data.elastic | base64decode}}')

Ve artık Kubernetes cluster'ınız içinde elasticsearch servisine istek atabilirsiniz:

curl -u "elastic:$PASSWORD" -k "https://elasticsearch-es-http:9200"
{
  "name" : "elasticsearch-es-default-0",
  "cluster_name" : "quickstart",
  "cluster_uuid" : "XqWg0xIiRmmEBg4NMhnYPg",
  "version" : {...},
  "tagline" : "You Know, for Search"
}
💡
-k parametresini kullanarak sertifika doğrulamanın devre dışı bırakılması önerilmez ve yalnızca test amacıyla kullanılmalıdır. Kendi sertifikanızı kurmak için Setup your own certificate sayfasını ziyaret edebilirsiniz.

Eğer cluster dışından erişmek istiyorsanız service'i kubectl port-forward ile dışarı açmalısınız.

kubectl port-forward service/elasticsearch-es-http 9200

1.4. Kibana Kurulumu

Kibana, Elastic Stack'in görselleştirme ve raporlama aracıdır. Büyük miktarda veriyi görselleştirmenize ve analiz etmenize olanak tanır.

ECK içindeki rolü, Elastic Stack'in görselleştirme ve raporlama katmanı olarak hizmet etmektir. ECK, Kibana'yı Kubernetes'e dağıtır ve yönetir. Bu, Kibana'yı Kubernetes'teki diğer uygulamalarla birlikte kolayca dağıtmanızı ve yönetmenizi sağlar.

ECK ile, Kibana'yı Kubernetes'e kolayca dağıtıp yönetebiliriz. Bunun için, aşağıdaki manifesti kubectl apply komutu ile çalıştırabilirsiniz.

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
spec:
  version: 8.9.2
  count: 1
  elasticsearchRef:
    name: elasticsearch

Gördüğünüz gibi Kibana'yı çalıştırmak ECK ile bu kadar basit. Fakat bu yazıda diğer kurulumlarıda yapacağımız için aşağıdaki manifesti kullanacağız. Böylece APM Server, Fleet Server ve kubernetes metrics paketinin de kurulumunu aradan çıkarmış olacağız.

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
  namespace: default
spec:
  version: 8.9.1
  count: 1
  elasticsearchRef:
    name: elasticsearch
  http:
    service:
      spec:
        type: NodePort
  config:
    xpack.fleet.agents.elasticsearch.hosts: ["https://elasticsearch-es-http.default.svc:9200"]
    xpack.fleet.agents.fleet_server.hosts: ["https://fleet-server-agent-http.default.svc:8220"]
    xpack.fleet.packages:
      - name: system
        version: latest
      - name: elastic_agent
        version: latest
      - name: fleet_server
        version: latest
      - name: kubernetes
        version: latest
      - name: apm
        version: latest
    xpack.fleet.agentPolicies:
      - name: Fleet Server on ECK policy
        id: eck-fleet-server
        namespace: default
        monitoring_enabled:
          - logs
          - metrics
        unenroll_timeout: 900
        package_policies:
        - name: fleet_server-1
          id: fleet_server-1
          package:
            name: fleet_server
      - name: Elastic Agent on ECK policy
        id: eck-agent
        namespace: default
        monitoring_enabled:
          - logs
          - metrics
        unenroll_timeout: 900
        package_policies:
          - name: system-1
            id: system-1
            package:
              name: system
          - name: kubernetes-1
            id: kubernetes-1
            package:
              name: kubernetes
          - name: apm-1
            id: apm-1
            package:
              name: apm
            inputs:
            - type: apm
              enabled: true
              vars:
              - name: host
                value: cluster 
              - name: url
                value: https://apm-server-apm-http.default.svc:8200

Kurulumun durumunu görmek için kubectl get kibana komutunu çalıştırabilirsiniz. Yaklaşık 3-4dk sonra Kibana çalışır hale gelecektir.

# kubectl get kibana
NAME      HEALTH    NODES     VERSION   PHASE         AGE
kibana    green     1         8.9.1     Ready         1m

Ekstra kontrol olarak pod listesinden kibana podlarını izleyebilir ve detayları ile loglarını kontrol edebilirsiniz.

kubectl get pods --selector='kibana.k8s.elastic.co/cluster-name=kibana'

Kibana'ya erişebilmek ve istek atabilmek için ise otomatik olarak kurulan service resource'u kullanabilirsiniz. Kullandığımız manifest dosyasında, Kibana'ya kolay erişebilmek için tipini NodePort ayarladık.

# kubectl get service kibana-es-http
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kibana-es-http       NodePort    10.15.251.138   <none>        5601:30123/TCP   18m

elastic isimli kullanıcıya ait parola ise yine Secret resource olarak cluster'a eklenecektir. Parolayı açığa çıkarmak için base64 decode kullanabilirsiniz.

kubectl get secret elasticsearch-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo

Kibana arayüzüne girebilmek için https://<node-ip-adresi:node-port> adresini ziyaret edip (port ve node ip adresi sizde değişebilir), elastic kullanıcı adı ve secrettan elde ettiğiniz parolayı kullanabilirsiniz.

1.5. Fleet Server Kurulumu

Fleet, Kibana'da Elastic Agent'ların merkezi olarak kurulmasına, yönetilmesine ve konfigüre edilmesine yönelik web tabanlı bir kullanıcı arayüzüdür. Fleet Server ise agent'ların verilerini toplayan ve policy'leri yöneten merkezdir.

ECK içindeki rolü, Elastic Stack agentlarının dağıtımını ve yönetimini otomatikleştirmektir.

ECK ile, Fleet Server'ı Kubernetes'e kolayca dağıtıp yönetebiliriz. Bunun için, aşağıdaki manifesti kubectl apply komutu ile çalıştırabilirsiniz.

apiVersion: agent.k8s.elastic.co/v1alpha1
kind: Agent
metadata:
  name: fleet-server
  namespace: default
spec:
  version: 8.9.1
  kibanaRef:
    name: kibana
  elasticsearchRefs:
  - name: elasticsearch
  mode: fleet
  fleetServerEnabled: true
  policyID: eck-fleet-server
  deployment:
    replicas: 1
    podTemplate:
      spec:
        serviceAccountName: fleet-server
        automountServiceAccountToken: true
        securityContext:
          runAsUser: 0

Manifestte belirttiğimiz fleet-server service account'u ise şu manifestle oluşturabilirsiniz:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: fleet-server
  namespace: default

Cluster role manifestimiz ise şu şekilde olacak:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: fleet-server
rules:
- apiGroups: [""]
  resources:
  - pods
  - namespaces
  - nodes
  verbs:
  - get
  - watch
  - list
- apiGroups: ["coordination.k8s.io"]
  resources:
  - leases
  verbs:
  - get
  - create
  - update

Son olarak ise Cluster Role Binding ile rolü aktif ediyoruz:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: fleet-server
subjects:
- kind: ServiceAccount
  name: fleet-server
  namespace: default
roleRef:
  kind: ClusterRole
  name: fleet-server
  apiGroup: rbac.authorization.k8s.io

Ayrıca Fleet Server'ın Kibana ile bağlantısını sağlayabilmek ve gerekli agentları kurabilmek için Kibana manifestine şu satırları zaten eklemiştik:

config:
    xpack.fleet.agents.elasticsearch.hosts: ["https://elasticsearch-es-http.default.svc:9200"]
    xpack.fleet.agents.fleet_server.hosts: ["https://fleet-server-agent-http.default.svc:8220"]
    xpack.fleet.packages:
      - name: system
        version: latest
      - name: elastic_agent
        version: latest
      - name: fleet_server
        version: latest
      - name: kubernetes
        version: latest
      - name: apm
        version: latest
    xpack.fleet.agentPolicies:
      ***
      ***
      ***

Bir sonraki başlıkta Elastic Agent kurulumunu da tamamladıktan sonra Kibana Fleet sayfasından baktığımızda artık Fleet server'ı, policy'leri ve agent'ları görebileceğiz.

Ayrıca kubectl get agent komutuyla agent'ın durumunu da inceleyebilirsiniz.

# kubectl get agent
NAME            HEALTH   AVAILABLE   EXPECTED   VERSION   AGE
fleet-server    green    1           1          8.9.1     17m

1.6. Elastic Agent Kurulumu

Elastic Agent, bir host üzerindeki logları, metricleri ve diğer veri türlerini izlemenin ve toplamanın basitleştirilmiş ve birleştirilmiş yoludur. Tek bir agent ile, izlemeyi tüm altyapınız genelinde dağıtmayı daha kolay ve daha hızlı hale getirirsiniz.

Aşağıdaki şemada gösterildiği gibi, Elastic Agent, dağıtıldığı hostu izleyebilir ve doğrudan dağıtımın mümkün olmadığı uzak hizmetlerden ve donanımlardan veri toplayıp iletebilir.

Elastic Agent, Beat agentlarının ayrı ayrı yaptığı işlemleri tek bir agent altında toplar. Bu nedenle filebeat, metricbeat ve heartbeat beat'lerini tek tek hostlara dağıtmak yerine tek bir elastic agent ile işlerimizi kolaylaştırabiliriz.

Bu sebeple bu yazıda Elastic Agent kurulumu yapacağız. Yine de siz beat ve Logstash ile yola devam etmek veya arasındaki farkları görmek isterseniz şu linkleri inceleyebilirsiniz:

Beats and Elastic Agent capabilities | Fleet and Elastic Agent Guide [8.10] | Elastic
Run Logstash on ECK | Elastic Cloud on Kubernetes [2.9] | Elastic

ECK ile, Elastic Agent'ı Kubernetes'e kolayca dağıtıp yönetebiliriz. Bunun için, aşağıdaki manifesti kubectl apply komutu ile çalıştırabilirsiniz.

apiVersion: agent.k8s.elastic.co/v1alpha1
kind: Agent
metadata:
  name: elastic-agent
  namespace: default
spec:
  version: 8.9.1
  kibanaRef:
    name: kibana
  fleetServerRef:
    name: fleet-server
  mode: fleet
  policyID: eck-agent
  daemonSet:
    podTemplate:
      spec:
        serviceAccountName: elastic-agent
        automountServiceAccountToken: true
        hostNetwork: true
        dnsPolicy: ClusterFirstWithHostNet
        securityContext:
          runAsUser: 0

Bu manifestte, agent'ın Kibana ve Fleet Server ile bağlantısını da sağlıyoruz. Ayrıca agent'ın cluster'ın çalıştığı node'lardaki dns kayıtlarına erişebilmesi için hostNetwork: true ve dnsPolicy: ClusterFirstWithHostNet parametrelerini de ekliyoruz.

Manifestte belirttiğimiz elastic-agent service account'u ise şu manifestle oluşturabilirsiniz:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: elastic-agent
  namespace: default

Cluster role manifestimiz ise şu şekilde olacak:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: elastic-agent
rules:
- apiGroups: [""]
  resources:
  - '*'
  verbs:  
  - '*'
- apiGroups: ['*']
  resources:
  - '*'
  verbs:  
  - '*'
- nonResourceURLs:
  - "/metrics"
  verbs:
  - get

Son olarak ise Cluster Role Binding ile rolü aktif ediyoruz:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: elastic-agent
subjects:
- kind: ServiceAccount
  name: elastic-agent
  namespace: default
roleRef:
  kind: ClusterRole
  name: elastic-agent
  apiGroup: rbac.authorization.k8s.io

Ardından kubectl get agent komutuyla agent'ın durumunu da inceleyebilirsiniz.

# kubectl get agent
NAME            HEALTH   AVAILABLE   EXPECTED   VERSION   AGE
elastic-agent   green    1           1          8.9.1     12m
fleet-server    green    1           1          8.9.1     34m

1.7. APM Server Kurulumu

APM Server, Elastic Stack'in Application Performance Monitoring (APM) aracıdır. Uygulamaların performansını, kullanılabilirliğini ve hatalarını ölçmek, izlemek ve analiz etmek için kullanılır.

ECK içindeki rolü, uygulamalardan verileri toplamak ve Elastic Stack uygulamalarına göndermektir. Böylece uygulamanızı Kibana üzerinden kolayca monitor edebilirsiniz.

ECK ile, Elastic Agent'ı Kubernetes'e kolayca dağıtıp yönetebiliriz. Bunun için, aşağıdaki manifesti kubectl apply komutu ile çalıştırabilirsiniz.

apiVersion: apm.k8s.elastic.co/v1
kind: ApmServer
metadata:
  name: apm-server
  namespace: default
spec:
  version: 8.9.1
  count: 1
  elasticsearchRef:
    name: elasticsearch
  kibanaRef:
    name: kibana
  http:
    service:
      spec:
        type: NodePort

Ardından Kibana arayüzünde yer alan Observability modülüne giriyoruz.

APM menüsündeki Install Agent seçeneğini kullanarak APM Server'ın doğru kurulup kurulmadığını kontrol ediyoruz.

APM Server'ın kurulu olduğunu doğruladıktan sonra sayfanın biraz altında yer alan programlama dillerinden uygulamanıza uygun olanı seçip talimatları görüntüleyebilirsiniz.

Örneğin, bir Java uygulaması için öncelikle jar uzantılı agent dosyasını indiriyoruz ve ardından çalıştırmamız gereken uygulama dosyasını şu benzeri komutla çalıştırıyoruz:

java -javaagent:elastic-apm-agent-1.42.0.jar \
-Delastic.apm.service_name=kerteriz-blog \
-Delastic.apm.secret_token=Gvel51D63c56381fDPYYEod6 \
-Delastic.apm.server_url=https://45.32.157.120:31526 \
-Delastic.apm.environment=dev-env \
-Delastic.apm.application_packages=net.kerteriz \
-Delastic.apm.verify_server_cert=false \
-jar kerteriz-blog-app.jar

Bu komutta elde etmeniz gereken değerler secret_token ve server_url değerleridir:

  • secret_token değerini cluster'a otomatik olarak eklenen apm-server-apm-token secret değerinin base64 decode edilmiş değerini kullanacağız.
kubectl get secret apm-server-apm-token -o go-template='{{.data.elastic | base64decode}}'
  • server_url değeri ise uygulamanızın APM Server'a bağlanacağı adrestir. Biz service'i NodePort tipinde açtığımız için (bkz. yukarıdaki manifest) node IP adresi ve port'unu kullanacağız.
# kubectl get svc
NAME                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
apm-server-apm-http              NodePort    10.108.250.139   <none>        8200:31526/TCP      21s

Ve artık uygulamamız başladığında bağlantının kurulduğunu console üzerinden teyit ediyoruz.

Ardından kaldığımız yerden devam ederek Check agent status ile agent'ın çalıştığını doğrulayıp Launch APM ile service paneline ulaşabilirsiniz.

Ve süper! Artık uygulamamızı Kibana üzerinden takip edebileceğiz.

Üstelik APM, uygulamanız dahilinde çok detaylı ve faydalı metricleri size sunarak gelişmiş seviyede debug etmenizi de sağlayacaktır.

2. ECK Metriclerine Genel Bakış

ECK ile, tüm farklı uygulamaları ayrı ayrı kurup tüm hostlara agent'ları deploy etmekle uğraşmak yerine, basit birkaç yaml manifest ile tüm cluster geneline uygulamalarımızı kolayca dağıtabildik. Üstelik tüm bileşenler birbirleriyle uyum halinde çalışacak şekilde ayarlanmış oldu.

Kurulumları hızlıca tamamladıktan sonra artık hangi metriclere ve verilere erişebildiğimize özetle bakalım. Fakat öncesinde tüm detaylı metriclere erişebilmemiz için yapmamız gereken son bir şey kaldı.

Kibana ana sayfasında yer alan Management alanından Monitor the stack linkine tıklayınız.

Ardından sırayla "Or, set up with self monitoring" ve "Turn on monitoring" seçeneklerini seçiniz.

İşte şimdi detaylıca hangi metriclere erişebileceğimizi inceleyelim.

2.1. Kubernetes Cluster Metricleri

Fleet sayesinde kubernetes integration paketini kurduktan sonra kube-state-metrics ve elastic-agents sayesinde cluster'a dair çok detaylı veriler elde edebiliyoruz.

Kubernetes cluster'ınıza dair metriclere ulaşabilmek için Kibana ana sayfasından önce Analytics, ardından Dashboard kısmına girerek Kubernetes Overview sayfasına ulaşabilirsiniz.

Kubernetes Overview sayfasında tüm cluster genelinde oldukça detaylı metricler ve veriler sizi bekliyor olacak.

Kubernetes cluster'ınız ile ilgili daha birçok detaylı veriye en üstte yer alan bağlantılardan ulaşabilirsiniz.

Kubernetes cluster'ınız için erişebileceğiniz veriler sadece Analytics ile de kısıtlı değil. Daha fazla metric ve veri için önce Observability, ardından Inventory sayfasına ulaşabilirsiniz.

Ve açılan sayfadan detaylı verileri inceleyebilirsiniz.

2.2. Host Metricleri

ECK stack, sadece Kubernetes cluster için değil, aynı zamanda hostlarınız içinde metricleri toplayıp size sunar.

Host'lara dair metriclere ulaşabilmek için Kibana ana sayfasından önce Analytics, ardından Dashboard kısmına girerek Host Overview sayfasına ulaşabilirsiniz.

Host Overview sayfasında hostlarınızla alakalı sistem verilerini görebilirsiniz.

Hostlar için erişebileceğiniz veriler sadece Analytics ile de kısıtlı değil. Daha fazla metric ve veri için önce Observability, ardından Hosts sayfasına ulaşabilirsiniz.

Ve açılan sayfadan detaylı verileri inceleyebilirsiniz.

2.3. Agent Metricleri

ECK stack ile kurduğunuz agent'ların durumlarını izlemenizde kritiktir. Bu sebeple yine birçok kullanışlı veri görselleştirilmiş.

Agent'lara dair metriclere ulaşabilmek için Kibana ana sayfasından önce Analytics, ardından Dashboard kısmına girerek [Elastic Agent] Overview sayfasına ulaşabilirsiniz.

Host Overview sayfasında hostlarınızla alakalı sistem verilerini görebilirsiniz.

2.4. Log Kayıtları

Kibana'nın bizler için sunduğu görsel grafiklerin dışında Elasticsearch üzerindeki tüm kayıtlara da yine Kibana aracılığıyla ulaşabilirsiniz.

Elasticsearch üzerindeki loglara erişebilmek için ana sayfadaki Analytics kutucuğuna tıklayın ve ardından Discover seçeneğini seçiniz. Ardından logları detaylıca görebilir, filtreleyebilir ve inceleyebilirsiniz.

3. Özet

ECK, Elastic Cluster on Kubernetes, ile bir stackte yer alması Elasticsearch, Kibana, APM Server ve beat'ler gibi bileşenler ve agentları tek tek kurmak ve yapılandırmak yerine basit birkaç manifest ile tüm stack'i ayağa kaldırmış olduk. Üstelik çok detaylı ve önemli veriler halihazırda toplanıp gösterilir hale geldi.

ECK, bu yazıdaki özetin dışında daha birçok parametre ve yapılandırma ögesine sahip. Eğer incelemek isterseniz aşağıdaki linkten döküman sayfasına gidebilirsiniz.

Overview | Elastic Cloud on Kubernetes [2.9] | Elastic

Ayrıca bu yazıdaki tüm manifest dosyalarına aşağıdaki repodan da erişebilirsiniz.

GitHub - ismetbalat/eck-starter: Elastic Cloud on Kubernetes (ECK) Starter Manifests
Elastic Cloud on Kubernetes (ECK) Starter Manifests - GitHub - ismetbalat/eck-starter: Elastic Cloud on Kubernetes (ECK) Starter Manifests

Eğer sormak istediğiniz sorular varsa aşağıdaki yorum alanından iletebilirsiniz.