本文基於windows 11系統進行組件實例的部署(非fleet),Elasticsearch、Kibana版本均採用目前最新的版本8.13.0。
*注意:Elastic的OpenTelemetry Collector Exporter在 7.13 中被棄用,取而代之的是Elastic Observability(OTLP)中對OpenTelemetry Line Protocol的原生支持。這導致一些配置項的不同,具體版本請查看官方文檔。
Step 1:部署Elasticsearch
啓動ES之前,先運行命令設置各組件的密碼,Kibana默認連接ES時需要用户名密碼,否則會閃退。
.\bin\elasticsearch-setup-passwords.bat interactive
這裏建議用PowerShell以終端的形式運行啓動腳本,這樣可以看到報錯日誌。
config目錄下的elasticsearch.yml配置文件無需其他更改,輸入.\bin\elasticsearch.bat啓動ES,可訪問http://localhost:9200查看是否啓動成功。
Step 2:部署Kibana
啓動Kibana之前,先在配置文件中修改ES的密碼:
elasticsearch.username: "kibana_system"
elasticsearch.password: "password"
輸入命令 .\bin\kibana.bat啓動Kibana,這時已經可以通過http://127.0.0.1:5601進入Kibana界面
Step 3:部署apm-server
首先,在Kibana上添加集成APM:Add integrations > Elastic APM,按照提示步驟操作即可。
通過.\install-service.ps1安裝apm-server,如果因為權限問題報錯,可嘗試:
PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service.ps1
配置文件apm-server.yml
apm-server:
host: "127.0.0.1:8200"
output.elasticsearch:
hosts: ["localhost:9200"]
username: "elastic"
password: "password"
運行./apm-server -e啓動apm-server,-e可以顯示運行日誌。
在Kibana的APM頁面也可以檢測APM是否啓動成功:Check APM Server status
Step 4:Java項目集成APM Agent和OpenTelemetry
只需要下載elastic-apm-agent-1.48.1.jar和opentelemetry-javaagent-1.28.0.jar到本地,添加以下VM options
-javaagent:path/to/opentelemetry-javaagent-1.28.0.jar
-Dotel.traces.exporter=otlp
-Dotel.exporter.otlp.endpoint=http://127.0.0.1:8200
-Dotel.resource.attributes=service.name=service-name,env=local
-javaagent:path/to/elastic-apm-agent-1.48.1.jar
-Delastic.apm.service_name=local-apm-service
-Delastic.apm.application_packages=local-package
-Delastic.apm.server_url=http://127.0.0.1:8200
otel.traces.exporter:表示traces跟蹤日誌的協議
otel.exporter.otlp.endpoint:日誌收集器的地址端口
elastic.apm.server_url:日誌收集器APM的地址端口
啓動後可以在Kibana的APM頁面最下面檢測APM Agent是否啓動成功。
此時,調用項目接口,就可以在Kibana上看到traces記錄。
總結
整個搭建過程,Elasticsearch提供了數據的存儲,Kibana作為數據頁面的展示,Kibana集成APM後可以收集APM agent作為數據收集器提供的數據,而OpenTelemetry則負責在項目系統內生成數據。
參考文檔
https://www.elastic.co/guide/en/observability/current/apm-ins...