A beginner-friendly introduction to Prometheus
github.com
github.com
PS: This is my first tutorial kind of material, open to feedback on how to improve.
My conclusion is the majority (or at least smaller teams) are maybe better served with something like Datadog. It's cheaper as long as you don't have a high number of machines. Speaking of that I'm still missing the easy middle ground of monitoring which is modern, easy to use and works for a higher number of machines (and even something like Docker Swarm).
On a Debian system it takes about 15-30 minutes to install and do a basic enough configuration to get it running. Another 30 minutes to get a Grafana instance sitting in front of it - and then it's incremental to get the node_exporter (also packaged up) out to your systems.
The two time consuming bits are a) customising the metrics that you can scrape, though there's plenty of templates out there, and if you're not trying to do any fancy application-layer metric scraping you're probably going to be happy out of the box.
And b) evaluating and then setting up longer / larger storage engine on the backend - but if you've committed to Prometheus after doing your low-effort PoC, then this is a simple cost benefit evaluation.
Metrics-as-a-service are an interesting proposition, but I'm very cautious about them
> Speaking of that I'm still missing the easy middle ground of monitoring which is modern, easy to use and works for a higher number of machines (and even something like Docker Swarm).
What's modern mean in this context, and just how easy do you want?
In my experience monitoring systems are relatively easy to deploy, unless you're huge. The difficult bit is working out (with platform owners) everything they need to monitor, what their key health indicators are, and what thresholds to apply.
What I like most about Prometheus, are PromQL, pull-based model, and its open source ecosystem. I use it both at work and in my homelab (which is just a bunch of Intel NUC bare metal boxes), and it has been great. I can't speak for any other individuals or companies, but there are tons of learning materials and active community where you can get help.
Also, when it comes down to application level metrics, you have to educate your developers to add instrumentation in their own code anyways. And I think exposing a small HTTP server is far easier than pushing data to a remote server.
Machine metrics are basically plug-and-play. The only real downside with Prometheus is that you have to install the pieces yourself (and know enough to do it). After you understand how the pieces fit together and get basic knowledge of each piece the time suck is writing and grokking new metrics and noodling with a dashboard--which I figure any solution would have.
This is probably home-hobby geekery, but I'm running Prometheus at home. My Synology has Prometheus and Grafana running in docker containers. The only gnarly part was getting dd-wrt's SNMP data and creating a dashboard of router metrics.
Datadog is a complete solution to collect metrics, visualize, dashboards, search and alerting. There is really no comparison possible (if datadog is a car, prometheus is an engine).
Prometheus is easy to setup but it barely does anything. It gets really messy when one needs to gather application metrics (postgresql, cassandra, haproxy, java, etc...) and have dashboards and alerts going to different places (slack, email, etc...). Trying to find and combine a variety of plugins and open source tools to fill the gaps.
Any company irrelevant of size should have a metrics/dashboard/monitoring/alerting solution. IMO datadog because it's better in all aspects. If the company doesn't want to pay or doesn't want SaaS, it should at least setup prometheus to have basic system metrics somewhere, rather than flying blind.
it’s tsdb engine (specifically the new one in 2.0) is pretty much state of the art.
i don’t think it’s fair to say that it’s the kind of thing that could be created in a one week hackathon.
Prometheus requires a plethora of tools around it to achieve feature parity and plenty of manual work to create dashboards, alerts and so on.
Not to mention the need for custom exporters for each application (!), contrasted to agent-based platforms that have built in plugins and autodetect what need to be monitored.
Cloud you maybe link some of those other tools, because my team is currently looking into monitoring software for our applications.
Telegraf makes easy work of monitoring all kinds of things and has a built-in StatsD server.
Chronograf has a nice GUI for browsing through your metrics and can GROUP-BY and filter on a specific value with just a click or two.
We're running such a setup currently, i.e. we installed Prometheus via Helm, using the Helm chart's sidecar config option to add the sidecar container, and the rest works more or less automagically (k8s workloads with Prometheus endpoints are detected based on annotations and their metrics show up in Monitoring)
We have somewhat relaxed availability constraints for the project this is part of, so we're using the opportunity to gain some experience with this setup and find out whether it's good enough for highly-available prod clusters. So far it's all nice and easy and works very well.
[1] https://cloud.google.com/monitoring/kubernetes-engine/promet...
Maybe ask over at https://reddit.com/r/PrometheusMonitoring
I was extremely happy with this setup, although influxdb is a bit lacking (it doesn't allow summing up two metrics for example).
If you want to get away from Prometheus, InfluxDB and its TICK stack is great.
VictoriaMetrics ingests data in a variety of popular formats and offers a superset of the Prometheus query language to query the data. Super easy to run.