From 048ce9f89fd49e02b16467f44ca6514fcfe9850c Mon Sep 17 00:00:00 2001 From: rajeshP524 Date: Fri, 5 Apr 2024 15:59:50 +0530 Subject: [PATCH] Fix Ceph collectd plugin errors for OSP17 Ceph SocketPath has changed in OSP17. Now the path includes fsid also. Change-Id: I2afb25cf2ef971b668c9c92f9552f35863ee0eb3 --- .../collectd-openstack/files/collectd_ceph_storage.py | 5 +++-- .../install/roles/collectd-openstack/tasks/main.yml | 11 +++++++++++ .../templates/cephstorage.collectd.conf.j2 | 4 ++++ .../templates/controller.collectd.conf.j2 | 4 ++++ ansible/install/roles/collectd/tasks/main.yml | 11 +++++++++++ .../collectd/templates/cephstorage.collectd.conf.j2 | 4 ++++ .../collectd/templates/controller.collectd.conf.j2 | 4 ++++ .../collectd-openstack/files/collectd_ceph_storage.py | 5 +++-- 8 files changed, 44 insertions(+), 4 deletions(-) diff --git a/ansible/install/roles/collectd-openstack/files/collectd_ceph_storage.py b/ansible/install/roles/collectd-openstack/files/collectd_ceph_storage.py index 5cba7ec2a..471d69e0b 100644 --- a/ansible/install/roles/collectd-openstack/files/collectd_ceph_storage.py +++ b/ansible/install/roles/collectd-openstack/files/collectd_ceph_storage.py @@ -313,8 +313,9 @@ class CollectdCephStorage(object): if check_output: output = subprocess.check_output(command) else: - stdin, stdout, stderr = os.popen3(' '.join(command)) - output = stdout.read() + process = subprocess.Popen(' '.join(command), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + output = stdout.decode('utf-8') except Exception as exc: collectd.error( 'collectd-ceph-storage: {} exception: {}'.format(command, exc)) diff --git a/ansible/install/roles/collectd-openstack/tasks/main.yml b/ansible/install/roles/collectd-openstack/tasks/main.yml index 88eff29cc..e58b6b354 100644 --- a/ansible/install/roles/collectd-openstack/tasks/main.yml +++ b/ansible/install/roles/collectd-openstack/tasks/main.yml @@ -342,6 +342,17 @@ when: "('CephStorage' in group_names and ceph_storage_collectd_plugin)" # End CephStorage OSD monitoring +- name: Get Ceph cluster fsid + shell: ls /var/run/ceph/ + register: ceph_cluster_fsid + become: true + when: "rhosp_version is version('17.0', '>=')" + delegate_to: controller-0 + +- name: set fact for ceph cluster id + set_fact: + ceph_cluster_fsid: "{{ ceph_cluster_fsid.stdout }}" + - name: Configure collectd.conf template: src: "{{config_type}}.collectd.conf.j2" diff --git a/ansible/install/roles/collectd-openstack/templates/cephstorage.collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/cephstorage.collectd.conf.j2 index 0096c4e0c..c54b46d05 100644 --- a/ansible/install/roles/collectd-openstack/templates/cephstorage.collectd.conf.j2 +++ b/ansible/install/roles/collectd-openstack/templates/cephstorage.collectd.conf.j2 @@ -110,7 +110,11 @@ PreCacheChain "PreCache" LongRunAvgLatency false ConvertSpecialMetricTypes true +{% if rhosp_version | float >= 17.0 %} + SocketPath "/var/run/ceph/{{ceph_cluster_fsid}}/ceph-osd.{{cephstorage_osd_socket.stdout}}.asok" +{% else %} SocketPath "/var/run/ceph/ceph-osd.{{cephstorage_osd_socket.stdout}}.asok" +{% endif %} diff --git a/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 index 8200d652d..300ae54e3 100644 --- a/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 +++ b/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 @@ -204,7 +204,11 @@ PreCacheChain "PreCache" LongRunAvgLatency false ConvertSpecialMetricTypes true +{% if rhosp_version | float >= 17.0 %} + SocketPath "/var/run/ceph/{{ceph_cluster_fsid}}/ceph-mon.{{inventory_hostname}}.asok" +{% else %} SocketPath "/var/run/ceph/ceph-mon.{{inventory_hostname}}.asok" +{% endif %} diff --git a/ansible/install/roles/collectd/tasks/main.yml b/ansible/install/roles/collectd/tasks/main.yml index ebc1b6aed..6efae3f6f 100644 --- a/ansible/install/roles/collectd/tasks/main.yml +++ b/ansible/install/roles/collectd/tasks/main.yml @@ -165,6 +165,17 @@ when: "('CephStorage' in group_names and ceph_storage_collectd_plugin) and (rhosp_version is version('17.0', '<'))" # End CephStorage OSD monitoring +- name: Get Ceph cluster fsid + shell: ls /var/run/ceph/ + register: ceph_cluster_fsid + become: true + when: "rhosp_version is version('17.0', '>=')" + delegate_to: controller-0 + +- name: set fact for ceph cluster id + set_fact: + ceph_cluster_fsid: "{{ ceph_cluster_fsid.stdout }}" + - name: Get 1st OSD socket shell: cephadm shell -- ls /var/run/ceph/ | head -n 1 | egrep -o '[0-9]+' register: cephstorage_osd_socket diff --git a/ansible/install/roles/collectd/templates/cephstorage.collectd.conf.j2 b/ansible/install/roles/collectd/templates/cephstorage.collectd.conf.j2 index 8b9d9236b..a338a29a4 100644 --- a/ansible/install/roles/collectd/templates/cephstorage.collectd.conf.j2 +++ b/ansible/install/roles/collectd/templates/cephstorage.collectd.conf.j2 @@ -109,7 +109,11 @@ PreCacheChain "PreCache" LongRunAvgLatency false ConvertSpecialMetricTypes true +{% if rhosp_version | float >= 17.0 %} + SocketPath "/var/run/ceph/{{ceph_cluster_fsid}}/ceph-osd.{{cephstorage_osd_socket.stdout}}.asok" +{% else %} SocketPath "/var/run/ceph/ceph-osd.{{cephstorage_osd_socket.stdout}}.asok" +{% endif %} diff --git a/ansible/install/roles/collectd/templates/controller.collectd.conf.j2 b/ansible/install/roles/collectd/templates/controller.collectd.conf.j2 index 9de8a4be6..a24d57261 100644 --- a/ansible/install/roles/collectd/templates/controller.collectd.conf.j2 +++ b/ansible/install/roles/collectd/templates/controller.collectd.conf.j2 @@ -121,7 +121,11 @@ PreCacheChain "PreCache" LongRunAvgLatency false ConvertSpecialMetricTypes true +{% if rhosp_version | float >= 17.0 %} + SocketPath "/var/run/ceph/{{ceph_cluster_fsid}}/ceph-mon.{{inventory_hostname}}.asok" +{% else %} SocketPath "/var/run/ceph/ceph-mon.{{inventory_hostname}}.asok" +{% endif %} diff --git a/browbeat-containers/collectd-openstack/files/collectd_ceph_storage.py b/browbeat-containers/collectd-openstack/files/collectd_ceph_storage.py index 4390b94a2..ca44eb198 100644 --- a/browbeat-containers/collectd-openstack/files/collectd_ceph_storage.py +++ b/browbeat-containers/collectd-openstack/files/collectd_ceph_storage.py @@ -313,8 +313,9 @@ class CollectdCephStorage(object): if check_output: output = subprocess.check_output(command) else: - stdin, stdout, stderr = os.popen3(' '.join(command)) - output = stdout.read() + process = subprocess.Popen(' '.join(command), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + output = stdout.decode('utf-8') except Exception as exc: collectd.error( 'collectd-ceph-storage: {} exception: {}'.format(command, exc))