Skip to content

Commit

Permalink
Use scrapeconfig instead of servicemonitor (#607)
Browse files Browse the repository at this point in the history
* Move from ServiceMonitor to ScrapeConfig
* Clean up legacy servicemonitors
* Emulate servicemonitor-compatible labels
* Update roles/servicetelemetry/tasks/component_scrapeconfig.yml

Co-authored-by: Jaromír Wysoglad <[email protected]>
  • Loading branch information
csibbitt and vyzigold authored Jul 10, 2024
1 parent 8d0688a commit 43726ee
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 58 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ loaded for you.
* smartgatewayCollectdEventsManifest
* smartgatewayCeilometerEventsManifest
* servicemonitorManifest
* scrapeconfigManifest

## Development

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,15 @@ spec:
- kind: ServiceMonitors
name: servicemonitors.monitoring.coreos.com
version: v1
- kind: ScrapeConfigs
name: scrapeconfigs.monitoring.coreos.com
version: v1alpha1
- kind: ServiceMonitors
name: servicemonitors.monitoring.rhobs
version: v1
- kind: ScrapeConfigs
name: scrapeconfigs.monitoring.rhobs
version: v1alpha1
version: v1beta1
description: Service Telemetry Operator for monitoring clouds
displayName: Service Telemetry Operator
Expand Down Expand Up @@ -378,17 +387,21 @@ spec:
- apiGroups:
- monitoring.coreos.com
resources:
- scrapeconfigs
- servicemonitors
verbs:
- get
- create
- delete
- apiGroups:
- monitoring.rhobs
resources:
- scrapeconfigs
- servicemonitors
verbs:
- get
- create
- delete
- apiGroups:
- apps
resourceNames:
Expand Down
4 changes: 4 additions & 0 deletions deploy/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,17 +129,21 @@ rules:
- apiGroups:
- monitoring.coreos.com
resources:
- scrapeconfigs
- servicemonitors
verbs:
- get
- create
- delete
- apiGroups:
- monitoring.rhobs
resources:
- scrapeconfigs
- servicemonitors
verbs:
- get
- create
- delete
- apiGroups:
- apps
resourceNames:
Expand Down
4 changes: 2 additions & 2 deletions roles/servicetelemetry/tasks/base_smartgateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
k8s:
definition: "{{ lookup('template', manifest) | from_yaml }}"

- name: Deploy SG-specific ServiceMonitor for metrics SGs
include_tasks: component_servicemonitor.yml
- name: Deploy SG-specific ScrapeConfig for metrics SGs
include_tasks: component_scrapeconfig.yml
when:
- data_type == 'metrics'
- has_monitoring_api | bool
Expand Down
93 changes: 93 additions & 0 deletions roles/servicetelemetry/tasks/component_scrapeconfig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
- name: Look up prometheus-stf SA to get auth secret name
k8s_info:
api_version: v1
kind: ServiceAccount
namespace: '{{ ansible_operator_meta.namespace }}'
name: prometheus-stf
register: service_account

- name: Look up auth secret to get token secret name
k8s_info:
api_version: v1
kind: Secret
namespace: '{{ ansible_operator_meta.namespace }}'
name: '{{ service_account.resources[0].secrets[0].name }}'
register: auth_secret

- name: Create SG-specific Scrape Config manifest
set_fact:
sg_specific_scrapeconfig_manifest: |
apiVersion: {{ prometheus_operator_api_string | replace("/v1","/v1alpha1") }}
kind: ScrapeConfig
metadata:
labels:
app: smart-gateway
name: '{{ this_smartgateway }}'
namespace: '{{ ansible_operator_meta.namespace }}'
spec:
authorization:
type: bearer
credentials:
name: '{{ auth_secret.resources[0].metadata.annotations['openshift.io/token-secret.name'] }}'
key: token
metricRelabelings:
- action: labeldrop
regex: pod
- action: labeldrop
regex: namespace
- action: labeldrop
regex: instance
- action: replace
regex: '.*/(.*)$'
replacement: $1
sourceLabels: [job]
targetLabel: service
- action: labeldrop
regex: job
- action: labeldrop
regex: publisher
- action: replace
targetLabel: container
replacement: sg-core
- action: replace
targetLabel: endpoint
replacement: prom-https
scheme: HTTPS
scrapeInterval: {{ servicetelemetry_vars.backends.metrics.prometheus.scrape_interval }}
staticConfigs:
- targets:
- '{{ this_smartgateway }}.{{ ansible_operator_meta.namespace }}.svc:8083'
tlsConfig:
ca:
configMap:
name: serving-certs-ca-bundle
key: service-ca.crt
serverName: '{{ this_smartgateway }}.{{ ansible_operator_meta.namespace }}.svc'
- name: Create ScrapeConfig to scrape Smart Gateway
k8s:
state: '{{ "present" if servicetelemetry_vars.backends.metrics.prometheus.enabled else "absent" }}'
definition:
'{{ sg_specific_scrapeconfig_manifest }}'

- name: Create additional ScrapeConfig if provided
k8s:
state: '{{ "present" if servicetelemetry_vars.backends.metrics.prometheus.enabled else "absent" }}'
definition:
'{{ scrapeconfig_manifest }}'
when: scrapeconfig_manifest is defined

- name: Create additional ServiceMonitor if provided (legacy)
k8s:
state: '{{ "present" if servicetelemetry_vars.backends.metrics.prometheus.enabled else "absent" }}'
definition:
'{{ servicemonitor_manifest }}'
when: servicemonitor_manifest is defined

- name: Remove (legacy) default ServiceMonitors
k8s:
state: absent
api_version: '{{ prometheus_operator_api_string }}'
kind: ServiceMonitor
namespace: '{{ ansible_operator_meta.namespace }}'
name: '{{ this_smartgateway }}'
52 changes: 0 additions & 52 deletions roles/servicetelemetry/tasks/component_servicemonitor.yml

This file was deleted.

2 changes: 1 addition & 1 deletion roles/servicetelemetry/templates/manifest_alertmanager.j2
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ spec:
{% endif %}
replicas: {{ servicetelemetry_vars.alerting.alertmanager.deployment_size }}
serviceAccountName: alertmanager-stf
serviceMonitorSelector:
scrapeConfigSelector:
matchLabels:
app: smart-gateway
listenLocal: true
Expand Down
2 changes: 1 addition & 1 deletion roles/servicetelemetry/templates/manifest_prometheus.j2
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ spec:
ruleSelector: {}
securityContext: {}
serviceAccountName: prometheus-stf
serviceMonitorSelector:
scrapeConfigSelector:
matchLabels:
app: smart-gateway
listenLocal: true
Expand Down
4 changes: 2 additions & 2 deletions tests/smoketest/smoketest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ echo "*** [INFO] Showing oc get all..."
oc get all
echo

echo "*** [INFO] Showing servicemonitors..."
oc get servicemonitors.monitoring.rhobs -o yaml
echo "*** [INFO] Showing scrapeconfigs..."
oc get scrapeconfigs.monitoring.rhobs -o yaml
echo

if [ "$SMOKETEST_VERBOSE" = "true" ]; then
Expand Down

0 comments on commit 43726ee

Please sign in to comment.