This provides a generic mechanism to include extra files that you can reference in prometheus.yml, for example: scrape_targets: - job_name: ipmi params: module: default scrape_interval: 1m scrape_timeout: 30s metrics_path: /ipmi scheme: http file_sd_configs: - files: - /etc/prometheus/extras/file_sd/ipmi-exporter-targets.yml refresh_interval: 5m Change-Id: Ie2f085204b71725b901a179ee51541f1f383c6fa Related: blueprint custom-prometheus-targets
4.5 KiB
Prometheus - Monitoring System & Time Series Database
Overview
Kolla can deploy a full working Prometheus setup in either a all-in-one or multinode setup.
Preparation and deployment
To enable Prometheus, modify the configuration file
/etc/kolla/globals.yml
and change the following:
enable_prometheus: "yes"
Extending the default command line options
It is possible to extend the default command line options for Prometheus by using a custom variable. As an example, to set remote timeouts to 30 seconds and data retention period to 2 days:
prometheus_cmdline_extras: "-storage.remote.timeout 30s -storage.local.retention 48h"
Extending prometheus.cfg
If you want to add extra targets to scrape, you can extend the
default prometheus.yml
config file by placing additional
configs in
{{ node_custom_config }}/prometheus/prometheus.yml.d
. These
should have the same format as prometheus.yml
. These
additional configs are merged so that any list items are extended. For
example, if using the default value for node_custom_config
,
you could add additional targets to scape by defining
/etc/kolla/config/prometheus/prometheus.yml.d/10-custom.yml
containing the following:
scrape_configs:
- job_name: custom
static_configs:
- targets:
- '10.0.0.111:1234'
- job_name: custom-template
static_configs:
- targets:
{% for host in groups['prometheus'] %}
- '{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ 3456 }}'
{% endfor %}
The jobs, custom
, and custom_template
would
be appended to the default list of scrape_configs
in the
final prometheus.yml
. To customize on a per host basis,
files can also be placed in
{{ node_custom_config }}/prometheus/<inventory_hostname>/prometheus.yml.d
where, inventory_hostname
is one of the hosts in your
inventory. These will be merged with any files in
{{ node_custom_config }}/prometheus/prometheus.yml.d
, so in
order to override a list value instead of extending it, you will need to
make sure that no files in
{{ node_custom_config }}/prometheus/prometheus.yml.d
set a
key with an equivalent hierarchical path.
Extra files
Sometimes it is necessary to reference additional files from within
prometheus.yml
, for example, when defining file service
discovery configuration. To enable you to do this, kolla-ansible will
resursively discover any files in
{{ node_custom_config }}/prometheus/extras
and template
them. The templated output is then copied to
/etc/prometheus/extras
within the container on startup. For
example to configure ipmi_exporter,
using the default value for node_custom_config
, you could
create the following files:
/etc/kolla/config/prometheus/prometheus.yml.d/ipmi-exporter.yml
:--- scrape_configs: - job_name: ipmi params: module: ["default"] scrape_interval: 1m scrape_timeout: 30s metrics_path: /ipmi scheme: http file_sd_configs: - files: - /etc/prometheus/extras/file_sd/ipmi-exporter-targets.yml refresh_interval: 5m relabel_configs: - source_labels: [__address__] separator: ; regex: (.*) target_label: __param_target replacement: ${1} action: replace - source_labels: [__param_target] separator: ; regex: (.*) target_label: instance replacement: ${1} action: replace - separator: ; regex: .* target_label: __address__ replacement: "{{ ipmi_exporter_listen_address }}:9290" action: replace
where
ipmi_exporter_listen_address
is a variable containing the IP address of the node where the exporter is running./etc/kolla/config/prometheus/extras/file_sd/ipmi-exporter-targets.yml
:-
--- - targets: - 192.168.1.1 labels: job: ipmi_exporter