William-Yeh.prometheus

william-yeh.prometheus for Ansible Galaxy

Circle CI Build Status

Summary

Role name on Ansible Galaxy: william-yeh.prometheus

This Ansible role provides the following features for Prometheus:

  • Installs specific versions of the Prometheus server, Node exporter, and Alertmanager.
  • Handles restarting, reloading, and stopping services.
  • Basic setup configuration (real configurations should be done using user templates; see Usage section below).

This role installs only three core components: Prometheus server, Node exporter, and Alertmanager. For other Prometheus exporters, use the following roles:

Support for Ubuntu 12.04 (Precise) and CentOS 6 has ended since November 2018.

Role Variables

Required variables

Specify the components to install:

# Supported components:
#
#   [Server components]
#     - "prometheus"
#     - "alertmanager"
#
#   [Exporter components]
#     - "node_exporter"
#
prometheus_components

Optional variables: General settings

User-configurable defaults:

# User and group
prometheus_user:   prometheus
prometheus_group:  prometheus

# Directory for executable files
prometheus_install_path:   /opt/prometheus

# Directory for configuration files
prometheus_config_path:    /etc/prometheus

# Directory for logs
prometheus_log_path:       /var/log/prometheus

# Directory for PID files
prometheus_pid_path:       /var/run/prometheus

# Directory for temporary files
prometheus_download_path:  /tmp

# Version of helper utility "gosu"
gosu_version:  "1.11"

Optional variables: Systemd or not

If the Linux distribution uses systemd, this role will use it. You can disable this (to use traditional SysV-style init scripts) by setting the following variable to false:

prometheus_use_systemd

Optional variables: Prometheus server

User-configurable defaults:

# Which version?
prometheus_version:  2.5.0

# Directory for rule files
prometheus_rule_path:  {{ prometheus_config_path }}/rules

# Directory for file_sd files
prometheus_file_sd_config_path:  {{ prometheus_config_path }}/tgroups

# Directory for runtime database
prometheus_db_path:   /var/lib/prometheus

User-installable configuration files (see doc for details):

# Main configuration template relative to `playbook_dir`;
# to be installed at "{{ prometheus_config_path }}/prometheus.yml"
prometheus_conf_main

User-installable rule files (see doc for details):

# Rule files to be installed at "{{ prometheus_rule_path }}";
# dict fields:
#   - key: memo for this rule
#   - value:
#     - src:  file relative to `playbook_dir`
#     - dest: target file relative to `{{ prometheus_rule_path }}`
prometheus_rule_files

Alertmanager to be triggered:

prometheus_alertmanager_hostport

Additional command-line arguments, if any (use prometheus --help for the full list):

prometheus_opts

Optional variables: Node exporter

User-configurable defaults:

# Which version?
prometheus_node_exporter_version:  0.16.0

Additional command-line arguments, if any (use node_exporter --help for the full list):

prometheus_node_exporter_opts

Optional variables: Alertmanager

User-configurable defaults:

# Which version?
prometheus_alertmanager_version:  0.15.3

# Directory for runtime database (currently for `silences.json`)
prometheus_alertmanager_db_path: /var/lib/alertmanager

User-installable Alertmanager configuration file (see doc for details):

# Main configuration template relative to `playbook_dir`;
# to be installed at "{{ prometheus_config_path }}/alertmanager.yml"
prometheus_alertmanager_conf

Additional command-line arguments, if any (use alertmanager --help for the full list):

prometheus_alertmanager_opts

Optional: Building from source

(Credit: Robbie Trencheny)

You can optionally download and compile the latest versions from the master branch of Prometheus repositories by setting the respective version to git.

For example, get the latest code for all components by setting all *_version variables to git:

prometheus_version: git
prometheus_node_exporter_version: git
prometheus_alertmanager_version: git

If you'd like to rebuild each time, enable the following variable (default is false):

prometheus_rebuild: true

Handlers

Prometheus server:

  • restart prometheus
  • reload prometheus
  • stop prometheus

Node exporter:

  • restart node_exporter
  • reload node_exporter (which acts like restart)
  • stop node_exporter

Alertmanager:

  • restart alertmanager
  • reload alertmanager
  • stop alertmanager

Usage

Step 1: Add role

Include the role name william-yeh.prometheus in your playbook file.

Step 2: Add variables

Define variables in your playbook file, if necessary.

Simple example:

---
# file: simple-playbook.yml

- hosts: all
  become: True
  roles:
    - william-yeh.prometheus

  vars:
    prometheus_components: [ "prometheus", "alertmanager" ]
    prometheus_alertmanager_hostport: "localhost:9093"

Step 3: Copy user's configuration files, if necessary

More practical example:

---
# file: complex-playbook.yml

- hosts: all
  become: True
  roles:
    - william-yeh.prometheus

  vars:
    prometheus_components:
      - prometheus
      - node_exporter
      - alertmanager

    prometheus_rule_files:
      this_is_rule_1_InstanceDown:
        src:  some/path/basic.rules
        dest: basic.rules

    prometheus_alertmanager_conf: some/path/alertmanager.yml.j2

Step 4: Browse the default Prometheus pages

Open the page in your browser:

  • Prometheus - http://HOST:9090 or http://HOST:9090/consoles/node.html
  • Alertmanager - http://HOST:9093

Dependencies

None.

Contributors

License

MIT License. See the LICENSE file for more details.

Informazioni sul progetto

Install and configure Prometheus

Installa
ansible-galaxy install William-Yeh.prometheus
Licenza
mit
Download
27.5k
Proprietario