Skip to content

Commit 39cd9fe

Browse files
committed
Add playbook for deploying radosgw usage exporter
1 parent f5ce385 commit 39cd9fe

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
- name: Deploy RADOS gateway usage exporter
3+
hosts: monitoring
4+
gather_facts: false
5+
vars:
6+
venv: "{{ virtualenv_path }}/openstack"
7+
tasks:
8+
- name: Check ec2 credential for admin
9+
command: >
10+
{{ venv }}/bin/openstack
11+
ec2 credentials list --user admin
12+
--format json
13+
environment: "{{ openstack_auth_env }}"
14+
delegate_to: localhost
15+
register: credential_check
16+
17+
- name: Create ec2 credential if there's none
18+
command: >
19+
{{ venv }}/bin/openstack
20+
ec2 credentials create --user admin
21+
--format json
22+
environment: "{{ openstack_auth_env }}"
23+
delegate_to: localhost
24+
when: "{{ credential_check.stdout == [] }}"
25+
26+
- name: Query ec2 credential for admin
27+
command: >
28+
{{ venv }}/bin/openstack
29+
ec2 credentials list --user admin
30+
--format json
31+
environment: "{{ openstack_auth_env }}"
32+
delegate_to: localhost
33+
register: credential
34+
35+
- name: Get object storage endpoint
36+
command: >
37+
{{ venv }}/bin/openstack
38+
endpoint list --service object-store --interface internal
39+
--format json
40+
environment: "{{ openstack_auth_env }}"
41+
delegate_to: localhost
42+
register: endpoint
43+
44+
- name: Ensure radosgw_usage_exporter container is running
45+
community.docker.docker_container:
46+
name: radosgw_usage_exporter
47+
image: ghcr.io/stackhpc/radosgw_usage_exporter:0.1.0
48+
network_mode: host
49+
env:
50+
RADOSGW_SERVER: "{{ radosgw_server }}"
51+
ADMIN_ENTRY: admin
52+
ACCESS_KEY: "{{ ec2.Access }}"
53+
SECRET_KEY: "{{ ec2.Secret }}"
54+
vars:
55+
ec2: "{{ credential.stdout | from_json | first }}"
56+
host: "{{ endpoint.stdout | from_json | first }}"
57+
radosgw_server: "{{ host.URL | regex_replace('(https?://)([0-9.]+):([0-9]+)/.*', '\\1\\2:\\3') }}"
58+
become: true
59+
60+
- name: Get target ip addresses
61+
set_fact:
62+
prometheus_targets: "{{ prometheus_targets | default([]) +[( internal_net_name | net_ip( item ) + ':9242' )] }}"
63+
loop: "{{ groups['monitoring'] }}"
64+
65+
- name: Ensure radosgw_usage_exporter is targeted by prometheus-server
66+
blockinfile:
67+
path: /etc/kolla/prometheus-server/prometheus.yml
68+
block: |
69+
- honor_labels: true
70+
job_name: ceph_radosgw_usage_exporter
71+
scrape_interval: 15s
72+
static_configs:
73+
- targets:
74+
{% for item in prometheus_targets %}
75+
- {{ item }}
76+
{% endfor %}
77+
metric_relabel_configs:
78+
- source_labels: [owner,user]
79+
target_label: tenant_id
80+
separator: ""
81+
regex: (.+)
82+
replacement: ${1}
83+
become: true
84+
85+
- name: Restart prometheus-server
86+
ansible.builtin.command:
87+
cmd: systemctl restart kolla-prometheus_server-container
88+
become: true

0 commit comments

Comments
 (0)