
This patch introduces pacemaker monitoring in Browbeat. The 'pcs status' output is scraped and processed through a collectd python plugin, and metrics are visualized in Grafana panels. Change-Id: I587d186a068f721c65f85e6069e4beaa98bacde7
165 lines
6.1 KiB
YAML
165 lines
6.1 KiB
YAML
---
|
|
- name: Fetch log file paths
|
|
include_vars:
|
|
file: "vars/{{ rhosp_major }}.yml"
|
|
|
|
- name: (Undercloud) Get ctlplane ip address
|
|
shell: ip r | egrep 'br-ctlplane\s*proto kernel' | awk '{print $NF}'
|
|
register: undercloud_ctlplane_ip_address
|
|
when: "'Undercloud' in group_names"
|
|
|
|
- name: Configure mysql for collectd.conf
|
|
block:
|
|
- name: (Controller) Get mysql root password
|
|
command: hiera -c /etc/puppet/hiera.yaml mysql::server::root_password
|
|
become: true
|
|
register: mysql_root_password
|
|
when: "'Controller' in group_names"
|
|
|
|
- name: (Undercloud) Get mysql root password
|
|
shell: |
|
|
grep undercloud_mysql_root_password: undercloud-passwords.conf | sed 's/undercloud_mysql_root_password: //g'
|
|
register: undercloud_mysql_password
|
|
when: "'Undercloud' in group_names"
|
|
|
|
- name: Configure rabbitmq monitoring
|
|
block:
|
|
- name: (Undercloud) Get Rabbitmq username
|
|
command: hiera -c /etc/puppet/hiera.yaml rabbitmq::default_user
|
|
become: true
|
|
register: undercloud_rabbitmq_username
|
|
when: "('Undercloud' in group_names and rabbitmq_undercloud_collectd_plugin)"
|
|
|
|
- name: (Undercloud) Get Rabbitmq password
|
|
shell: |
|
|
grep undercloud_rabbit_password /home/stack/undercloud-passwords.conf | sed 's/undercloud_rabbit_password: //g'
|
|
register: undercloud_rabbitmq_password
|
|
when: "('Undercloud' in group_names and rabbitmq_undercloud_collectd_plugin)"
|
|
|
|
- name: (Controller) Get Rabbitmq username
|
|
command: hiera -c /etc/puppet/hiera.yaml rabbitmq::default_user
|
|
register: controller0_rabbitmq_username
|
|
become: true
|
|
when: "'Controller' in group_names and rabbitmq_controller_collectd_plugin and inventory_hostname == groups['Controller'][0]"
|
|
|
|
- name: (Controller) Get Rabbitmq password
|
|
command: hiera -c /etc/puppet/hiera.yaml rabbitmq::default_pass
|
|
register: controller0_rabbitmq_password
|
|
become: true
|
|
when: "'Controller' in group_names and rabbitmq_controller_collectd_plugin and inventory_hostname == groups['Controller'][0]"
|
|
|
|
- name: Check if Container Files Directory exists
|
|
stat:
|
|
path: "{{ ansible_user_dir }}/browbeat/browbeat-containers/collectd-openstack"
|
|
register: directory_exists
|
|
|
|
- name: Clone browbeat if it doesn't exists on host
|
|
git:
|
|
repo: https://github.com/openstack/browbeat.git
|
|
dest: "{{ ansible_user_dir }}/browbeat"
|
|
version: master
|
|
when: not (directory_exists.stat.isdir is defined and directory_exists.stat.isdir)
|
|
|
|
- name: Create configuration directory
|
|
file:
|
|
path: "{{ browbeat_containers_path }}/collectd-openstack/config"
|
|
state: directory
|
|
|
|
- name: Configure collectd.conf
|
|
template:
|
|
src: "{{ config_type }}.collectd.conf.j2"
|
|
dest: "{{ browbeat_containers_path }}/collectd-openstack/config/collectd.conf"
|
|
when: "config_type != 'compute'"
|
|
|
|
- name: Configure compute collectd.conf
|
|
template:
|
|
src: "{{ config_type }}.collectd.conf.j2"
|
|
dest: "{{ browbeat_containers_path }}/collectd-openstack/config/collectd.conf"
|
|
when: "config_type == 'compute' and not ovn_compute_collectd_plugin"
|
|
|
|
- name: Configure compute collectd.conf
|
|
template:
|
|
src: "{{ config_type }}.collectd.conf.j2"
|
|
dest: "{{ browbeat_containers_path }}/collectd-openstack/config/collectd.conf"
|
|
when: "config_type == 'compute' and ovn_compute_collectd_plugin"
|
|
|
|
- name: Create pipe for to use pcs cli inside collectd container
|
|
shell: |
|
|
sudo mkfifo /home/"{{ host_remote_user }}"/collectd_pipe
|
|
become: yes
|
|
become_user: root
|
|
ignore_errors: yes
|
|
when: "config_type == 'controller' and pacemaker_monitoring"
|
|
|
|
- name: Create script to run eval on pcs pipe
|
|
file:
|
|
path: "/home/{{ host_remote_user }}/collectd_pipe_eval.sh"
|
|
state: touch
|
|
mode: 0775
|
|
owner: root
|
|
become: yes
|
|
become_user: root
|
|
ignore_errors: yes
|
|
when: "config_type == 'controller' and pacemaker_monitoring"
|
|
|
|
- name: Add content to script to run eval on pcs pipe
|
|
copy:
|
|
dest: "/home/{{ host_remote_user }}/collectd_pipe_eval.sh"
|
|
content: |
|
|
while true; do eval "$(cat /home/{{ host_remote_user }}/collectd_pipe)"; done
|
|
become: yes
|
|
become_user: root
|
|
ignore_errors: yes
|
|
when: "config_type == 'controller' and pacemaker_monitoring"
|
|
|
|
- name: Run script to run eval on pcs pipe
|
|
shell: |
|
|
nohup ./collectd_pipe_eval.sh > /var/log/containers/stdouts/collectd_pacemaker.out 2>&1 &
|
|
become: yes
|
|
become_user: root
|
|
ignore_errors: yes
|
|
args:
|
|
chdir: "/home/{{ host_remote_user }}"
|
|
when: "config_type == 'controller' and pacemaker_monitoring"
|
|
|
|
- name: Build and Run container
|
|
block:
|
|
- name: Build collectd-openstack container
|
|
shell: |
|
|
{{ container_cli }} build -t collectd-openstack {{ browbeat_containers_path }}/collectd-openstack/
|
|
become: true
|
|
- name: Run collectd-openstack container
|
|
shell: |
|
|
{{ container_cli }} rm -f collectd-{{ config_type }}
|
|
{{ container_cli }} run --name collectd-{{ config_type }} \
|
|
--network host --pid host \
|
|
--privileged -d \
|
|
-v /var/log/containers:/var/log/containers \
|
|
-v /dev:/dev \
|
|
{% if config_type == 'controller' or config_type == 'undercloud' %}
|
|
-v /var/lib/mysql/mysql.sock:/var/lib/mysql/mysql.sock \
|
|
{% endif %}
|
|
{% if config_type == 'controller' or config_type == 'compute' %}
|
|
{% if ovs_flows_monitoring %}
|
|
-v /etc/openvswitch/:/etc/openvswitch/ -v /var/run/openvswitch/:/var/run/openvswitch/ \
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if config_type == 'controller' %}
|
|
{% if ovn_monitoring %}
|
|
-v /var/lib/openvswitch/ovn/ovnnb_db.sock:/var/lib/openvswitch/ovn/ovnnb_db.sock \
|
|
-v /var/lib/openvswitch/ovn/ovnsb_db.sock:/var/lib/openvswitch/ovn/ovnsb_db.sock \
|
|
{% endif %}
|
|
{% if pacemaker_monitoring %}
|
|
-v /home/{{ host_remote_user }}/collectd_pipe:/collectd_pipe \
|
|
{% endif %}
|
|
{% endif %}
|
|
collectd-openstack
|
|
become: yes
|
|
|
|
- name: Add stack user to wheel
|
|
shell: |
|
|
podman exec -it -u root collectd-controller usermod -G wheel stack
|
|
become: yes
|
|
become_user: root
|
|
when: "config_type == 'controller' and ovn_monitoring"
|