Elasticsearch APM Server Kurulumu ve Uygulama İzleme

Erenalp Tekşen - Jun 10 - - Dev Community

İçindekiler

Elasticsearch Nedir?

Elasticsearch, dağıtılmış, RESTful arama ve analiz motorudur. Büyük miktarda veriyi gerçek zamanlı olarak işleyebilir ve bu veriler üzerinde arama, analiz ve keşif yapılmasına olanak tanır. Açık kaynaklı olan bu platform, ölçeklenebilirlik ve hız açısından oldukça etkilidir.

Kibana Nedir?

Kibana, Elasticsearch veri kümelerini görselleştirmek ve yönetmek için kullanılan açık kaynaklı bir analiz ve görselleştirme platformudur. Kibana, kullanıcılara verileri grafiksel olarak inceleme, raporlama ve sorgulama yetenekleri sunar, böylece verilerden elde edilen içgörüler maksimize edilebilir.

APM Nedir?

Application Performance Management (APM), uygulamaların performansını izlemek ve yönetmek için kullanılan bir teknolojidir. APM araçları, uygulamaların gerçek zamanlı performans metriklerini toplar, analiz eder ve bu bilgileri performansı iyileştirmek ve sorunları çözmek için kullanır.

Elasticsearch Kurulumu

Elasticsearch'i Docker kullanarak kurmak için öncelikle aşağıdaki adımları izleyin:

1. Network Oluşturma:

Docker'da konteynerlar arası iletişim için bir network oluşturun:



docker network create elastic


Enter fullscreen mode Exit fullscreen mode

2. Elasticsearch Konteynerini Başlatma:

Aşağıdaki komut ile Elasticsearch konteynerini başlatın. Bu komut, belirtilen sürümü kullanarak Elasticsearch'i başlatır ve 9200 portundan yayın yapmasını sağlar:



docker run --name elasticsearch --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.13.4


Enter fullscreen mode Exit fullscreen mode

Konteyner başlatıldıktan sonra, güvenlik özelliklerinin otomatik olarak yapılandırıldığını ve gerekli bilgilerin loglarda görülebileceğini belirten bir mesaj alırsınız.



Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.

ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  nZPwrx7p32-Vfib1pP4w

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  6bab504d566749138d5faef454a67afe0449339e768ef9f626bc986d1f90b9d2

ℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjEzLjQiLCJhZHIiOlsiMTkyLjE2OC4zMi4yOjkyMDAiXSwiZmdyIjoiNmJhYjUwNGQ1NjY3NDkxMzhkNWZhZWY0NTRhNjdhZmUwNDQ5MzM5ZTc2OGVmOWY2MjZiYzk4NmQxZjkwYjlkMiIsImtleSI6Im5UZUw0WThCbXphTUdXYlNDNEY4OldTdjFMaDFEU1BDc3piTkl3WFlENWcifQ==

ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjEzLjQiLCJhZHIiOlsiMTkyLjE2OC4zMi4yOjkyMDAiXSwiZmdyIjoiNmJhYjUwNGQ1NjY3NDkxMzhkNWZhZWY0NTRhNjdhZmUwNDQ5MzM5ZTc2OGVmOWY2MjZiYzk4NmQxZjkwYjlkMiIsImtleSI6Im56ZUw0WThCbXphTUdXYlNDNEdJOnBUUnFBQTNPUWNxNUE4X3laMW9yaGcifQ==

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.13.4`


Enter fullscreen mode Exit fullscreen mode

Elasticsearch'in otomatik olarak oluşturduğu kullanıcı adı ve şifre, Kibana'yı ve diğer Elasticsearch düğümlerini bu klüstere bağlamak için kullanılacak kayıt anahtarları loglarda belirtilir.

3. Elasticsearch Konteynerini Yeniden Başlatma:

Konteyneri interaktif moddan çıkarıp arkaplanda çalıştırın:



docker start elasticsearch


Enter fullscreen mode Exit fullscreen mode

4. Elasticsearch'e Erişim Sağlama:

Tarayıcınızda https://localhost:9200 adresine gidin ve kullanıcı adı ile şifrenizi girin. Bu bilgiler, Elasticsearch loglarında sağlanan güvenlik bilgileri arasında yer alır. Başarılı bir giriş sonrası, Elasticsearch cluster'ınızın aktif olduğunu görebilirsiniz.

Kibana Kurulumu ve Doğrulama Kodu Alma

Kibana'yı kurmak ve Elasticsearch cluster'ınıza bağlamak için aşağıdaki adımları takip edin:

1. Kibana Konteynerini Başlatma:



docker run --name kibana --net elastic -p 5601:5601 -d docker.elastic.co/kibana/kibana:8.13.4


Enter fullscreen mode Exit fullscreen mode

2. Kibana'ya Bağlanma:

Tarayıcınızda localhost:5601 adresine gidin ve gerekli yerlere, Elasticsearch kurulumu sırasında loglarda verilen kayıt anahtarını girin.

3. Doğrulama Kodunu Alma:

Kibana'nın başarılı bir şekilde yapılandırılması için doğrulama kodu gerekebilir. Bu kodu almak için:

  • İlk olarak, Kibana konteynerine erişim sağlamak üzere aşağıdaki komutu kullanın:


docker exec -it kibana /bin/bash


Enter fullscreen mode Exit fullscreen mode
  • Konteyner içindeyken, doğrulama kodunu almak için şu komutu çalıştırın:


bin/kibana-verification-code


Enter fullscreen mode Exit fullscreen mode
  • Bu komut, Kibana'nın yapılandırılması sırasında gerekli olan doğrulama kodunu ekrana yazdıracaktır. Bu kodu kopyalayıp, Kibana kurulum ekranında istenen yere yapıştırarak devam edebilirsiniz.

4. Kibana'ya Erişim Sağlama

Doğrulama kodunu girdikten sonra, Kibana arayüzüne tam erişim sağlanır.

APM Server Kurulumu

APM Server'ı kurmak ve yapılandırmak için:

1. APM Server Yapılandırma Dosyası Oluşturma:

Aşağıda örnek bir apm-server.yml yapılandırma dosyası bulunmaktadır. Bu dosyada APM Server'ın Elasticsearch ve Kibana ile nasıl haberleşeceği belirtilmiştir:

Önemli Not: hosts, username, password, ve setup.kibana.host gibi gerekli kısımları kendi ortamınıza göre güncellemeniz gerekmektedir.



apm-server:
  host: "0.0.0.0:8200"
  concurrent_requests: 5
  rum:
    enabled: true

queue.mem.events: 4096
max_procs: 4

output.elasticsearch:
  hosts: ["https://elasticsearch:9200"]
  username: "elastic"
  password: "2Bm-FImtZ=EV4=O62LIA"
  ssl.verification_mode: none


setup.kibana.host: "kibana:5601"
setup.dashboards.enabled: true
setup.template.settings.index.number_of_replicas: 0
apm-server.kibana.enabled: true
apm-server.kibana.host: "kibana:5601"


#logging.level: info
#logging.to_files: false

logging.level: debug
logging.to_files: false


Enter fullscreen mode Exit fullscreen mode

2. APM Server Konteynerini Başlatma:

Yapılandırma dosyanızın dizinine göre, aşağıdaki komutla APM Server konteynerini başlatın:

Önemli Not: Aşağıdaki komutta /home/db/elk/apm-server.yml yolunu, apm-server.yml dosyanızın bulunduğu dizine göre güncellemeniz gerekmektedir.



docker run -d \
  -p 8200:8200 \
  --name=apm-server \
  --net=elastic \
  --user=apm-server \
  --volume="/home/db/elk/apm-server.yml:/usr/share/apm-server/apm-server.yml:ro" \
  docker.elastic.co/apm/apm-server:8.13.4


Enter fullscreen mode Exit fullscreen mode

Konteyner başlatıldıktan sonra, Docker'da çalışan tüm konteynerleri görmek için aşağıdaki komutu kullanabilirsiniz.



java@java:~/elk$ docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
1cfad7834915   docker.elastic.co/apm/apm-server:8.13.4                "/usr/bin/tini -- /u…"   35 minutes ago   Up 35 minutes   0.0.0.0:8200->8200/tcp, :::8200->8200/tcp             apm-server
a7186673415b   docker.elastic.co/kibana/kibana:8.13.4                 "/bin/tini -- /usr/l…"   2 hours ago      Up 2 hours      0.0.0.0:5601->5601/tcp, :::5601->5601/tcp             kibana
3b4e4edd0712   docker.elastic.co/elasticsearch/elasticsearch:8.13.4   "/bin/tini -- /usr/l…"   2 hours ago      Up 2 hours      0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp   elasticsearch


Enter fullscreen mode Exit fullscreen mode

Java APM Agent ile Spring Boot Uygulaması İzleme

1. APM Agent İndirme:

Java APM Agent'ı Elastic'in resmi web sitesinden indirin. Agent, uygulamanızın performans metriklerini toplayacak ve Elastic APM sunucusuna gönderecektir.

2. Java Uygulamasını Agent ile Başlatma:

Java Virtual Machine (JVM) üzerinde çalışan uygulamanıza agent'ı eklemek için aşağıdaki komutu kullanın:

Önemli Not: -Delastic.apm.server_url=http://<your-apm-server-url>:8200 parametresinde, <your-apm-server-url> kısmını kendi APM Server URL'inize göre güncelleyin.



java -javaagent:/home/db/elastic-apm-agent-1.50.0.jar \
-Delastic.apm.service_name=java-apm \
-Delastic.apm.server_url=http://<your-apm-server-url>:8200 \
-Delastic.apm.application_packages=com.teksen \
-Delastic.apm.disable_bootstrap_checks=true \
-jar otel-demo-1.jar


Enter fullscreen mode Exit fullscreen mode

Bu komutta belirtilen parametreler:

  • elastic.apm.service_name: Uygulamanızın APM'de görünecek ismi.
  • elastic.apm.server_url: APM Server'ın URL adresi.
  • elastic.apm.application_packages: İzlenmesi gereken Java paketleri.
  • jar: Çalıştırılacak Java uygulaması.

3. Kibana Üzerinden Uygulamayı İzleme:

APM Agent tarafından toplanan veriler, APM Server üzerinden Kibana'ya iletilir. Kibana'da APM > Services sekmesine giderek uygulamanızın performans metriklerini görselleştirebilir ve analiz edebilirsiniz.

Image description

Sonuç

Bu kılavuz, Elasticsearch, Kibana ve APM Server'ın Docker üzerinde kurulum ve yapılandırmasını adım adım ele alır. Bu araçlar, uygulama performansını izlemek ve operasyonel verimliliği artırmak için esastır. Kurulumdan sonra, Java ile Spring Boot uygulamasının performans izlemesi sağlanmış ve bu süreçlerin nasıl yönetileceği gösterilmiştir. Elastic Stack teknolojilerinin etkin kullanımı, modern uygulama yönetiminde kritik bir rol oynar.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .