Merhaba,
Bu makale Elastic APM server’ın kubernetes üzerinde barındırılmasını ve PHP Apm agent kurgulanmasını içermektedir,
Öncelikle makale boyunca bitnami repoları kullanılacaktır,
Elasticsearch deploy ederek başlıyoruz,
ELASTICSEARCH;
Makale öncesi aldığım notlarda; Elastic ingest’in açık olması gerekmekte, heapsize ayarları 512m olarak tanımlandı ve http max content length 256m olarak düzenlendi,
kibanaEnabled: true
---
extraConfig:
http:
max_content_length: 256m
---
heapSize: 512m
---
ingest:
enabled: true
---
kibana:
elasticsearch:
hosts:
- '{{ include "elasticsearch.coordinating.fullname" . }}'
port: 9200
İlgili values.yaml için GitHub reposuna erişebilirsiniz,
helm upgrade –install elastic bitnami/elasticsearch -f values.yaml

helm kurulumu sonrası yukarıdaki görsel gibi podların çalıştığını gözlemleyebilirsiniz, aynı zamanda kibana için servisini LoadBalancer’a çevirebilirsiniz,
APM-SERVER;
APM server için;
https://artifacthub.io/packages/helm/elastic/apm-server
helm install my-apm-server elastic/apm-server --version 7.15.0
Kurulum sonrası config map editliyoruz,
k edit cm apm-apm-server-config
output.elasticsearch:
hosts: ["http://elastic-coordinating-only.efk-apm.svc.cluster.local:9200"]
sonrasında Kibana üzerinde kontrolleri yapabiliriz,
hosts olarak ne yazacağınızı bilemiyorsanız, dnsutils kullanarak servis ismini bulabilirsiniz,
https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

KIBANA;
Kibana üzerinde APM erişimi sağlayanız, eğer APM server status sorun yaşıyorsanız logları inceleyebilirsiniz,

PHP – APM Agent;
Php üzerindeki verileri alabilmemiz için, k8s üzerinde helm aracılığı ile kurgulanan php deploymentına ajanı kurgulamamız gerekiyor,
Bizde bulunan yapıdaki sıralama aşağıdaki gibi;
Öncelikle Dockerfile dosyasında ilgili agent kurulumunu yapıyoruz;
RUN curl -L https://github.com/elastic/apm-agent-php/releases/download/v1.3.1/apm-agent-php_1.3.1_all.deb -o /tmp/apm-agent-php_1.3.1_all.deb
RUN dpkg -i /tmp/apm-agent-php_1.3.1_all.deb

Deploy çıktığınızda ajanın kurulduğunu gözlemleyebilirsiniz,

Şimdi agentın veri gönderebilmesi için ConfigMap editlemesi gerçekleştireceğiz,

Bunun için 4 adım mevcut,
1- Config hazırlanıyor (output) 2-configmap yaratılıyor, 3-K8s üzerinde extravolume yaratılıyor, 4- extravolume mount ediliyor,
1- Config içeriğini php için daha önceden hazırladığımız ConfigMap içerisine giriyoruz (server_url ve service name bu kısımda belirleniyor)

2- Extradeploy adımında elastic-apm configini deploy sırasında bulup yukarıda tanımladığımız tüm içeriği bu kısma basıyoruz,

3- Elastic APM agent için volume yaratıyoruz,

4- Elastic APM agent için yaratılan volume mount ediliyor,

Son olarak veri geliş gidişleri için yine kibana üzerindeki APM aracılığı ile gözlemleyebilirsiniz,

