prometheus: First version of role
This commit is contained in:
parent
051acc86cc
commit
9b1aa236c5
6 changed files with 172 additions and 0 deletions
23
roles/prometheus/files/prometheus.service
Normal file
23
roles/prometheus/files/prometheus.service
Normal file
|
@ -0,0 +1,23 @@
|
|||
[Unit]
|
||||
Description=Prometheus
|
||||
After=network-online.target
|
||||
Requires=local-fs.target
|
||||
After=local-fs.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Environment="GOMAXPROCS={{ ansible_processor_vcpus|default(ansible_processor_count) }}"
|
||||
User=prometheus
|
||||
Group=prometheus
|
||||
UMask=007
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
ExecStart=/usr/local/sbin/prometheus \
|
||||
--config.file=/srv/prometheus/prometheus.yml \
|
||||
--log.level=info \
|
||||
--storage.tsdb.path=/srv/prometheus/data \
|
||||
--storage.tsdb.retention.time=365d \
|
||||
--web.console.libraries=/usr/local/share/prometheus/console_libraries
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
5
roles/prometheus/handlers/main.yml
Normal file
5
roles/prometheus/handlers/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: Restart prometheus
|
||||
ansible.builtin.service:
|
||||
name: prometheus
|
||||
state: restarted
|
3
roles/prometheus/meta/main.yml
Normal file
3
roles/prometheus/meta/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- {role: nginx/server}
|
115
roles/prometheus/tasks/main.yml
Normal file
115
roles/prometheus/tasks/main.yml
Normal file
|
@ -0,0 +1,115 @@
|
|||
---
|
||||
- name: Create group
|
||||
ansible.builtin.group:
|
||||
name: prometheus
|
||||
gid: 305
|
||||
|
||||
- name: Create user
|
||||
ansible.builtin.user:
|
||||
name: prometheus
|
||||
comment: Service Prometheus
|
||||
createhome: false
|
||||
group: prometheus
|
||||
home: /var/empty
|
||||
shell: /sbin/nologin
|
||||
uid: 305
|
||||
|
||||
- name: Extract package
|
||||
ansible.builtin.unarchive:
|
||||
src: https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
|
||||
dest: /usr/local/src
|
||||
owner: root
|
||||
group: "{{ ansible_wheel }}"
|
||||
remote_src: true
|
||||
|
||||
- name: Copy binaries
|
||||
ansible.builtin.copy:
|
||||
dest: "/usr/local/sbin/{{ item }}"
|
||||
src: "/usr/local/src/prometheus-2.45.0.linux-amd64/{{ item }}"
|
||||
mode: "0755"
|
||||
owner: root
|
||||
group: "{{ ansible_wheel }}"
|
||||
remote_src: true
|
||||
with_items:
|
||||
- promtool
|
||||
- prometheus
|
||||
|
||||
- name: Create data directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
mode: "0750"
|
||||
owner: root
|
||||
group: prometheus
|
||||
with_items:
|
||||
- /export/prometheus
|
||||
- /export/prometheus/node.d
|
||||
|
||||
- name: Link data directory
|
||||
ansible.builtin.file:
|
||||
path: /srv/prometheus
|
||||
src: /export/prometheus
|
||||
state: link
|
||||
owner: root
|
||||
group: "{{ ansible_wheel }}"
|
||||
follow: false
|
||||
|
||||
- name: Create database directory
|
||||
ansible.builtin.file:
|
||||
path: /srv/prometheus/data
|
||||
state: directory
|
||||
mode: "0770"
|
||||
owner: root
|
||||
group: prometheus
|
||||
|
||||
- name: Create configuration
|
||||
ansible.builtin.template:
|
||||
dest: /srv/prometheus/prometheus.yml
|
||||
src: prometheus.yml.j2
|
||||
mode: "0640"
|
||||
owner: root
|
||||
group: prometheus
|
||||
notify: Restart prometheus
|
||||
|
||||
- name: Create host configs
|
||||
ansible.builtin.template:
|
||||
dest: "/srv/prometheus/node.d/{{ item }}"
|
||||
src: node.json.j2
|
||||
mode: "0640"
|
||||
owner: root
|
||||
group: prometheus
|
||||
notify: Restart prometheus
|
||||
with_items: "{{ groups['all'] }}"
|
||||
|
||||
- name: Create service file
|
||||
ansible.builtin.copy:
|
||||
dest: /etc/systemd/system/prometheus.service
|
||||
src: prometheus.service
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: "{{ ansible_wheel }}"
|
||||
notify: Restart prometheus
|
||||
|
||||
- name: Enable service
|
||||
ansible.builtin.service:
|
||||
name: prometheus
|
||||
state: started
|
||||
enabled: true
|
||||
|
||||
- name: Allow nginx to connect prometheus
|
||||
ansible.posix.seboolean:
|
||||
name: httpd_can_network_connect
|
||||
state: true
|
||||
persistent: true
|
||||
|
||||
- name: Copy nginx config
|
||||
ansible.builtin.copy:
|
||||
dest: "/etc/nginx/conf.d/{{ inventory_hostname }}/prometheus.conf"
|
||||
content: |
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:9090;
|
||||
}
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: "{{ ansible_wheel }}"
|
||||
notify: Restart nginx
|
10
roles/prometheus/templates/node.json.j2
Normal file
10
roles/prometheus/templates/node.json.j2
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"labels": {
|
||||
"instance": "{{ item }}"
|
||||
},
|
||||
"targets": [
|
||||
"{{ item }}"
|
||||
]
|
||||
}
|
||||
]
|
16
roles/prometheus/templates/prometheus.yml.j2
Normal file
16
roles/prometheus/templates/prometheus.yml.j2
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
global:
|
||||
scrape_interval: 1m
|
||||
scrape_timeout: 10s
|
||||
evaluation_interval: 1m
|
||||
|
||||
scrape_configs:
|
||||
- job_name: node
|
||||
scheme: https
|
||||
tls_config:
|
||||
ca_file: "{{ tls_certs }}/ca.crt"
|
||||
key_file: "{{ tls_private }}/{{ inventory_hostname }}.key"
|
||||
cert_file: "{{ tls_certs }}/{{ inventory_hostname }}.crt"
|
||||
file_sd_configs:
|
||||
- files:
|
||||
- /srv/prometheus/node.d/*.json
|
Loading…
Add table
Reference in a new issue