
Guillaume Berche
toggle quoted message
Show quoted text
Well, from my point of view the customization is just adding the flexibility of being able to annotate our logs with what we consider to be important for our debugging purposes, a feature that is surely interesting for other parties aswell. We are not interested in adding extra headers into CF, just pulling headers from incoming requests(where the headers have ben set elsewhere) to Gorouter into a doppler event. :)
On Wed, Jul 22, 2015 at 11:43 AM, Gwenn Etourneau <getourneau(a)pivotal.io> wrote:
Simon I know what you want todo :) I am shinji62 lol I am jsut afraid that you want to customize the platform and you will be stuck with because other don't support custom header.
On Wed, Jul 22, 2015 at 6:36 PM, Simon Johansson < simon(a)simonjohansson.com> wrote:
I feel that we are stearing this conversation into the wrong direction.
Gist it, I would like to with cf logs app / firehose-to-syslog see my RTR-logs as
blurgh.dev.cf.private.domain.com - blablablab vcap_request_id:1e58195a-cde6-4afd-7f03-43061c9ea91c response_time:0.004927106 app_id:9784cd03-050d-4b74-9e90-5f17134a3f08 *{"X-Random-Header": "Once upon a midnight dreary, while I pondered weak and weary", "Another-Header": "wryyyy"}*
By being able to tell Gorouter what headers Im interested in via the manifest logging: add_extra_headers_if_available: - X-Random-Header - Another-Header - This-header-will-only-be-in-1%-of-the-requests
Is this something you would be interested in mergin, I dont want to implement it if there is no chance of it being merged.
On Wed, Jul 22, 2015 at 11:30 AM, Gwenn Etourneau <getourneau(a)pivotal.io
wrote: So if you move to Heroku you will be able to change the platform ??? I don't think so.. So you can put the new header from your app or at least the runtime buildpack or docker.
Your application should be platform dependent that's why you need to implement this header into your application to avoid any lock-in or forking issue.
On Wed, Jul 22, 2015 at 6:27 PM, Simon Johansson < simon(a)simonjohansson.com> wrote:
WAKAWAKA is just an example But the difference is that WAKAWAKA is not platform specific whereas X-Cf-Requestid is. If we want to move our app to Heroku, or a VM, or whatewher we have platform specific implementation details in our app(namely we rely on a header that is not there anymore). But that is not the point of this thread.
The point is,
say we have an app that is fronted by a CDN, and the CDN sets the X-Im-a-shark header with some value that we are interested to see in our logs. The easiest way to achivie this without having to implement it into our own apps is just to tell the Gorouter that it should append the value of that header into the string that it logs so the event that flow via Doppler and ultimately into cf logs/ELK will contain that value.
The reason why this would be such a valuable feature for us is that we dont have to do anything. CF already provide the out of the box facility to give us routing logs, so if we can piggy back on that for what we are interested in we dont have to add libraries to our apps to log interesting headers on the side.
On Wed, Jul 22, 2015 at 12:45 AM, Shannon Coen <scoen(a)pivotal.io> wrote:
I don't see the difference between WAKAWAKA and X-Cf-Requestid. Gorouter would have to add some header with a uuid for the request. Your apps have to have logic to pass this header on, so that a log search returns the original request as well as subsequent requests between apps. Could you please clarify?
Thank you,
Shannon Coen Product Manager, Cloud Foundry Pivotal, Inc.
On Tue, Jul 21, 2015 at 11:09 AM, Simon Johansson < simon(a)simonjohansson.com> wrote:
Sure that header can be used. But then we are adding CF specific stuff into the implementation of our services, which is something we want to avoid at all costs. Also Im not entirely sure if all the libraries we use for Zipkin supports using custom headers.
All our public apps are fronted by different CDNs, which sets headers that we might want to store for debugging, so we still need a way to pass those trough into the log.
On Tuesday, 21 July 2015, Shannon Coen <scoen(a)pivotal.io> wrote:
Hello Simon,
The X-Cf-Requestid header already provides a uuid. Couldn't app "a" add the value of X-Cf-Requestid to a header of your choosing? Call it WAKAWAKA or X-Random-Header, but it doesn't need to be a platform standard. Wouldn't a search for the value of X-Cf-Requestid then provide the desired results?
Thank you, Shannon
Shannon Coen Product Manager, Cloud Foundry Pivotal, Inc.
On Tue, Jul 21, 2015 at 6:06 AM, Simon Johansson < simon(a)simonjohansson.com> wrote:
Howdie!
We have some devs who want to be able to trace a request troughout their applications.
user -> a -> b -> c | |-> d -> e
When a user makes a request to "a" uuid is generated inside the app, and the request to "b" from "a" will set a header(call it WAKAWAKA to uuid), "b"'s call will passthrough WAKAWAKA to "c" and "d", "d" will passthrough WAKAWAKA to "e". Etc.
We aggregate all RTR logs into ELK so it would be super helpful to them to be able to filter on WAKAWAKA and get all the access logs(and app logs aswell, they mostly use GELF so its easy for them to add whatewher field they want) from the services involved.
I had a quick peek at the gorouter( https://github.com/cloudfoundry/gorouter/blob/76668f5818ea8c089ff52a14fcdfbf703c8e8767/access_log/access_log_record.go#L40) and it seems like this should be a simple PR.
1. To gorouter.yml add passthrough_headers: - WAKAWAKA - X-Random-Header
2. In makeRecord at the bottom add something like(in psuedo)
data = {} for header in passthrough_headers: header_val = r.FormatRequestHeader("X-Forwarded-For") if header_val: passthrough_headers[header] = header_val
if data: fmt.Fprintf(b, data.to_stringified_json())
That would yield a log line like blurgh.dev.cf.private.domain.com - [21/07/2015:10:17:05 +0000] "GET /statements?ascending=true&since=2015-06-30T14%3A10%3A03.078Z&skipStatementId=30a88204-0779-4385-9859-e4aabd30baf0 HTTP/1.1" 200 0 17 "-" "NING/1.0" 10.230.31.2:46204 x_forwarded_for:"-" vcap_request_id:1e58195a-cde6-4afd-7f03-43061c9ea91c response_time:0.004927106 app_id:9784cd03-050d-4b74-9e90-5f17134a3f08 {"WAKAWAKA": "Space is the place", "X-Random-Header": "Once upon a midnight dreary, while I pondered weak and weary"}
The reason for a stringified JSON is to make it easy to parse with logstash or other loganalysis tools.
Before I spend time implementing, is this something you would merge?
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
_______________________________________________ cf-dev mailing list cf-dev(a)lists.cloudfoundry.org https://lists.cloudfoundry.org/mailman/listinfo/cf-dev
|