Comments (3)
So this is a feature i have been working as well as it would be very important for my uses of this in a site monitoring project I am working on.
I have a patch written that implements a counter on each Sensor for the "number of concurrent checks" for the given state (pass/fail, currently defined by return code being above 400). However, this is not in a PR as it builds off #26.
#26 implements a first attempt at the ability to reload canaryd live. Once that is in I do want to refactor it to not have to wait for all sensors to stop, but only sensors for targets that are no longer defined in the manifest. Once that change goes in, I would like to add a separate goroutine that periodically checks the manifest for changes, and if changes are detected initiate a reload (which I believe is a feature listed for the v4 release).
Once #26 is in, I can put the above feature up for review, and will start on the features I want:
- Ability to specify request headers (per target url in the manifest)
- Ability to check for response headers (per target url, and will be part of the measurements that is published)
- Ability to check for patterns (be it simple string inclusion or regex) per target url, affecting pass/fail).
It would also be nice to dynamically specify the pass/fail conditions in the manifest, such as:
- expected "pass" return codes (some urls should pass on a 403 by example),
lastly, it might be nice to move away from ENV variables for a lot of the daemon configurations (default sampling interval, rampup mode, etc). This could be done via a local configuration JSON file, or including them in the manifest that is loaded.
I think with those abilities canaryd will be much more usable as a site monitoring agent.
@blalor @gorsuch what are your thoughts on the above feature sets? I have no problems implementing these, but will have to do them in order and will be blocked on the reviews.
from canary.
Overall that sounds good to me, but I don't see "metadata" in there anywhere. :-)
Reloading will be useful. I'm going to be putting the manifest into Consul to distribute out to sensors in different datacenters.
The current Target implementation could be expanded to either have a Metadata interface{}
field which could be blindly deserialized from JSON, or separate Tags []string
and Attributes map[string]string
fields. The advantage of the former is that arbitrarily-structured data could be passed to publishers. The latter would be more structured within the framework, and is probably a better solution overall…
from canary.
I believe we can consider this issue closed with #28 landing (thanks @blalor!).
@jmeichle feel free to open up individual PRs or issues to discuss your above ideas. I'm a big fan of where you are going in general, but getting down to the specifics would probably be easier for discussion.
from canary.
Related Issues (12)
- Initial Roadmap HOT 3
- Feature Request: Support non-HTTP (ICMP, TCP connect) measurements HOT 2
- Capturing server's IP address HOT 8
- use time.Duration instead of int HOT 1
- simplify canary / canaryd configuration HOT 1
- expvar publisher? HOT 1
- HTTP header support HOT 7
- debug mode HOT 1
- Include response body in sample
- Add docs for statsd publisher HOT 2
- canaryd does not have an option to follow 3xx redirects?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from canary.