On Tue, 7 Nov 2017 at 14:56, Eric D Helms <ericdhe...@gmail.com> wrote:
> On Thu, Nov 2, 2017 at 5:05 PM, Ivan Necas <ine...@redhat.com> wrote: > >> I lean towards the push model here. The main reason is >> the simpler way to publish the instrumentation data from whatever >> process we want to track. Also, my understanding is, that we don't care >> only if the service is up or down (readiness and liveness) but also >> about trends during the processing. >> > > In reading about push vs. pull, my biggest issue with it is that the > application has to have knowledge of where it's pushing. Whereas the pull > model allows an application to say I have metrics here and anything that > knows how to scrape and interpret those metrics can grab them at their > leisure. This provides nicer de-coupling and potentially more choice if > there is a standard-ish data format used to expose the metrics. > > >> >> Eric: could you more describe the 5 web applications requiring 5 >> monitoring containers? >> I might be missing where this implication came from? >> > > This part comes from if you do the sidecar method of running something > like a statsd process. A sidecar is essentially just running two containers > in a pod where one container is considered the main application and the > other an addon that provides some additional value or performs some actions > without being baked into your main application container. If you picture > this idea, and then think about pod scaling (in Kube), for every scale up > you'd also be adding another statsd process container. This might be fine > in practice, but could in theory be overkill. > Let me ask again: why new stats process for every container? It seems to me like other infra service, similar to db: you don't run a separate db process for every container either. I might be missing something. -- Ivan > Another method with statsd is simply to run it on the host itself and have > the containers send data to it but this provides some security concerns > from what I understand. > > The biggest limiting factor appears to be how forking webservers are > handled and probably constraints us the most. Lukas, have you seen anything > related to being to define what the metrics are and how they get published > being able to be separated from the publishing mechanism? My thinking being > if we started with statsd and wrote code within the application generating > statsd metrics, if at a later point one could simply say now publish this > via HTTP endpoint in Prometheus data style for scraping? > > Eric > > >> >> -- Ivan >> >> On Wed, Nov 1, 2017 at 4:54 PM, Lukas Zapletal <l...@redhat.com> wrote: >> >> Does Prometheus only not work in a multi-process Rails web server? >> Does it >> >> work for a single process multi-threaded web server? This is an >> interesting >> >> roadblock given you'd expect this to affect lots of webserver across >> >> multiple languages out there. >> > >> > Any Rails app that has multiple processes needs currently to figure >> > out how to deliver data to the HTTP endpoint. E.g. store it in a >> > database or something, which is not the best approach. >> > >> > Absolutely, it lacks quite important feature right there. It stems >> > from the design which is pull-based. >> > >> >> Yes, standard practice is to think about one container per pod (in a >> >> Kubernetes environment). However, there are patterns for things like >> log >> >> aggregation and monitoring such as doing a sidecar container that >> ensures >> >> co-location. The part I don't entirely get with sidecars is if I scale >> the >> >> pod to say 5, I get 5 web applications and 5 monitoring containers and >> that >> >> seems odd. Which I why I think the tendency is towards models where >> your >> >> single process/application is the end point for your metrics to be >> scrapped >> >> by an outside agent or services. >> >> >> >> I agree you want the collector to be separate, but if your web >> application >> >> is down what value would a monitoring endpoint being alive provide? The >> >> application would be down, thus no metrics to serve up. The other >> exporters >> >> such as the one exporting metrics about the underlying system would be >> >> responsible for giving system metrics. In the Kube world, this is >> handled by >> >> readiness and liveness probes for Kubenernetes to re-spin the >> container if >> >> it stops responding. >> > >> > In container world, monitoring agents are running on hosts, not in >> > containers themselves. And collector agents can be 1:1 or 1:N (e.g. >> > for each container host). I am not sure I follow you here. Why you >> > don't see added value again? Monitoring agent without any apps >> > connected is as useful as ssh deamon waiting for connections. >> > >> > Let me put it this way - push approach seems to be more appropriate >> > for multi process Ruby application than pull approach. That's what we >> > are discussing here, unless there are better protocols/agents I am not >> > aware of. >> > >> > Honestly, pull approach via simple HTTP REST API seems cleaner but it >> > is just not good fit and also it creates other unnecessary >> > responsibility on the app itself. You are working on containerizing >> > Foreman, so it is also actually against this effort. >> > >> > Anyway, let me throw another integration. Collectd has an agent (or >> > plugin) that opens a local socket which can be used to receive data >> > from other applications. I wrote Ruby client library the other day >> > (https://github.com/lzap/collectd-uxsock) but I believe this make no >> > difference than statsd - you still need a local process to gather the >> > data. >> > >> > -- >> > Later, >> > Lukas @lzap Zapletal >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups "foreman-dev" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to foreman-dev+unsubscr...@googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "foreman-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to foreman-dev+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > Eric D. Helms > Red Hat Engineering > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "foreman-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to foreman-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.