Skip to content

Commit 926036a

Browse files
[telemetry_verify_metrics]: Add ovn feature tests (infrawatch#313)
Related-Issue: https://issues.redhat.com/browse/OSPRH-19142 Related-Issue: https://issues.redhat.com/browse/OSPRH-19146 Related-Issue: https://issues.redhat.com/browse/OSPRH-19143 Co-authored-by: Yatin Karel <[email protected]>
1 parent 471ee7f commit 926036a

File tree

5 files changed

+140
-1
lines changed

5 files changed

+140
-1
lines changed

.zuul.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@
144144
- kepler
145145
- mariadb
146146
- volume_pool
147+
- ovn
147148
cifmw_extras:
148149
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/multinode-ci.yml"
149150
- "@{{ ansible_user_dir }}/{{ zuul.projects['github.com/openstack-k8s-operators/ci-framework'].src_dir }}/scenarios/centos-9/hci_ceph_backends.yml"

roles/telemetry_verify_metrics/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ Tests:
3131
- Use openstack observabilityclient to verify OpenstackNetworkExporter metrics are stored in Prometheus
3232
- Verify Kepler metrics are being exposed and stored
3333
- Use openstack observabilityclient to verify Kepler metrics are stored in Prometheus
34+
- Verify OVN metrics are being exposed and stored
35+
- Use openstack observabilityclient to verify OVN metrics are stored in Prometheus
3436

3537
Role Variables
3638
--------------
3739
openstack\_cmd - command to access openstack cli. For example: "oc rsh openstackclient openstack"
38-
telemetry\_verify\_metrics\_metric\_sources\_to\_test - List of sources to test. Current set of possible sources: ceilometer\_compute\_agent, ceilometer\_central\_agent, ceilometer\_ipmi_\_agent, node\_exporter, rabbitmq, kepler, openstack\_network\_exporter, volume\_pool
40+
telemetry\_verify\_metrics\_metric\_sources\_to\_test - List of sources to test. Current set of possible sources: ceilometer\_compute\_agent, ceilometer\_central\_agent, ceilometer\_ipmi_\_agent, node\_exporter, rabbitmq, kepler, openstack\_network\_exporter, volume\_pool, ovn
3941

4042
Example Playbook
4143
----------------

roles/telemetry_verify_metrics/defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ telemetry_verify_metrics_metric_sources_to_test:
1010
- openstack_network_exporter
1111
- ceilometer_prom_exporter
1212
- mariadb
13+
- ovn
1314
# NOTE: IPMI metrics can only be verified when compute nodes are baremetal
1415
# - ceilometer_ipmi_agent
1516
# NOTE: volume pool metrics can only be verified when a pool with a correct backend is configured

roles/telemetry_verify_metrics/tasks/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,9 @@
112112
file: verify_ceilometer_volume_pool_metrics.yml
113113
tags: test
114114
when: '"volume_pool" in telemetry_verify_metrics_metric_sources_to_test'
115+
116+
- name: Verify OVN metrics are being exposed and stored
117+
ansible.builtin.include_tasks:
118+
file: verify_ovn_metrics.yml
119+
tags: test
120+
when: '"ovn" in telemetry_verify_metrics_metric_sources_to_test'
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
- name: Get ovn-northd metric services
2+
ansible.builtin.shell: |
3+
oc get svc -l service=ovn-northd,metrics=enabled -o name -n openstack
4+
register: ovn_northd_metric
5+
changed_when: false
6+
7+
- name: Verify ovn-northd scrapeconfig exists
8+
ansible.builtin.include_role:
9+
name: common
10+
vars:
11+
common_cr_list:
12+
- kind: scrapeconfigs.monitoring.rhobs
13+
name: telemetry-ovn-northd
14+
when: ovn_northd_metric.stdout != ""
15+
16+
- name: |
17+
TEST Use openstack observabilityclient to verify ovn-northd metrics are stored in prometheus
18+
vars:
19+
ovn_northd_metrics:
20+
- ovn_northd_status
21+
- ovn_northd_pstream_open_total
22+
- ovn_northd_stream_open_total
23+
- ovn_northd_txn_incomplete_total
24+
- ovn_northd_txn_success_total
25+
- ovn_northd_txn_unchanged_total
26+
ansible.builtin.shell: |
27+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
28+
register: result
29+
delay: 30
30+
retries: 10
31+
changed_when: false
32+
until: result.rc == 0 and item in result.stdout
33+
loop: "{{ ovn_northd_metrics }}"
34+
when: ovn_northd_metric.stdout != ""
35+
36+
- name: Get ovn-controller metric services
37+
ansible.builtin.shell: |
38+
oc get svc -l service=ovn-controller-metrics,metrics=enabled -o name -n openstack
39+
register: ovn_controller_metric
40+
changed_when: false
41+
42+
- name: Verify ovn-controller scrapeconfig exists
43+
ansible.builtin.include_role:
44+
name: common
45+
vars:
46+
common_cr_list:
47+
- kind: scrapeconfigs.monitoring.rhobs
48+
name: telemetry-ovn-controller
49+
when: ovn_controller_metric.stdout != ""
50+
51+
- name: |
52+
TEST Use openstack observabilityclient to verify ovn controller metrics are stored in prometheus
53+
vars:
54+
ovn_controller_metrics:
55+
- ovnc_rconn_queued
56+
- ovnc_txn_incomplete
57+
- ovnc_bridge_mappings
58+
- ovnc_encap_ip
59+
- ovnc_encap_type
60+
- ovnc_sb_connection_method
61+
- ovnc_router_port_traffic_pkts
62+
- ovnc_router_port_traffic_bytes
63+
- ovs_build_info
64+
- ovs_dpdk_initialized
65+
- ovs_bridge_flow_count
66+
- ovs_bridge_port_count
67+
- ovs_datapath_flows_total
68+
- ovs_datapath_lookup_hits_total
69+
- ovs_datapath_lookup_missed_total
70+
- ovs_datapath_lookup_lost_total
71+
- ovs_memory_handlers_total
72+
- ovs_memory_ports_total
73+
- ovs_memory_revalidators_total
74+
- ovs_memory_rules_total
75+
ansible.builtin.shell: |
76+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
77+
register: result
78+
delay: 30
79+
retries: 10
80+
changed_when: false
81+
until: result.rc == 0 and item in result.stdout and ":1981" in result.stdout
82+
loop: "{{ ovn_controller_metrics }}"
83+
when: ovn_controller_metric.stdout != ""
84+
85+
- name: Get RAFT metric services
86+
ansible.builtin.shell: |
87+
oc get svc -n openstack -o name \
88+
-l 'service in (ovsdbserver-nb, ovsdbserver-sb)',metrics=enabled
89+
register: ovn_raft_metric
90+
changed_when: false
91+
92+
- name: Verify RAFT scrapeconfig exists
93+
ansible.builtin.include_role:
94+
name: common
95+
vars:
96+
common_cr_list:
97+
- kind: scrapeconfigs.monitoring.rhobs
98+
name: telemetry-ovsdbserver-nb
99+
- kind: scrapeconfigs.monitoring.rhobs
100+
name: telemetry-ovsdbserver-sb
101+
when: ovn_raft_metric.stdout != ""
102+
103+
- name: |
104+
TEST Use openstack observabilityclient to verify RAFT metrics are stored in prometheus
105+
vars:
106+
ovn_raft_metrics:
107+
- ovn_raft_cluster_election_timer
108+
- ovn_raft_cluster_id
109+
- ovn_raft_cluster_server_id
110+
- ovn_raft_cluster_server_role
111+
- ovn_raft_cluster_server_status
112+
- ovn_raft_cluster_server_vote
113+
- ovn_raft_cluster_term
114+
- ovn_raft_cluster_leader
115+
- ovn_raft_cluster_inbound_connections_total
116+
- ovn_raft_cluster_outbound_connections_total
117+
- ovn_raft_log_entry_index
118+
- ovn_raft_cluster_log_index_next
119+
- ovn_raft_cluster_log_not_committed
120+
- ovn_raft_cluster_log_not_applied
121+
ansible.builtin.shell: |
122+
{{ openstack_cmd }} metric show --disable-rbac {{ item }}
123+
register: result
124+
delay: 30
125+
retries: 10
126+
changed_when: false
127+
until: result.rc == 0 and item in result.stdout and ":1981" in result.stdout
128+
loop: "{{ ovn_raft_metrics }}"
129+
when: ovn_raft_metric.stdout != ""

0 commit comments

Comments
 (0)