* Extend logging middleware to optionally only log failed HTTP requests
* Add a preconfigured logger for logging failed requests, use it in the app.
* Wide definition of success
* Rework Scope metrics according to Prometheus conventions.
- counters should end with _total
- elaborated and added units to help strings
- recommended for cache hit/miss metrics: track only the total and the
hits and in separate metrics, since the most common query will be
"hits / total"
- track all times in seconds (base units), which has become the standard
recommendation
- other small changes
There could be more changes that would require more thinking (what
dimensions to use, summaries vs. histograms, etc.), but this is probably
enough controversial material already :)
* Use timeRequestStatus() in sqs_control_router.go.
* Add in-process caching to dynamodb collector
* Add metrics for dynamodb consumed capacity and report size
* Log and return errors during report collection
* Increase compression to the max
* Put reports in S3 and just use DynamoDB as an index.
* Review feedback
Fix a few bugs in the consul pipe router:
- Don't share a pointer
- Write nil to pipe when closing a bridge connection to ensure the connection shutdown.
- Ensure we shutdown bridge connections correctly
Add DynamoDB based collector
- Store compressed reports in dynamodb
Add SQS based control router.
- Uses a queue per probe and a queue per UI for control requests & responses.
Add Consul-based, horizontally-scalable, multi-tenant pipe router.
- Uses consul to coordinate each end of pipe connections replicas of a pipe service.
- Add interfaces to allow for alternative implementations for Collector, ControlRouter
and PipeRouter.
- Pass contexts on http handlers to these interfaces. Although not used by the current
(local, in-memory) implementations, the idea is this will be used to pass headers to
implementations which support multitenancy (by, for instance, putting an authenticating
reverse proxy in form of the app, and then inspecting the headers of the request for
a used id).
- Run the Weave integrations regardless of if weave is detected.
- Make everything backoff and not spam the logs.
- Add miekg dns to vendor.
- Have the app periodically register with weaveDNS, and the probe do lookups there.
- Decide what the local networks are at runtime, not once at startup.
- Correctly resolve app ids, fixes#825