本文基于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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。