Frequently Asked Questions

    How does Prometheus compare against other monitoring systems?

    See the page.

    What dependencies does Prometheus have?

    The main Prometheus server runs standalone and has no external dependencies.

    Can Prometheus be made highly available?

    Yes, run identical Prometheus servers on two or more separate machines. Identical alerts will be deduplicated by the Alertmanager.

    For , you can run multiple instances in a Mesh cluster and configure the Prometheus servers to send notifications to each of them.

    I was told Prometheus “doesn’t scale”.

    There are in fact various ways to scale and federate Prometheus. Read on the Robust Perception blog to get started.

    What language is Prometheus written in?

    Most Prometheus components are written in Go. Some are also written in Java, Python, and Ruby.

    How stable are Prometheus features, storage formats, and APIs?

    All repositories in the Prometheus GitHub organization that have reached version 1.0.0 broadly follow semantic versioning. Breaking changes are indicated by increments of the major version. Exceptions are possible for experimental components, which are clearly marked as such in announcements.

    Even repositories that have not yet reached version 1.0.0 are, in general, quite stable. We aim for a proper release process and an eventual 1.0.0 release for each repository. In any case, breaking changes will be pointed out in release notes (marked by ) or communicated clearly for components that do not have formal releases yet.

    Why do you pull rather than push?

    Pulling over HTTP offers a number of advantages:

    • You can run your monitoring on your laptop when developing changes.
    • You can more easily tell if a target is down.
    • You can manually go to a target and inspect its health with a web browser.

    Overall, we believe that pulling is slightly better than pushing, but it should not be considered a major point when considering a monitoring system.

    For cases where you must push, we offer the .

    How to feed logs into Prometheus?

    Short answer: Don’t! Use something like the ELK stack instead.

    If you want to extract Prometheus metrics from application logs, Google’s might be helpful.

    Prometheus was initially started privately by Matt T. Proud and . The majority of its initial development was sponsored by SoundCloud.

    It’s now maintained and extended by a wide range of companies and individuals.

    What license is Prometheus released under?

    Prometheus is released under the license.

    What is the plural of Prometheus?

    After extensive research, it has been determined that the correct plural of ‘Prometheus’ is ‘Prometheis’.

    Can I reload Prometheus’s configuration?

    Yes, sending to the Prometheus process or an HTTP POST request to the endpoint will reload and apply the configuration file. The various components attempt to handle failing changes gracefully.

    Can I send alerts?

    Yes, with the .

    Currently, the following external systems are supported:

    Can I create dashboards?

    Yes, we recommend Grafana for production usage. There are also .

    Can I change the timezone? Why is everything in UTC?

    To avoid any kind of timezone confusion, especially when the so-called daylight saving time is involved, we decided to exclusively use Unix time internally and UTC for display purposes in all components of Prometheus. A carefully done timezone selection could be introduced into the UI. Contributions are welcome. See issue #500 for the current state of this effort.

    Which languages have instrumentation libraries?

    There are a number of client libraries for instrumenting your services with Prometheus metrics. See the documentation for details.

    If you are interested in contributing a client library for a new language, see the exposition formats.

    Can I monitor machines?

    Yes, the allows monitoring of devices that support SNMP.

    Can I monitor batch jobs?

    Yes, using the Pushgateway. See also the for monitoring batch jobs.

    What applications can Prometheus monitor out of the box?

    See the list of exporters and integrations.

    Can I monitor JVM applications via JMX?

    Yes, for applications that you cannot instrument directly with the Java client, you can use the either standalone or as a Java Agent.

    What is the performance impact of instrumentation?

    Performance across client libraries and languages may vary. For Java, benchmarks indicate that incrementing a counter/gauge with the Java client will take 12-17ns, depending on contention. This is negligible for all but the most latency-critical code.

    My Prometheus 1.x server takes a long time to start up and spams the log with copious information about crash recovery.

    You are suffering from an unclean shutdown. Prometheus has to shut down cleanly after a , which might take a while for heavily used servers. If the server crashes or is killed hard (e.g. OOM kill by the kernel or your runlevel system got impatient while waiting for Prometheus to shutdown), a crash recovery has to be performed, which should take less than a minute under normal circumstances, but can take quite long under certain circumstances. See for details.

    My Prometheus 1.x server runs out of memory.

    See the section about memory usage to configure Prometheus for the amount of memory you have available.

    My Prometheus 1.x server reports to be in “rushed mode” or that “storage needs throttling”.

    Your storage is under heavy load. Read to find out how you can tweak settings for better performance.

    Why are all sample values 64-bit floats? I want integers.

    We restrained ourselves to 64-bit floats to simplify the design. The IEEE 754 double-precision binary floating-point format supports integer precision for values up to 253. Supporting native 64 bit integers would (only) help if you need integer precision above 253 but below 263. In principle, support for different sample value types (including some kind of big integer, supporting even more than 64 bit) could be implemented, but it is not a priority right now. A counter, even if incremented one million times per second, will only run into precision issues after over 285 years.

    TLS and basic authentication is gradually being rolled out to the different components. Please follow the different releases and changelogs to know which components have already implemented it.

    The components currently supporting TLS and authentication are:

    • Prometheus 2.24.0 and later

    This applies only to inbound connections. Prometheus does support , and other Prometheus components that create outbound connections have similar support.