本文基于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...


野小白
1 声望0 粉丝