Kibana version:
v 8.17.3
Elasticsearch version:
APM Server version:
apm-server/stable,now 8.17.3 amd64
APM Agent language and version:
1.52.2
I'm not sure if this is the correct place to ask but I prompted chatgpt long enough to not figure it out so I've basically exhausted all other resources.
The logic for my configuration is as follows:
- I have an apm server set up which follows the default configuration.
- Multiple apm agents on different hosts are sending data to this server.
- It works fine but the indexes are placed together, which I don't want.
- I want to be able to separate the indexes according to the service name.
- How do I achieve this?
When I try adding something like this to the end of the apm-server.yaml configuration it doesn't work
output.elasticsearch:
hosts: ["https://elasticsearch:9200"]
indices:
- index: "apm-{service.name}-%{[processor.event]}-%{+yyyy.MM.dd}"
when.contains:
service.name: "my-service"
- index: "apm-{service.name}-%{[processor.event]}-%{+yyyy.MM.dd}"
when.contains:
service.name: "other-service-name"
It gives me a log such as this.
{
"function":"github.com/elastic/apm-server/internal/beater/api.apmMiddleware.LogMiddleware.func1.1",
"file.name":"middleware/log_middleware.go",
"file.line":62,
"message":"request accepted",
"service.name":"apm-server",
"url.original":"/intake/v2/events",
"http.request.method":"POST",
"user_agent.original":"apm-agent-java/1.52.2 (xxxxxx 2025.12.0.02)",
"source.address":"x.x.x.x",
"http.request.id":"f45432d8-bd0d-45fc- b4c5-3f6cc6983266",
"event.duration":10016348694,
"http.request.body.bytes":8056,
"http.response.status_code":202,
"ecs.version":"1.6.0"
}
This is my properties file
service_name=my-service
application_packages=com.x.x
server_url=http://elastic-server-ip:8200
As you can see the service.name I've set in my configuration isn't even used
but If I remove part I specified above from the apm-server.yaml then it uses the service.name