On Thursday, 23 June 2022 at 05:04:42 UTC+1 [email protected] wrote: > 2. I have added a timer loop, which collects the metrics at the defined > interval, I am wondering if there is a way to manage this interval from the > prometheus server. > https://prometheus.io/docs/instrumenting/writing_exporters/#scheduling > This link says that the exporter should not collect metrics at arbitrary > intervals, however it doesn't say how to sync it with the prometheus server. >
If you need to "do work" to collect metrics, you would do it whenever you receive a scrape. That's what a Custom Collector is for: it's code which is executed at scrape time, which has whatever special logic you need to generate metrics on demand. However in the normal case, you are simply setting gauges or incrementing counters in response to external events as part of the application's normal flow. You would do those gauge or counter updates whenever the events occur. Then the metrics are being maintained continuously, and so the scrape only needs to return the current values of those metrics. In that case, no custom collector is required. The example code you posted has a dummy polling loop to update metrics intermittently. That's not what you'd do in real life. Rather, you'd replace "run_metrics_loop" with "run_my_application", and insert code to update metrics within the application, at strategic points where it does work (say when it processes a REST API request, or whatever else it does that needs measuring) > 3. I am writing the exporter in python, is there a standard directory > layout/coding practice that I should follow? > Often you're integrating the exporter into an existing application, in which case you just insert it into the layout of that application. You said you're instrumenting a "linux app": is that linux app also written in Python? If so, add your exporter to the application. If not, how are you collecting data from it? If the app is not in Python, and you can modify the app's source code, but you don't want to integrate an exporter in whatever language the app is written in, then here are some other approaches which don't involve writing a separate exporter: - the app can send update messages to statsd_exporter, which maintains gauges and counter state - the app can write metrics to text files, to be picked up by node_exporter textfile collector If you can't modify the app, then at very worst it will probably emit log messages. In that case, you can use mtail or grok_exporter to read the log files and generate metrics. But that's a last resort. -- You received this message because you are subscribed to the Google Groups "Prometheus Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-users/41cb119e-36f3-4679-b3b9-3fe171ce744bn%40googlegroups.com.

