708 karma · joined January 3, 2012
You can cheat a little. For example I am using some system debs for python packages, but if there were more than a handful of python utility packages that can get unmanageable fast. That leads naturally to the fat jar/virtualenv/static binary approach with manually managed dependencies which gives you isolation between applications, and all the associated costs.
What it doesn't include is all the higher-value work the people on the Operational side tend to provide, like thinking about rollbacks, machine failure, network failure, provisioning, capacity planning, change/configuration management, security, monitoring etc - which is not to say that all developers don't think about these things, their focus tends to be on developing product rather than these non-functional requirements.
I'm presently in a world of Ubuntu LTS+a few manual backports for similar reasons as the authors. My home systems are ansible managed, giving me things like wireshark installed everywhere if I need it and new machines automatically hooked into Prometheus monitoring (which is much easier with my debs). I've seen what happens if you try to manually manage machines, and know that a small bit of upfront work will bring dividends later.
Writing the core code is just one critical step in running software long term, let's not forget the rest of the critical steps to keep it running in a sane way in the future.
I've investigated colocs near some AWS locations and found AWS to be around 20% cheaper than the cheapest viable option. With AWS's occasional price drops on top of that and general flexibility it's not a difficult choice.
One thing I found was that most providers were trying to sell vertical reliability (e.g. hardware RAID1), with a matching price. Our redundancy is horizontal at the application level (e.g. Zookeeper, Cassandra) so this has no value for us.
https://github.com/prometheus/prometheus/issues/505
We haven't head back recently, so it's possible it's all working now.
I know for prometheus.io we can handle at least 1M metrics per server.
We ran into this with prometheus.io and godep. Vendoring in our libraries meant that types didn't match between the vendored version that the main server had and the vendored version coming form the library.
If there's a way to solve this, that'd be great but it means you're back to choosing which version is correct.
$1 per user/month, with plenty of free storage (10GB) each. 2k git requests/month sounds a bit low though if you're doing anything automated. There is a good free tier.
Cloudflare have been putting out quite a few high-quality posts recently.
The short version is that you want to tune to page size, inserts/reads tend to be faster than RB-Trees but deletes are slower. This was true across a variety of chips and cpu architectures.
Those databases are quite raw, to be useful for a use case like monitoring you need to build on top of them to allow for ability to get data from agents, do some processing and enable efficient querying of the data.
See http://prometheus.io/docs/introduction/faq/#why-does-prometh...
If anyone knows of a MIB-parsing library I can use in Python or Go I'd appreciate a pointer (Mibble is GPLv2, which isn't compatible with the Apache 2.0 license Prometheus uses).
You're getting into IPC then, which is a fun topic alright e.g. https://github.com/prometheus/client_ruby/issues/9 and https://github.com/prometheus/client_python/issues/30
Having whatever library is sending data to statsd, instead keep counters/gauges in memory and then expose that on a regular basis would greatly reduce the data volumes involved as it's O(timeseries*frequency) rather than O(events).
This is the approach we take with Prometheus, and based on the statsd setups of some people who've come talking to us there's scope for a reduction in network load of at least an order of magnitude without having to do any downsampling.