Add prometheus role (#9)
This commit is contained in:
parent
0f9cee0e7d
commit
ad5b658467
14 changed files with 655 additions and 0 deletions
22
roles/service-prometheus/LICENSE
Normal file
22
roles/service-prometheus/LICENSE
Normal file
|
@ -0,0 +1,22 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 William Yeh <william.pjyeh@gmail.com>
|
||||
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
239
roles/service-prometheus/README.md
Normal file
239
roles/service-prometheus/README.md
Normal file
|
@ -0,0 +1,239 @@
|
|||
|
||||
FFMWU prometheus
|
||||
============
|
||||
|
||||
|
||||
## Summary
|
||||
|
||||
Prometheus ansible role based on **[williamyeh.prometheus](https://galaxy.ansible.com/williamyeh/prometheus/)**
|
||||
|
||||
This Ansible role has the following features for [Prometheus](http://prometheus.io/):
|
||||
|
||||
- Install specific versions of [Prometheus server](https://github.com/prometheus/prometheus), [Node exporter](https://github.com/prometheus/node_exporter), [Alertmanager](https://github.com/prometheus/alertmanager).
|
||||
- Handlers for restart/reload/stop events;
|
||||
- Bare bone configuration (*real* configuration should be left to user's template files; see **Usage** section below).
|
||||
|
||||
## Role Variables
|
||||
|
||||
|
||||
### Mandatory variables
|
||||
|
||||
The components to be installed:
|
||||
|
||||
```yaml
|
||||
# Supported components:
|
||||
#
|
||||
# [Server components]
|
||||
# - "prometheus"
|
||||
# - "alertmanager"
|
||||
#
|
||||
# [Exporter components]
|
||||
# - "node_exporter"
|
||||
#
|
||||
prometheus_components
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Optional variables: general settings
|
||||
|
||||
|
||||
User-configurable defaults:
|
||||
|
||||
```yaml
|
||||
# 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 PID files
|
||||
prometheus_pid_path: /var/run/prometheus
|
||||
|
||||
# directory for temporary files
|
||||
prometheus_download_path: /tmp
|
||||
|
||||
# version of helper utility "gosu"
|
||||
gosu_version: "1.10"
|
||||
```
|
||||
|
||||
### Optional variables: Prometheus server
|
||||
|
||||
User-configurable defaults:
|
||||
|
||||
```yaml
|
||||
# which version?
|
||||
prometheus_version: 2.0.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 file (see [doc](http://prometheus.io/docs/operating/configuration/) for details):
|
||||
|
||||
|
||||
```yaml
|
||||
# main conf template relative to `playbook_dir`;
|
||||
# to be installed to "{{ prometheus_config_path }}/prometheus.yml"
|
||||
prometheus_conf_main
|
||||
```
|
||||
|
||||
|
||||
User-installable rule files (see [doc](http://prometheus.io/docs/alerting/rules/) for details):
|
||||
|
||||
|
||||
```yaml
|
||||
# rule files to be installed to "{{ prometheus_rule_path }}" directory;
|
||||
# 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
|
||||
```
|
||||
|
||||
|
||||
Additional command-line arguments, if any (use `prometheus --help` to see the full list of arguments):
|
||||
|
||||
```yaml
|
||||
prometheus_opts
|
||||
```
|
||||
|
||||
|
||||
### Optional variables: Node exporter
|
||||
|
||||
|
||||
User-configurable defaults:
|
||||
|
||||
```yaml
|
||||
# which version?
|
||||
node_exporter_version: 0.15.1
|
||||
```
|
||||
|
||||
Additional command-line arguments, if any (use `node_exporter --help` to see the full list of arguments):
|
||||
|
||||
```yaml
|
||||
node_exporter_opts
|
||||
```
|
||||
|
||||
|
||||
### Optional variables: Alertmanager
|
||||
|
||||
|
||||
User-configurable defaults:
|
||||
|
||||
```yaml
|
||||
# which version?
|
||||
alertmanager_version: 0.10.0
|
||||
|
||||
# directory for runtime database (currently for `silences.json`)
|
||||
alertmanager_db_path: /var/lib/alertmanager
|
||||
```
|
||||
|
||||
User-installable alertmanager conf file (see [doc](http://prometheus.io/docs/alerting/alertmanager/) for details):
|
||||
See files directory alertmanager.yml
|
||||
|
||||
|
||||
Additional command-line arguments, if any (use `alertmanager --help` to see the full list of arguments):
|
||||
|
||||
```yaml
|
||||
prometheus_alertmanager_opts
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## Handlers
|
||||
|
||||
Prometheus server:
|
||||
|
||||
- `reload prometheus`
|
||||
|
||||
Alertmanager:
|
||||
|
||||
- `reload alertmanager`
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
### Step 1: add role
|
||||
|
||||
Add role name `service-prometheus` to your playbook file.
|
||||
|
||||
|
||||
### Step 2: add variables
|
||||
|
||||
Set vars in your playbook file, if necessary.
|
||||
|
||||
Simple example:
|
||||
|
||||
```yaml
|
||||
---
|
||||
# file: simple-playbook.yml
|
||||
|
||||
- hosts: all
|
||||
become: True
|
||||
roles:
|
||||
- service-prometheus
|
||||
|
||||
vars:
|
||||
prometheus_components: [ "prometheus", "alertmanager" ]
|
||||
```
|
||||
|
||||
|
||||
### Step 3: copy user's config files, if necessary
|
||||
|
||||
|
||||
More practical example:
|
||||
|
||||
```yaml
|
||||
---
|
||||
# file: complex-playbook.yml
|
||||
|
||||
- hosts: all
|
||||
become: True
|
||||
roles:
|
||||
- service-prometheus
|
||||
|
||||
vars:
|
||||
prometheus_components:
|
||||
- prometheus
|
||||
- node_exporter
|
||||
- alertmanager
|
||||
|
||||
prometheus_rule_files:
|
||||
this_is_rule_1_InstanceDown:
|
||||
src: some/path/basic.rules
|
||||
dest: basic.rules
|
||||
```
|
||||
|
||||
|
||||
### 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`
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT License. See the [LICENSE file](LICENSE) for details.
|
32
roles/service-prometheus/defaults/main.yml
Normal file
32
roles/service-prometheus/defaults/main.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
#
|
||||
# user-configurable defaults
|
||||
#
|
||||
|
||||
prometheus_components:
|
||||
- "node_exporter"
|
||||
|
||||
prometheus_user: prometheus
|
||||
prometheus_group: prometheus
|
||||
|
||||
prometheus_version: 2.0.0
|
||||
node_exporter_version: 0.15.1
|
||||
alertmanager_version: 0.10.0
|
||||
|
||||
gosu_version: "1.10"
|
||||
|
||||
prometheus_install_path: /opt/prometheus
|
||||
prometheus_config_path: /etc/prometheus
|
||||
prometheus_rule_path: "{{ prometheus_config_path }}/rules"
|
||||
prometheus_file_sd_config_path: "{{ prometheus_config_path }}/tgroups"
|
||||
prometheus_db_path: /var/lib/prometheus
|
||||
alertmanager_db_path: /var/lib/alertmanager
|
||||
prometheus_pid_path: /var/run/prometheus
|
||||
|
||||
prometheus_download_path: /tmp
|
||||
prometheus_workdir: "{{ prometheus_download_path }}/prometheus_workdir"
|
||||
prometheus_goroot: "{{ prometheus_workdir }}/go"
|
||||
prometheus_gopath: "{{ prometheus_workdir }}/gopath"
|
||||
|
||||
prometheus_default_opts: "--config.file={{ prometheus_config_path }}/prometheus.yml --storage.tsdb.path={{ prometheus_db_path }}"
|
||||
alertmanager_default_opts: "-config.file={{ prometheus_config_path }}/alertmanager.yml -storage.path={{ alertmanager_db_path }}"
|
13
roles/service-prometheus/files/alertmanager.yml
Normal file
13
roles/service-prometheus/files/alertmanager.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
global:
|
||||
|
||||
route:
|
||||
group_by: ['alertname', 'cluster']
|
||||
group_wait: 30s
|
||||
group_interval: 5m
|
||||
repeat_interval: 3h
|
||||
receiver: 'default-pager'
|
||||
|
||||
receivers:
|
||||
- name: 'default-pager'
|
||||
pagerduty_configs:
|
||||
- service_key: <team-X-key>
|
9
roles/service-prometheus/handlers/main.yml
Normal file
9
roles/service-prometheus/handlers/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
- name: reload prometheus
|
||||
service:
|
||||
name: prometheus
|
||||
state: reloaded
|
||||
|
||||
- name: reload alertmanager
|
||||
service:
|
||||
name: alertmanager
|
||||
state: reloaded
|
61
roles/service-prometheus/tasks/alertmanager.yml
Normal file
61
roles/service-prometheus/tasks/alertmanager.yml
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
# Install Prometheus alertmanager.
|
||||
|
||||
- name: set internal variables, part 1
|
||||
set_fact:
|
||||
alertmanager_signature: "alertmanager-{{ alertmanager_version }}.linux-amd64"
|
||||
|
||||
- name: set internal variables, part 2
|
||||
set_fact:
|
||||
alertmanager_daemon_dir: "{{ prometheus_install_path }}/{{ alertmanager_signature }}"
|
||||
|
||||
- name: set download url
|
||||
set_fact:
|
||||
alertmanager_tarball_url: "https://github.com/prometheus/alertmanager/releases/download/v{{ alertmanager_version }}/{{ alertmanager_signature }}.tar.gz"
|
||||
|
||||
- name: download and uncompress alertmanager tarball
|
||||
unarchive:
|
||||
src: "{{ alertmanager_tarball_url }}"
|
||||
dest: "{{ prometheus_install_path }}"
|
||||
copy: no
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "go-w"
|
||||
creates: "{{ alertmanager_daemon_dir }}"
|
||||
|
||||
- name: create alertmanager /usr/local/bin links
|
||||
file:
|
||||
src: "{{ alertmanager_daemon_dir }}/{{ item }}"
|
||||
dest: "/usr/local/bin/{{ item }}"
|
||||
state: link
|
||||
with_items:
|
||||
- "alertmanager"
|
||||
- "amtool"
|
||||
|
||||
- name: mkdir for alertmanager data (silences.json for now)
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
with_items:
|
||||
- "{{ alertmanager_db_path }}"
|
||||
|
||||
- name: copy alertmanager systemd config
|
||||
template:
|
||||
src: "alertmanager.service.j2"
|
||||
dest: "/lib/systemd/system/alertmanager.service"
|
||||
|
||||
- name: install alertmanager config file
|
||||
copy:
|
||||
src: "alertmanager.yml"
|
||||
dest: "{{ prometheus_config_path }}/alertmanager.yml"
|
||||
notify:
|
||||
- reload alertmanager
|
||||
|
||||
- name: enable alertmanager service
|
||||
service:
|
||||
name: alertmanager
|
||||
enabled: yes
|
||||
state: started
|
19
roles/service-prometheus/tasks/install-gosu.yml
Normal file
19
roles/service-prometheus/tasks/install-gosu.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Install "gosu" utility.
|
||||
#
|
||||
# @see https://github.com/tianon/gosu
|
||||
#
|
||||
|
||||
- name: set internal variables for convenience
|
||||
set_fact:
|
||||
gosu_bin_url: "https://github.com/tianon/gosu/releases/download/{{ gosu_version }}/gosu-amd64"
|
||||
|
||||
- name: download gosu executable
|
||||
get_url:
|
||||
url: "{{ gosu_bin_url }}"
|
||||
dest: "/usr/local/bin/gosu"
|
||||
|
||||
- name: add executable permission
|
||||
file:
|
||||
path: "/usr/local/bin/gosu"
|
||||
state: file
|
||||
mode: "a+x"
|
51
roles/service-prometheus/tasks/main.yml
Normal file
51
roles/service-prometheus/tasks/main.yml
Normal file
|
@ -0,0 +1,51 @@
|
|||
# Top-level installer for Prometheus.
|
||||
|
||||
- name: create Prometheus group
|
||||
group:
|
||||
name: "{{ prometheus_group }}"
|
||||
state: present
|
||||
|
||||
- name: create Prometheus user
|
||||
user:
|
||||
name: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
createhome: no
|
||||
shell: /sbin/nologin
|
||||
comment: "Prometheus User"
|
||||
state: present
|
||||
|
||||
- name: create base directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
with_items:
|
||||
- "{{ prometheus_install_path }}"
|
||||
- "{{ prometheus_config_path }}"
|
||||
- "{{ prometheus_pid_path }}"
|
||||
|
||||
- name: install helper utility "gosu"
|
||||
include_tasks: install-gosu.yml
|
||||
|
||||
- name: install and configure prometheus service
|
||||
include_tasks: prometheus.yml
|
||||
when: '"prometheus" in prometheus_components'
|
||||
|
||||
- name: install and configure node-exporter service
|
||||
include_tasks: node-exporter.yml
|
||||
when: '"node_exporter" in prometheus_components'
|
||||
|
||||
- name: install and configure alertmanager service
|
||||
include_tasks: alertmanager.yml
|
||||
when: '"alertmanager" in prometheus_components'
|
||||
|
||||
- name: set {{ prometheus_install_path }} permissions, owner and group
|
||||
file:
|
||||
path: "{{ prometheus_install_path }}"
|
||||
state: directory
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "go-w"
|
||||
recurse: yes
|
40
roles/service-prometheus/tasks/node-exporter.yml
Normal file
40
roles/service-prometheus/tasks/node-exporter.yml
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Install Prometheus node-exporter.
|
||||
#
|
||||
# @see http://prometheus.io/docs/introduction/getting_started/
|
||||
|
||||
- name: set internal variables for convenience
|
||||
set_fact:
|
||||
node_exporter_daemon_dir: "{{ prometheus_install_path }}/node_exporter-{{ node_exporter_version }}.linux-amd64"
|
||||
node_exporter_tarball_url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
|
||||
|
||||
- name: download and untar node_exporter tarball
|
||||
unarchive:
|
||||
src: "{{ node_exporter_tarball_url }}"
|
||||
dest: "{{ prometheus_install_path }}"
|
||||
copy: no
|
||||
creates: "{{ node_exporter_daemon_dir }}"
|
||||
|
||||
- name: create node_exporter /usr/local/bin link
|
||||
file:
|
||||
src: "{{ node_exporter_daemon_dir }}/node_exporter"
|
||||
dest: "/usr/local/bin/node_exporter"
|
||||
state: link
|
||||
|
||||
- name: mkdir for data
|
||||
file:
|
||||
path: "{{ prometheus_db_path }}"
|
||||
state: directory
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
|
||||
- name: copy systemd config to server
|
||||
template:
|
||||
src: "../templates/node_exporter.service.j2"
|
||||
dest: "/lib/systemd/system/node_exporter.service"
|
||||
|
||||
- name: enable node_exporter service
|
||||
service:
|
||||
name: node_exporter
|
||||
enabled: yes
|
||||
state: started
|
79
roles/service-prometheus/tasks/prometheus.yml
Normal file
79
roles/service-prometheus/tasks/prometheus.yml
Normal file
|
@ -0,0 +1,79 @@
|
|||
# Install Prometheus server.
|
||||
#
|
||||
# @see http://prometheus.io/docs/introduction/getting_started/
|
||||
#
|
||||
|
||||
- name: set internal variables for convenience
|
||||
set_fact:
|
||||
prometheus_daemon_dir: "{{ prometheus_install_path }}/prometheus-{{ prometheus_version }}.linux-amd64"
|
||||
prometheus_tarball_url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz"
|
||||
|
||||
- name: set prometheus default options
|
||||
set_fact:
|
||||
prometheus_default_opts: "{{ prometheus_default_opts }} --web.console.templates={{ prometheus_daemon_dir }}/consoles --web.console.libraries={{ prometheus_daemon_dir }}/console_libraries"
|
||||
|
||||
- name: download and untar prometheus tarball
|
||||
unarchive:
|
||||
src: "{{ prometheus_tarball_url }}"
|
||||
dest: "{{ prometheus_install_path }}"
|
||||
copy: no
|
||||
creates: "{{ prometheus_daemon_dir }}"
|
||||
|
||||
- name: create prometheus /usr/local/bin links
|
||||
file:
|
||||
src: "{{ prometheus_daemon_dir }}/{{ item }}"
|
||||
dest: "/usr/local/bin/{{ item }}"
|
||||
state: link
|
||||
with_items:
|
||||
- "prometheus"
|
||||
- "promtool"
|
||||
|
||||
- name: mkdir for config and data
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ prometheus_user }}"
|
||||
group: "{{ prometheus_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
with_items:
|
||||
- "{{ prometheus_rule_path }}"
|
||||
- "{{ prometheus_file_sd_config_path }}"
|
||||
- "{{ prometheus_db_path }}"
|
||||
|
||||
- name: copy prometheus systemd config
|
||||
template:
|
||||
src: "prometheus.service.j2"
|
||||
dest: "/lib/systemd/system/prometheus.service"
|
||||
|
||||
- name: copy rule files from playbook's, if any
|
||||
copy:
|
||||
src: "{{ playbook_dir }}/{{ item.value.src }}"
|
||||
dest: "{{ prometheus_rule_path }}/{{ item.value.dest }}"
|
||||
validate: "{{ prometheus_daemon_dir }}/promtool check rules %s"
|
||||
with_dict: '{{ prometheus_rule_files | default({}) }}'
|
||||
notify:
|
||||
- reload prometheus
|
||||
|
||||
- name: copy prometheus main config file from role's default, if necessary
|
||||
template:
|
||||
src: "prometheus.yml.j2"
|
||||
dest: "{{ prometheus_config_path }}/prometheus.yml"
|
||||
validate: "{{ prometheus_daemon_dir }}/promtool check config %s"
|
||||
when: prometheus_conf_main is not defined
|
||||
notify:
|
||||
- reload prometheus
|
||||
|
||||
- name: copy prometheus main config file from playbook's, if any
|
||||
template:
|
||||
src: "{{ playbook_dir }}/{{ prometheus_conf_main }}"
|
||||
dest: "{{ prometheus_config_path }}/prometheus.yml"
|
||||
validate: "{{ prometheus_daemon_dir }}/promtool check config %s"
|
||||
when: prometheus_conf_main is defined
|
||||
notify:
|
||||
- reload prometheus
|
||||
|
||||
- name: enable prometheus service
|
||||
service:
|
||||
name: prometheus
|
||||
enabled: yes
|
||||
state: started
|
18
roles/service-prometheus/templates/alertmanager.service.j2
Normal file
18
roles/service-prometheus/templates/alertmanager.service.j2
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Unit]
|
||||
Description=Prometheus alertmanager.
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
PIDFile={{ prometheus_pid_path }}/alertmanager.pid
|
||||
|
||||
User={{ prometheus_user }}
|
||||
Group={{ prometheus_group }}
|
||||
|
||||
{% if prometheus_opts is defined %}
|
||||
ExecStart={{ alertmanager_daemon_dir }}/alertmanager {{ alertmanager_default_opts }} {{ alertmanager_opts }}
|
||||
{% else %}
|
||||
ExecStart={{ alertmanager_daemon_dir }}/alertmanager {{ alertmanager_default_opts }}
|
||||
{% endif %}
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
18
roles/service-prometheus/templates/node_exporter.service.j2
Normal file
18
roles/service-prometheus/templates/node_exporter.service.j2
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Unit]
|
||||
Description=node_exporter - Prometheus exporter for machine metrics.
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
PIDFile={{ prometheus_pid_path }}/node_exporter.pid
|
||||
|
||||
User={{ prometheus_user }}
|
||||
Group={{ prometheus_group }}
|
||||
|
||||
{% if node_exporter_opts is defined %}
|
||||
ExecStart={{ node_exporter_daemon_dir }}/node_exporter {{ node_exporter_opts }}
|
||||
{% else %}
|
||||
ExecStart={{ node_exporter_daemon_dir }}/node_exporter
|
||||
{% endif %}
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
18
roles/service-prometheus/templates/prometheus.service.j2
Normal file
18
roles/service-prometheus/templates/prometheus.service.j2
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Unit]
|
||||
Description=Prometheus server daemon.
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
PIDFile={{ prometheus_pid_path }}/prometheus.pid
|
||||
|
||||
User={{ prometheus_user }}
|
||||
Group={{ prometheus_group }}
|
||||
|
||||
{% if prometheus_opts is defined %}
|
||||
ExecStart={{ prometheus_daemon_dir }}/prometheus {{ prometheus_default_opts }} {{ prometheus_node_exporter_opts }}
|
||||
{% else %}
|
||||
ExecStart={{ prometheus_daemon_dir }}/prometheus {{ prometheus_default_opts }}
|
||||
{% endif %}
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
36
roles/service-prometheus/templates/prometheus.yml.j2
Normal file
36
roles/service-prometheus/templates/prometheus.yml.j2
Normal file
|
@ -0,0 +1,36 @@
|
|||
global:
|
||||
scrape_interval: 15s # By default, scrape targets every 15 seconds.
|
||||
evaluation_interval: 15s # By default, scrape targets every 15 seconds.
|
||||
# scrape_timeout is set to the global default (10s).
|
||||
|
||||
# The labels to add to any time series or alerts when communicating with
|
||||
# external systems (federation, remote storage, Alertmanager).
|
||||
external_labels:
|
||||
monitor: 'master'
|
||||
|
||||
{% if prometheus_rule_files is defined %}
|
||||
# Rule files specifies a list of files from which rules are read.
|
||||
rule_files:
|
||||
{% for (key, value) in prometheus_rule_files.iteritems() %}
|
||||
- {{ prometheus_rule_path }}/{{ value.dest }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# A list of scrape configurations.
|
||||
scrape_configs:
|
||||
|
||||
- job_name: 'prometheus'
|
||||
scrape_interval: 10s
|
||||
scrape_timeout: 10s
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
|
||||
- job_name: "node"
|
||||
file_sd_configs:
|
||||
- files:
|
||||
- '{{ prometheus_file_sd_config_path }}/*.json'
|
||||
- '{{ prometheus_file_sd_config_path }}/*.yml'
|
||||
- '{{ prometheus_file_sd_config_path }}/*.yaml'
|
||||
#static_configs:
|
||||
#- targets:
|
||||
# - "localhost:9100"
|
Loading…
Reference in a new issue