Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: add apmcaddy #510

Closed
theodesp opened this issue Apr 19, 2019 · 7 comments
Closed

Feature: add apmcaddy #510

theodesp opened this issue Apr 19, 2019 · 7 comments

Comments

@theodesp
Copy link

theodesp commented Apr 19, 2019

Is your feature request related to a problem? Please describe.
Caddy server is a very popular HTTPS server used in many production sites. However it has not performance retrospection out of the box.

Describe the solution you'd like
I would like to have Caddy server track APM stats and visualize in Kibana.

Describe alternatives you've considered
There is no alternative APM tracing options for Caddy at the moment.

Additional context
I have opened a relevant ticket here to track feedback. I think there is a great need to trace performance on this instance. For example here

@axw
Copy link
Member

axw commented Apr 23, 2019

This is a bit tricky, I think. What would you use for transaction names? Typically the transaction name is the route pattern defined by the application, which will be unknown to Caddy or any other reverse proxy.

@theodesp
Copy link
Author

Yes. When we add a middleware like this
httpserver.GetConfig(c).AddMiddleware(middleware)
where middleware is of type
func(next httpserver.Handler) httpserver.Handlerfunc(next httpserver.Handler) httpserver.Handler

we can only get so far.

One other option is to add a special header value similar to what Zipkin does but I think its too far fetched.

What we can do is an alternative is to use directives as metadata for example:
ServiceEndpointLabel: for labelling the service

If you think it's not worth it or it won't really work then we can close this ticket.

@axw
Copy link
Member

axw commented Apr 23, 2019

I would suggest that this be implemented as an external module, primarily because it's unclear to me how it should look. Once it's proven and clear on how it would work in practice (especially with distributed tracing), then we could consider if it makes sense to bring it into the main repo. How does that sound?

@theodesp
Copy link
Author

Cool

@axw
Copy link
Member

axw commented Jun 5, 2019

@theodesp given that this isn't going to be developed in the agent in the near term, I'm closing this one.

If you do get around to implementing it at some stage, please open a topic on https://discuss.elastic.co/c/apm. The broader topic of tracing at the reverse proxy level is of relevance to the whole solution. Thanks!

@axw axw closed this as completed Jun 5, 2019
@mholt
Copy link

mholt commented Sep 30, 2021

FYI, Caddy 2 has an all-new architecture and plugin API so you might be able to do what you're wanting to now. Worth a look.

@axw
Copy link
Member

axw commented Oct 4, 2021

Thanks for letting us know @mholt! Will keep it in mind, but I feel like vendor-neutral OTel instrumentation would probably be more suitable here. I see there's caddyserver/caddy#4361 already :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants