16
16
on : [push, pull_request]
17
17
18
18
jobs :
19
- metrics :
20
- name : " [metrics] handler: ceilometer-metrics, collectd-metrics; application: prometheus"
21
- runs-on : ubuntu-20 .04
19
+ collectd- metrics-bridge :
20
+ name : " [metrics] transport: socket(sg-bridge); handler: collectd-metrics; application: prometheus"
21
+ runs-on : ubuntu-22 .04
22
22
env :
23
- QDR_CHANNEL_CEILOMTR : ceilometer/metering.sample
24
- QDR_CHANNEL_COLLECTD : collectd/metrics
23
+ QDR_CHANNEL : collectd/metrics
25
24
BRIDGE_SOCKET : /tmp/sg-bridge/test-socket
26
25
PROMETHEUS_IMAGE : prom/prometheus:latest
27
26
steps :
28
27
- name : Checkout code
29
- uses : actions/checkout@v2
28
+ uses : actions/checkout@v3
30
29
- name : Prepare environment
31
30
run : |
32
31
mkdir -p /opt/stack/
39
38
sudo rm -rf /etc/mysql
40
39
sudo dpkg -l | grep -i mysql
41
40
sudo apt-get clean
41
+ - name : Prepare environment for postgres-server installation
42
+ run : |
43
+ sudo apt remove postgresql-client-common
44
+ sudo apt install postgresql-client-common=238
45
+ sudo apt install postgresql-common
46
+ sudo python -m pip install --upgrade pip
47
+ sudo python -m pip install --upgrade virtualenv
42
48
- name : Install devstack
43
49
run : |
44
50
SOURCE=$(pwd)
@@ -58,17 +64,111 @@ jobs:
58
64
run : |
59
65
echo "${GITHUB_REF#refs/heads/}"
60
66
git ls-remote --exit-code --heads https://github.com/infrawatch/sg-bridge.git "$(echo ${GITHUB_REF#refs/heads/})"
61
- - name : Start sg-bridge for collectd from container image
67
+ - name : Start sg-bridge from container image
62
68
if : steps.bridge_branch.outcome != 'success'
63
69
run : |
64
70
docker run --name=sgbridge --network host $BRIDGE_VOLUME -d \
65
- $BRIDGE_IMAGE --amqp_url amqp://localhost:5666/$QDR_CHANNEL_COLLECTD \
71
+ $BRIDGE_IMAGE --amqp_url amqp://localhost:5666/$QDR_CHANNEL \
66
72
--gw_unix=$BRIDGE_SOCKET
67
- - name : Start sg-bridge for collectd with same branch
73
+ - name : Start sg-bridge from same branch
68
74
if : steps.bridge_branch.outcome == 'success'
69
75
run : |
70
76
docker run --name=sgbridge --network host $BRIDGE_VOLUME -d -uroot \
71
- -e GITHUB_REF -e BRIDGE_SOCKET -e QDR_CHANNEL_COLLECTD -e OPSTOOLS_REPO \
77
+ -e GITHUB_REF -e BRIDGE_SOCKET -e QDR_CHANNEL -e OPSTOOLS_REPO \
78
+ --workdir=$(dirname $BRIDGE_SOCKET) \
79
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/run_bridge.sh
80
+ - name : Install collectd
81
+ run : |
82
+ sudo apt-get install collectd
83
+ sudo systemctl stop collectd && sudo systemctl disable collectd
84
+ sudo cp ci/integration/metrics/collectd/collectd.conf /etc/collectd/collectd.conf
85
+ sudo touch /var/log/collectd.log && sudo chmod a+rw /var/log/collectd.log
86
+ sudo collectd -C ci/integration/metrics/collectd/collectd.conf
87
+ - name : Run sg-core to process metrics
88
+ run : |
89
+ docker run --name=sgcore -d -uroot --network host $BRIDGE_VOLUME -e OPSTOOLS_REPO \
90
+ --volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
91
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/collectd/run_sg.sh
92
+ - name : Run Prometheus to store metrics
93
+ run : |
94
+ docker run --name=prometheus -d --network host \
95
+ --volume ${{ github.workspace }}/ci/integration/metrics/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
96
+ $PROMETHEUS_IMAGE
97
+ - name : Debug output
98
+ run : |
99
+ sleep 360
100
+ echo "=========================== qdr =========================" && \
101
+ docker exec qdr qdstat -b 127.0.0.1:5666 -a
102
+ docker logs qdr
103
+ echo "========================= sg-core =======================" && \
104
+ docker logs sgcore
105
+ echo "======================== prometheus =====================" && \
106
+ docker logs prometheus
107
+ - name : Validate metrics processing
108
+ run : |
109
+ docker run --name=validate -uroot --network host \
110
+ --volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
111
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/collectd/run_validation.sh
112
+ # -------------------------------------------------------------------------------
113
+ ceilometer-metrics-bridge :
114
+ name : " [metrics] transport: socket(sg-bridge); handler: ceilometer-metrics; application: prometheus"
115
+ runs-on : ubuntu-22.04
116
+ env :
117
+ QDR_CHANNEL : anycast/ceilometer/metering.sample
118
+ BRIDGE_SOCKET : /tmp/sg-bridge/test-socket
119
+ PROMETHEUS_IMAGE : prom/prometheus:latest
120
+ steps :
121
+ - name : Checkout code
122
+ uses : actions/checkout@v3
123
+ - name : Prepare environment
124
+ run : |
125
+ mkdir -p /opt/stack/
126
+ sudo setfacl -Rdm u::7,g::0,o:0 /opt/stack
127
+ - name : Prepare environment for mysql-server installation # https://stackoverflow.com/a/66026366
128
+ run : |
129
+ sudo apt-get -f install -o Dpkg::Options::="--force-overwrite"
130
+ sudo apt-get purge mysql\*
131
+ sudo rm -rf /var/lib/mysql
132
+ sudo rm -rf /etc/mysql
133
+ sudo dpkg -l | grep -i mysql
134
+ sudo apt-get clean
135
+ - name : Prepare environment for postgres-server installation
136
+ run : |
137
+ sudo apt remove postgresql-client-common
138
+ sudo apt install postgresql-client-common=238
139
+ sudo apt install postgresql-common
140
+ sudo python -m pip install --upgrade pip
141
+ sudo python -m pip install --upgrade virtualenv
142
+ - name : Install devstack
143
+ run : |
144
+ SOURCE=$(pwd)
145
+ git clone http://github.com/openstack/devstack /opt/stack/devstack
146
+ pushd /opt/stack/devstack
147
+ cp $SOURCE/ci/integration/metrics/local.conf .
148
+ sudo apt-get update
149
+ ./stack.sh
150
+ popd
151
+ # start message bus services
152
+ - name : Start QDR service
153
+ run : |
154
+ docker run --name=qdr $QDR_VOLUME $QDR_PORT -d $QDR_IMAGE
155
+ - name : Check if sg-bridge repository has same topic branch
156
+ id : bridge_branch
157
+ continue-on-error : true
158
+ run : |
159
+ echo "${GITHUB_REF#refs/heads/}"
160
+ git ls-remote --exit-code --heads https://github.com/infrawatch/sg-bridge.git "$(echo ${GITHUB_REF#refs/heads/})"
161
+ - name : Start sg-bridge from container image
162
+ if : steps.bridge_branch.outcome != 'success'
163
+ run : |
164
+ docker run --name=sgbridge --network host $BRIDGE_VOLUME -d \
165
+ $BRIDGE_IMAGE --amqp_url amqp://localhost:5666/$QDR_CHANNEL \
166
+ --gw_unix=$BRIDGE_SOCKET
167
+ - name : Start sg-bridge from same branch
168
+ if : steps.bridge_branch.outcome == 'success'
169
+ run : |
170
+ docker run --name=sgbridge --network host $BRIDGE_VOLUME -d -uroot \
171
+ -e GITHUB_REF -e BRIDGE_SOCKET -e QDR_CHANNEL -e OPSTOOLS_REPO \
72
172
--workdir=$(dirname $BRIDGE_SOCKET) \
73
173
$TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/run_bridge.sh
74
174
- name : Set Ceilometer pipelines to QDR output and restart notification agent
@@ -78,22 +178,15 @@ jobs:
78
178
echo pseudo_vhost=true | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
79
179
echo rpc_address_prefix="" | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
80
180
echo notify_address_prefix="" | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
81
- cp ci/integration/metrics/*pipeline.yaml /etc/ceilometer/.
181
+ cp ci/integration/metrics/ceilometer/bridge/ *pipeline.yaml /etc/ceilometer/.
82
182
cat /etc/ceilometer/*
83
183
sudo pip install pyngus
84
184
sudo systemctl restart [email protected]
85
- - name : Install collectd
86
- run : |
87
- sudo apt-get install collectd
88
- sudo systemctl stop collectd && sudo systemctl disable collectd
89
- sudo cp ci/integration/metrics/collectd.conf /etc/collectd/collectd.conf
90
- sudo touch /var/log/collectd.log && sudo chmod a+rw /var/log/collectd.log
91
- sudo collectd -C ci/integration/metrics/collectd.conf
92
185
- name : Run sg-core to process metrics
93
186
run : |
94
187
docker run --name=sgcore -d -uroot --network host $BRIDGE_VOLUME -e OPSTOOLS_REPO \
95
188
--volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
96
- $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/run_sg.sh
189
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/ceilometer/bridge/ run_sg.sh
97
190
- name : Run Prometheus to store metrics
98
191
run : |
99
192
docker run --name=prometheus -d --network host \
@@ -104,23 +197,94 @@ jobs:
104
197
sleep 360
105
198
echo "=========================== qdr =========================" && \
106
199
docker exec qdr qdstat -b 127.0.0.1:5666 -a
200
+ docker logs qdr
107
201
echo "========================= sg-core =======================" && \
108
202
docker logs sgcore
109
- echo "======================== collectd =======================" && \
110
- cat /var/log/collectd.log
111
203
echo "========================= ceilometer ====================" && \
112
204
sudo journalctl -xu [email protected]
205
+ echo "======================== prometheus =====================" && \
206
+ docker logs prometheus
207
+ - name : Validate metrics processing
208
+ run : |
209
+ docker run --name=validate -uroot --network host \
210
+ --volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
211
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/ceilometer/run_validation.sh
212
+ # -------------------------------------------------------------------------------
213
+ ceilometer-metrics-tcp :
214
+ name : " [metrics] transport: socket(tcp); handler: ceilometer-metrics; application: prometheus"
215
+ runs-on : ubuntu-22.04
216
+ env :
217
+ PROMETHEUS_IMAGE : prom/prometheus:latest
218
+ steps :
219
+ - name : Checkout code
220
+ uses : actions/checkout@v3
221
+ - name : Prepare environment
222
+ run : |
223
+ mkdir -p /opt/stack/
224
+ sudo setfacl -Rdm u::7,g::0,o:0 /opt/stack
225
+ - name : Prepare environment for mysql-server installation # https://stackoverflow.com/a/66026366
226
+ run : |
227
+ sudo apt-get -f install -o Dpkg::Options::="--force-overwrite"
228
+ sudo apt-get purge mysql\*
229
+ sudo rm -rf /var/lib/mysql
230
+ sudo rm -rf /etc/mysql
231
+ sudo dpkg -l | grep -i mysql
232
+ sudo apt-get clean
233
+ - name : Prepare environment for postgres-server installation
234
+ run : |
235
+ sudo apt remove postgresql-client-common
236
+ sudo apt install postgresql-client-common=238
237
+ sudo apt install postgresql-common
238
+ sudo python -m pip install --upgrade pip
239
+ sudo python -m pip install --upgrade virtualenv
240
+ - name : Install devstack
241
+ run : |
242
+ SOURCE=$(pwd)
243
+ git clone http://github.com/openstack/devstack /opt/stack/devstack
244
+ pushd /opt/stack/devstack
245
+ cp $SOURCE/ci/integration/metrics/local.conf .
246
+ sudo apt-get update
247
+ ./stack.sh
248
+ popd
249
+ - name : Set Ceilometer pipelines to TCP output and restart notification agent
250
+ run : |
251
+ sudo apt-get install -y crudini
252
+ echo addressing_mode="dynamic" | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
253
+ echo pseudo_vhost=true | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
254
+ echo rpc_address_prefix="" | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
255
+ echo notify_address_prefix="" | crudini --merge /etc/ceilometer/ceilometer.conf oslo_messaging_amqp
256
+ cp ci/integration/metrics/ceilometer/tcp/*pipeline.yaml /etc/ceilometer/.
257
+ cat /etc/ceilometer/*
258
+ sudo pip install pyngus
259
+ sudo systemctl restart [email protected]
260
+ - name : Run sg-core to process metrics
261
+ run : |
262
+ docker run --name=sgcore -d -uroot --network host $BRIDGE_VOLUME -e OPSTOOLS_REPO \
263
+ --volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
264
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/ceilometer/tcp/run_sg.sh
265
+ - name : Run Prometheus to store metrics
266
+ run : |
267
+ docker run --name=prometheus -d --network host \
268
+ --volume ${{ github.workspace }}/ci/integration/metrics/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
269
+ $PROMETHEUS_IMAGE
270
+ - name : Debug output
271
+ run : |
272
+ sleep 360
113
273
echo "========================= sg-core =======================" && \
274
+ docker logs sgcore
275
+ echo "========================= ceilometer ====================" && \
276
+ sudo journalctl -xu [email protected]
277
+ echo "======================== prometheus =====================" && \
114
278
docker logs prometheus
115
279
- name : Validate metrics processing
116
280
run : |
117
281
docker run --name=validate -uroot --network host \
118
282
--volume ${{ github.workspace }}:$PROJECT_ROOT:z --workdir $PROJECT_ROOT \
119
- $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/run_validation.sh
283
+ $TEST_IMAGE bash $PROJECT_ROOT/ci/integration/metrics/ceilometer/ run_validation.sh
120
284
# -------------------------------------------------------------------------------
121
285
logging :
122
286
name : " [logging] handler: logs; application: elasticsearch, loki"
123
- runs-on : ubuntu-20 .04
287
+ runs-on : ubuntu-22 .04
124
288
env :
125
289
BRIDGE_SOCKET : /tmp/sg-bridge/test-socket
126
290
@@ -135,7 +299,7 @@ jobs:
135
299
RSYSLOG_VOLUME : " --volume ${{ github.workspace }}/ci/service_configs/rsyslog/rsyslog_config.conf:/etc/rsyslog.d/integration.conf:z"
136
300
steps :
137
301
- name : Checkout code
138
- uses : actions/checkout@v2
302
+ uses : actions/checkout@v3
139
303
# start data store services
140
304
- name : Start Elasticsearch service
141
305
run : |
@@ -171,7 +335,7 @@ jobs:
171
335
$RSYSLOG_IMAGE bash $PROJECT_ROOT/ci/integration/logging/run_rsyslog.sh
172
336
- name : Wait for services to start successfuly
173
337
run : |
174
- timeout=180
338
+ timeout=240
175
339
echo "======================= rsyslog ======================="
176
340
rsyslog_wait=0
177
341
while [[ $(docker exec qdr qdstat -b 127.0.0.1:5666 -a | grep rsyslog/logs | awk '{print $8}') -le 0 ]]
0 commit comments