164 lines
6.5 KiB
YAML
164 lines
6.5 KiB
YAML
---
|
|
#--------------------------------------------------------------#
|
|
# Register infra metrics [add_metrics][infra_register]
|
|
#--------------------------------------------------------------#
|
|
- name: render infra targets to victoria
|
|
tags: [ infra_register, register, add_metrics ]
|
|
ignore_errors: true
|
|
delegate_to: '{{ item }}'
|
|
loop: '{{ groups["infra"]|default([]) }}'
|
|
template: src=prometheus/infra.yml.j2 dest=/infra/targets/infra/infra-{{ infra_seq }}.yml owner=victoria group=infra mode=0640
|
|
|
|
# Keep infra host self-node metrics registration managed in infra role.
|
|
# This avoids dependence on node_monitor completion order for local node target.
|
|
- name: render infra self node target to victoria
|
|
tags: [ infra_register, register, add_metrics ]
|
|
ignore_errors: true
|
|
delegate_to: '{{ item }}'
|
|
loop: '{{ groups["infra"]|default([]) }}'
|
|
copy:
|
|
dest: /infra/targets/node/{{ item }}.yml
|
|
owner: victoria
|
|
group: infra
|
|
mode: '0640'
|
|
content: |
|
|
# {{ item }}
|
|
- labels:
|
|
ip: "{{ item }}"
|
|
ins: "{{ hostvars[item]['nodename'] | default(item) }}"
|
|
host: "{{ hostvars[item]['ansible_hostname'] | default(hostvars[item]['nodename'] | default(item)) }}"
|
|
cls: "{{ hostvars[item]['node_cluster'] | default('infra') }}"
|
|
targets:
|
|
- "{{ item }}:{{ hostvars[item]['node_exporter_port'] | default(9100) }}"
|
|
|
|
#--------------------------------------------------------------#
|
|
# Register infra logs to vector [add_logs][infra_register]
|
|
#--------------------------------------------------------------#
|
|
- name: register infra logs to vector
|
|
tags: [ infra_register, register, add_logs ]
|
|
when: vector_enabled|default(true)|bool
|
|
ignore_errors: true
|
|
block:
|
|
- name: render infra vector logging config
|
|
template: src=vector/nginx.yaml dest=/etc/vector/nginx.yaml mode=0600
|
|
- name: reload vector to consume infra log
|
|
systemd: name=vector state=reloaded enabled=yes daemon_reload=yes
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# Render VictoriaMetrics datasource [vmetrics_register]
|
|
#--------------------------------------------------------------#
|
|
- name: render vmetrics datasource to grafana
|
|
tags: [ infra_register, register, add_ds ]
|
|
delegate_to: '{{ infra_host }}'
|
|
loop: '{{ groups["infra"] | default([]) }}'
|
|
loop_control:
|
|
loop_var: infra_host
|
|
ignore_errors: true
|
|
when: vmetrics_enabled|bool
|
|
copy:
|
|
dest: /infra/datasources/{{ ds_name }}.json
|
|
content: |
|
|
{
|
|
"name": "{{ ds_name }}",
|
|
"type": "prometheus",
|
|
"access": "proxy",
|
|
"url": "http://{{ inventory_hostname }}:{{ vmetrics_port|default(8428) }}",
|
|
"isDefault": false,
|
|
"editable": true,
|
|
"jsonData": {
|
|
"timeInterval": "2s",
|
|
"queryTimeout": "60s",
|
|
"tlsAuth": false,
|
|
"tlsAuthWithCACert": false
|
|
}
|
|
}
|
|
mode: 0600
|
|
vars:
|
|
ds_name: "vmetrics-{{ infra_seq }}"
|
|
|
|
#--------------------------------------------------------------#
|
|
# Render VictoriaLogs datasource [vlogs_register]
|
|
#--------------------------------------------------------------#
|
|
- name: render vlogs datasource to grafana
|
|
tags: [ infra_register, register, add_ds ]
|
|
delegate_to: '{{ infra_host }}'
|
|
loop: '{{ groups["infra"] | default([]) }}'
|
|
loop_control:
|
|
loop_var: infra_host
|
|
ignore_errors: true
|
|
when: vlogs_enabled|bool
|
|
copy:
|
|
dest: /infra/datasources/{{ ds_name }}.json
|
|
content: |
|
|
{
|
|
"name": "{{ ds_name }}",
|
|
"type": "victoriametrics-logs-datasource",
|
|
"access": "proxy",
|
|
"url": "http://{{ inventory_hostname }}:{{ vlogs_port|default(9428) }}",
|
|
"isDefault": false,
|
|
"editable": true
|
|
}
|
|
mode: 0600
|
|
vars:
|
|
ds_name: "vlogs-{{ infra_seq }}"
|
|
|
|
#--------------------------------------------------------------#
|
|
# Render VictoriaTraces datasource [vtraces_register]
|
|
#--------------------------------------------------------------#
|
|
- name: render vtraces datasource to grafana
|
|
tags: [ infra_register, register, add_ds ]
|
|
delegate_to: '{{ infra_host }}'
|
|
loop: '{{ groups["infra"] | default([]) }}'
|
|
loop_control:
|
|
loop_var: infra_host
|
|
ignore_errors: true
|
|
when: vtraces_enabled|bool
|
|
copy:
|
|
dest: /infra/datasources/{{ ds_name }}.json
|
|
content: |
|
|
{
|
|
"name": "{{ ds_name }}",
|
|
"type": "jaeger",
|
|
"access": "proxy",
|
|
"url": "http://{{ inventory_hostname }}:{{ vtraces_port|default(10428) }}",
|
|
"isDefault": false,
|
|
"editable": true
|
|
}
|
|
mode: 0600
|
|
vars:
|
|
ds_name: "vtraces-{{ infra_seq }}"
|
|
|
|
#--------------------------------------------------------------#
|
|
# Load Victoria datasources via Grafana API [victoria_load_ds]
|
|
#--------------------------------------------------------------#
|
|
- name: load victoria datasources to grafana
|
|
tags: [ infra_register, register, add_ds ]
|
|
delegate_to: '{{ infra_host }}'
|
|
loop: '{{ groups["infra"] | default([]) }}'
|
|
loop_control:
|
|
loop_var: infra_host
|
|
ignore_errors: true
|
|
shell: |
|
|
{% if vmetrics_enabled|bool %}
|
|
curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vmetrics-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true
|
|
curl -sS -X POST "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' -d @/infra/datasources/vmetrics-{{ infra_seq }}.json
|
|
{% endif %}
|
|
{% if vlogs_enabled|bool %}
|
|
curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vlogs-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true
|
|
curl -sS -X POST "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' -d @/infra/datasources/vlogs-{{ infra_seq }}.json
|
|
{% endif %}
|
|
{% if vtraces_enabled|bool %}
|
|
curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vtraces-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true
|
|
curl -sS -X POST "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' -d @/infra/datasources/vtraces-{{ infra_seq }}.json
|
|
{% endif %}
|
|
true
|
|
args: { executable: /bin/bash }
|
|
vars:
|
|
gf_port: "{{ grafana_port|default(3000) }}"
|
|
gf_user: "{{ grafana_admin_username|default('admin') }}"
|
|
gf_pass: "{{ grafana_admin_password|default('pigsty') }}"
|
|
|
|
|
|
...
|