Jump to content

Prometheus: Difference between revisions

From NixOS Wiki
Axka (talk | contribs)
mNo edit summary
Axka (talk | contribs)
Add infobox and Template:File-based codeblocks
Line 1: Line 1:
[https://prometheus.io/ Prometheus] is a free software application used for event monitoring and alerting. It records metrics in a time series database built using an HTTP pull model, with flexible queries and real-time alerting.
'''[https://prometheus.io/ Prometheus]''' is an open-source event monitoring and alerting application. It records metrics in a time series database built by pulling (also known as ''scraping'') metrics from different services, with flexible queries and real-time alerting.


== Client/Agent: Prometheus exporter ==
{{infobox application
It is documented in the [https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters NixOS manual].
  |name=Prometheus
  |image=Prometheus software logo.svg
  |type=Metrics aggregation system
  |status=Active
  |license=Apache License 2.0
  |programmingLanguage=Go
  |github=prometheus/prometheus
  |documentation=https://prometheus.io/docs/introduction/overview/
}}


== Client example ==
== Prometheus exporters ==
Example of [https://prometheus.io/docs/guides/node-exporter/ prometheus node_exporter] with additional collectors enabled:<syntaxhighlight lang="nix">
 
Prometheus works by scraping from HTTP endpoints, which are often provided by '''Prometheus exporters'''.
 
=== <code>node_exporter</code> ===
Below is an example of [https://prometheus.io/docs/guides/node-exporter/ prometheus node_exporter] with additional collectors enabled. [https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters <code>node_exporter</code> is documented in the NixOS manual].
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{ config, pkgs, ... }:
{ config, pkgs, ... }:
{
{
Line 18: Line 32:
   };
   };
}
}
</syntaxhighlight>
</nowiki>}}
== Server ==
 
The Prometheus service daemon can be enabled and configured by further options.<syntaxhighlight lang="nix">
== Usage ==
services.prometheus.enable = true;
 
</syntaxhighlight>Another example:<syntaxhighlight lang="nix">
The Prometheus service daemon can be enabled and configured by further options.
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  services.prometheus.enable = true;
}
</nowiki>}}
 
Another example:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{ config, pkgs, ... }:
{ config, pkgs, ... }:
{
{
Line 32: Line 55:
     globalConfig.scrape_interval = "10s"; # "1m"
     globalConfig.scrape_interval = "10s"; # "1m"
     scrapeConfigs = [
     scrapeConfigs = [
    {
      {
      job_name = "node";
        job_name = "node";
      static_configs = [{
        static_configs = [{
        targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
          targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
      }];
        }];
    }
      }
     ];
     ];
   };
   };
}
}
</syntaxhighlight>
</nowiki>}}
 
 
[[Category:Server]]
[[Category:NixOS Manual]]


== See also ==
== See also ==
Line 51: Line 70:
* [[Grafana]], the dashboarding tool often used with Prometheus.
* [[Grafana]], the dashboarding tool often used with Prometheus.
* [[Loki]], the equivalent of Prometheus for logs.
* [[Loki]], the equivalent of Prometheus for logs.
[[Category:Server]]
[[Category:NixOS Manual]]

Revision as of 07:00, 3 August 2025

Prometheus is an open-source event monitoring and alerting application. It records metrics in a time series database built by pulling (also known as scraping) metrics from different services, with flexible queries and real-time alerting.

Prometheus

Metrics aggregation system Application

100%
StatusActive
Language(s)Go
LicenseApache License 2.0
External links
GitHubprometheus/prometheus
Documentationhttps://prometheus.io/docs/introduction/overview/

Prometheus exporters

Prometheus works by scraping from HTTP endpoints, which are often provided by Prometheus exporters.

node_exporter

Below is an example of prometheus node_exporter with additional collectors enabled. node_exporter is documented in the NixOS manual.

❄︎ /etc/nixos/configuration.nix
{ config, pkgs, ... }:
{
  # https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters
  services.prometheus.exporters.node = {
    enable = true;
    port = 9000;
    # https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/monitoring/prometheus/exporters.nix
    enabledCollectors = [ "systemd" ];
    # /nix/store/zgsw0yx18v10xa58psanfabmg95nl2bb-node_exporter-1.8.1/bin/node_exporter  --help
    extraFlags = [ "--collector.ethtool" "--collector.softirqs" "--collector.tcpstat" "--collector.wifi" ];
  };
}

Usage

The Prometheus service daemon can be enabled and configured by further options.

❄︎ /etc/nixos/configuration.nix
{
  services.prometheus.enable = true;
}

Another example:

❄︎ /etc/nixos/configuration.nix
{ config, pkgs, ... }:
{
  # https://wiki.nixos.org/wiki/Prometheus
  # https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters-configuration
  # https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/monitoring/prometheus/default.nix
  services.prometheus = {
    enable = true;
    globalConfig.scrape_interval = "10s"; # "1m"
    scrapeConfigs = [
      {
        job_name = "node";
        static_configs = [{
          targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
        }];
      }
    ];
  };
}

See also

  • Grafana, the dashboarding tool often used with Prometheus.
  • Loki, the equivalent of Prometheus for logs.