Kubernetes ELK Kurulumu
Elasticsearch, Logstash ve Kibana (ELK) üçlüsü modern uygulamalarda önemli bir rol oynar. Microservices, Containerization, DevOps ve Big Data gibi konuların artmasıyla birlikte bu araçlar daha da popüler hale geldi. Bu yazıda, Kubernetes ortamında ELK kurulumunu anlatmaya çalışacağız.
- Adım: Elasticsearch Kurulumu
Elasticsearch , verilerin saklandığı, indekslendiği ve sorgulandığı bir NoSQL veritabanıdır. İlk adımımız Elasticsearch’in kurulumudur.
Elasticsearch ın resmi Docker imajını kullanarak Elasticsearch’i Kubernetes ortamına yükleyebilirsiniz. Elasticsearch’in resmi Docker imajı docker.elastic.co/elasticsearch/elasticsearch olarak mevcuttur. Bu imajı kullanmak için aşağıdaki komutu kullanabilirsiniz:
kubectl create -f https://download.elastic.co/downloads/eck/2.5.0/all-in-one.yaml
Bu komut, Elasticsearch Operator’ü de içeren All-In-One manifestini indirip yükler. Elasticsearch operator, Elasticsearch kümesinin yönetimi için kolay bir yol sunar.
- Adım: Logstash Kurulumu
Logstash, verileri toplamak, filtrelemek, dönüştürmek ve Elasticsearch’e göndermek için kullanılan açık kaynaklı bir araçtır. Logstash, birden fazla giriş kaynağından (örneğin, syslog, dosya, Beats, Kafka) veri alır ve çeşitli çıkışlara (örneğin, Elasticsearch, Redis, Amazon S3, Kafka) veri iletebilir.
Logstash, bir pod olarak çalışacak şekilde Kubernetes ortamına dağıtılabilir. Bu amaçla, aşağıdaki Kubernetes manifestini kullanabilirsiniz:
apiVersion: v1
kind: ConfigMap
metadata:
name: logstash-config
data:
logstash.yml: |
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
}
}
pipeline.yml: |
---
- pipeline.id: main
path.config: "/usr/share/logstash/pipeline/"
---
apiVersion: v1
kind: Pod
metadata:
name: logstash
spec:
containers:
- name: logstash
image: docker.elastic.co/logstash/logstash:7.14.1
volumeMounts:
- name: config-volume
mountPath: /usr/share/logstash/config/
- name: pipeline-volume
mountPath: /usr/share/logstash/pipeline/
volumes:
- name: config-volume
configMap:
name: logstash-config
- name: pipeline-volume
configMap:
name: logstash-config
defaultMode: 0600
Bu manifest, Logstash pods’unu başlatır ve Elasticsearch’e bağlanır.
- Adım: Kibana Kurulumu
Kibana, Elasticsearch üzerinde depolanan verileri araştırmak, görselleştirmek ve analiz etmek için kullanılan açık kaynaklı bir araçtır. Kibana, Elasticsearch REST API’sine doğrudan erişim sağlayarak verileri keşfetmenizi, görüntülemenizi ve paylaşmanızı sağlar.
Kibana’yı Kubernetes ortamına dağıtmak için aşağıdaki manifesti kullanabilirsiniz:
apiVersion: v1
kind: Service
metadata:
name: kibana
labels:
app: kibana
spec:
type: NodePort
ports:
- port: 5601
protocol: TCP
selector:
app: kibana
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
spec:
selector:
matchLabels:
app: kibana
replicas: 1
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana:7.14
3. Adım: Kibana Kurulumu
Yukarıdaki manifest, Kibana'yı Kubernetes ortamına dağıtmak için kullanılır ve bir hizmet tanımlar. Hizmet, Kibana pod'una yönlendirilen trafiği ele alır ve NodePort olarak yapılandırılır. Bu, dış dünyadaki kullanıcıların Kibana arayüzüne erişmesini sağlar.
4. Adım: ELK Yapılandırması
Şimdi Elasticsearch, Logstash ve Kibana'yı yükledik, ancak henüz çalıştırmadık. Bu üç aracı birbirine bağlamak için bir yapılandırmaya ihtiyacımız var.
Logstash'in Elasticsearch'e veri gönderebileceği şekilde yapılandırılması gerekir. Bu amaçla, Logstash yapılandırmasının input ve output bölümleri aşağıdaki gibi güncellenmelidir:
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
}
}
Bu yapılandırma, Logstash tarafından alınan verilerin Elasticsearch'e gönderilmesini sağlar.
Kibana'nın Elasticsearch'e bağlanabilmesi için de benzer bir yapılandırmaya ihtiyacımız var. Kibana'nın `kibana.yml` dosyasının aşağıdaki gibi düzenlenmesi gerekiyor:
elasticsearch.hosts: [“http://elasticsearch:9200”]
Bu yapılandırma, Kibana'nın Elasticsearch'e bağlanmasını sağlar.
5. Adım: ELK Testi
Şimdi ELK kurulumumuzun doğru bir şekilde yapılandırıldığından emin olmak için bir test yapacağız.
Bir test yapmak için, Logstash'e bir veri kaynağı sağlamalıyız. Örneğin, sistem günlüklerini (syslog) Logstash'e gönderebiliriz.
Sisteminizin syslog konfigürasyonunu şu şekilde ayarlayarak bir test yapabilirsiniz:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
Bu konfigürasyon, `/var/log/messages` dosyasına tüm bilgi seviyelerindeki günlük mesajlarını yazacak şekilde syslog'ü yapılandırır.
Daha sonra, Logstash pods'unu kontrol etmek ve günlükleri alıp almadığını görüntülemek için aşağıdaki komutu kullanabilirsiniz:
kubectl logs <logstash_pod_name>
Eğer günlük mesajları kaydediliyorsa, bu veriler Elasticsearch’e gönderilir ve Kibana arayüzünde görüntülenebilir.
Sonuç:
Bu makalede, Kubernetes ortamında ELK kurulumunu ve yapılandırmasını adım adım anlattık. Her bir aracın ayrı ayrı kurulması ve yapılandırılması gerekiyor. Ancak, doğru yapılandırıldığında, bu araçlar, uygulama günlüklerinin izlenmesi ve analiz edilmesi için mükemmel bir çözüm sunar. Kubernetes ortamında ELK kurulumu, uygulama geliştirme sürecinde büyük bir fayda sağlayabilir.
- Adım: ELK’de Veri Görselleştirme
ELK kurulumu tamamlandıktan sonra, verilerin görüntülenmesi ve analiz edilmesi için Kibana arayüzünü kullanabilirsiniz.
Kibana arayüzünde, Elasticsearch’ten alınan verileri görselleştirebilir ve analiz edebilirsiniz. Kibana, verileri grafikler, histogramlar, haritalar, tablolar ve daha birçok farklı şekilde göstermenize olanak tanır.
Ayrıca, Kibana’yı kullanarak Elasticsearch sorguları oluşturabilir ve filtreleyebilirsiniz. Bu, özellikle büyük veri kümelerinde verileri doğru bir şekilde analiz etmek için önemlidir.
- Adım: ELK Güvenliği
ELK kurulumunun güvenliği çok önemlidir. Verilerinizin korunması için, ELK’nin güvenliği konusunda bazı adımlar atmanız gerekir.
Öncelikle, Kubernetes ortamınızda TLS (Transport Layer Security) kullanmalısınız. TLS, verilerin şifrelenmesini ve güvenli bir şekilde iletilmesini sağlar.
Ayrıca, Elasticsearch ve Kibana’ya erişimi sınırlamalısınız. Bu, özellikle birden fazla kişi ELK arayüzüne erişiyorsa önemlidir.
Son olarak, ELK kurulumunuzu düzenli olarak güncellemelisiniz. Elasticsearch, Logstash ve Kibana sürekli güncelleniyor ve her güncelleme yeni güvenlik yamaları içerebilir.
- ELK Kurulumunun Avantajları
ELK kurulumunun birçok avantajı vardır:
- Uygulama günlükleri kaydedilebilir ve analiz edilebilir.
- Hata ayıklama ve performans sorunlarının tespiti kolaylaşır.
- Veriler, gerçek zamanlı olarak izlenebilir ve analiz edilebilir.
- Veriler, farklı şekillerde görselleştirilebilir ve analiz edilebilir.
- ELK, açık kaynak kodlu olduğu için maliyeti düşüktür.
Bu makalede, Kubernetes ortamında ELK kurulumunu adım adım anlattık. ELK, uygulama geliştirme sürecinde büyük bir fayda sağlayabilir. ELK kurulumunun tamamlanması, uygulama günlüklerinin izlenmesi ve analiz edilmesi için mükemmel bir çözüm sunar. Ayrıca, ELK kurulumunun güvenliği, verilerinizin korunması için çok önemlidir. ELK, herhangi bir organizasyon için yararlı bir araçtır.ELK, uygulama geliştirme sürecinde büyük bir fayda sağlayan açık kaynaklı bir araçtır. Bu makalede, ELK’nin Kubernetes ortamında nasıl kurulacağını ve yapılandırılacağını adım adım anlattık. Kurulumun tamamlanması, uygulama günlüklerinin izlenmesi ve analiz edilmesi için mükemmel bir çözüm sunar. Ayrıca, ELK kurulumunun güvenliği, verilerinizin korunması için çok önemlidir. ELK, herhangi bir organizasyon için yararlı bir araçtır ve uygulamanızın performansını artırmaya yardımcı olabilir. ELK kurulumunu uygulamalarınıza entegre etmek, verilerinizin daha iyi yönetilmesine ve hataların hızla tespit edilmesine yardımcı olabilir.