[AAI] Service monitor for scraping prometheus metrics 32/132432/1
authorleila <leila.nishimwe@bell.ca>
Tue, 15 Nov 2022 16:33:21 +0000 (11:33 -0500)
committerleila <leila.nishimwe@bell.ca>
Wed, 23 Nov 2022 22:27:38 +0000 (17:27 -0500)
Changes are done for aai resources graphadmin and traversal
Session affinity for aai resources traversal and aai haproxy

Issue-ID: AAI-3599
Signed-off-by: leila <leila.nishimwe@bell.ca>
Change-Id: Ib3853c45051ca8e9c025bd0d6e700a08a54cb1a9

17 files changed:
kubernetes/aai/components/aai-graphadmin/resources/config/application.properties
kubernetes/aai/components/aai-graphadmin/templates/deployment.yaml
kubernetes/aai/components/aai-graphadmin/templates/service.yaml
kubernetes/aai/components/aai-graphadmin/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-graphadmin/values.yaml
kubernetes/aai/components/aai-resources/resources/config/application.properties
kubernetes/aai/components/aai-resources/templates/deployment.yaml
kubernetes/aai/components/aai-resources/templates/service.yaml
kubernetes/aai/components/aai-resources/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-resources/values.yaml
kubernetes/aai/components/aai-traversal/resources/config/application.properties
kubernetes/aai/components/aai-traversal/templates/deployment.yaml
kubernetes/aai/components/aai-traversal/templates/service.yaml
kubernetes/aai/components/aai-traversal/templates/servicemonitor.yaml [new file with mode: 0644]
kubernetes/aai/components/aai-traversal/values.yaml
kubernetes/aai/templates/service.yaml
kubernetes/aai/values.yaml

index 2760602..6e64fd8 100644 (file)
@@ -122,3 +122,8 @@ aperture.service.ssl.key-store-password=password(${KEYSTORE_JKS_PASSWORD})
 aperture.service.ssl.trust-store-password=password(${TRUSTSTORE_PASSWORD})
 {{ end }}
 aperture.service.timeout-in-milliseconds=300000
+
+#To Expose the Prometheus scraping endpoint
+management.port=8448
+endpoints.enabled=false
+management.security.enabled=false
\ No newline at end of file
index 5241c6e..3e1479e 100644 (file)
@@ -143,6 +143,8 @@ spec:
           value: {{ .Values.service.internalPort | quote }}
         - name: INTERNAL_PORT_2
           value: {{ .Values.service.internalPort2 | quote }}
+        - name: INTERNAL_PORT_3
+          value: {{ .Values.service.internalPort3 | quote }}
         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
         - mountPath: /etc/localtime
           name: localtime
@@ -173,6 +175,7 @@ spec:
         ports:
         - containerPort: {{ .Values.service.internalPort }}
         - containerPort: {{ .Values.service.internalPort2 }}
+        - containerPort: {{ .Values.service.internalPort3 }}
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
index cf46553..6350f85 100644 (file)
@@ -40,11 +40,16 @@ spec:
   - port: {{ .Values.service.internalPort2 }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- else -}}
   - port: {{ .Values.service.internalPort }}
     name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
   - port: {{ .Values.service.internalPort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- end}}
   selector:
     app: {{ include "common.name" . }}
diff --git a/kubernetes/aai/components/aai-graphadmin/templates/servicemonitor.yaml b/kubernetes/aai/components/aai-graphadmin/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..c0d9f21
--- /dev/null
@@ -0,0 +1,3 @@
+{{- if .Values.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
\ No newline at end of file
index deaf26a..5a5daa6 100644 (file)
@@ -240,6 +240,8 @@ service:
   internalPort: 8449
   portName2: tcp-5005
   internalPort2: 5005
+  portName3: aai-graphadmin-8448
+  internalPort3: 8448
   terminationGracePeriodSeconds: 120
 
 ingress:
@@ -296,6 +298,24 @@ resources:
       memory: 2Gi
   unlimited: {}
 
+metrics:
+  serviceMonitor:
+    enabled: false
+    targetPort: 8448
+    path: /prometheus
+    basicAuth:
+      enabled: false
+
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
+
+    relabelings: []
+
+    metricRelabelings: []
+
 # Not fully used for now
 securityContext:
   user_id: *user_id
index 7258b7b..b5b64be 100644 (file)
@@ -106,5 +106,17 @@ schema.service.ssl.trust-store-password=${TRUSTSTORE_PASSWORD}
 {{ end }}
 
 #to expose the Prometheus scraping endpoint
+management.port=8448
+management.endpoints.enabled-by-default=false
+management.security.enabled=false
+endpoints.enabled=false
+endpoints.info.enabled=false
+endpoints.prometheus.enabled=false
+endpoints.health.enabled=false
+management.metrics.web.server.auto-time-requests=false
 management.metrics.distribution.percentiles-histogram[http.server.requests]=true
-management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
\ No newline at end of file
+management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
+#Add common tag for grouping all aai related metrics
+management.metrics.tags.group_id=aai
+#It is not advisable to use labels to store dimensions with high cardinality. Enable this option only for debug purposes. For more information: https://github.com/micrometer-metrics/micrometer/issues/1584
+scrape.uri.metrics=false
\ No newline at end of file
index 74c58ff..33aa971 100644 (file)
@@ -136,6 +136,8 @@ spec:
           value: {{ .Values.service.internalPort | quote }}
         - name: INTERNAL_PORT_2
           value: {{ .Values.service.internalPort2 | quote }}
+        - name: INTERNAL_PORT_3
+          value: {{ .Values.service.internalPort3 | quote }}
         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
         - mountPath: /etc/localtime
           name: localtime
@@ -184,6 +186,7 @@ spec:
         ports:
         - containerPort: {{ .Values.service.internalPort }}
         - containerPort: {{ .Values.service.internalPort2 }}
+        - containerPort: {{ .Values.service.internalPort3 }}
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
index 4611846..8feb071 100644 (file)
@@ -34,12 +34,19 @@ spec:
   - port: {{ .Values.service.internalPort2 }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- else -}}
   - port: {{ .Values.service.internalPort }}
     name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
   - port: {{ .Values.service.internalPort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- end }}
   selector:
     app: {{ include "common.name" . }}
     release: {{ include "common.release" . }}
+  clusterIP: None
+  sessionAffinity: {{ .Values.service.sessionAffinity }}
diff --git a/kubernetes/aai/components/aai-resources/templates/servicemonitor.yaml b/kubernetes/aai/components/aai-resources/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..c0d9f21
--- /dev/null
@@ -0,0 +1,3 @@
+{{- if .Values.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
\ No newline at end of file
index 2dfbfee..de7bf2d 100644 (file)
@@ -231,7 +231,10 @@ service:
   internalPort: 8447
   portName2: tcp-5005
   internalPort2: 5005
+  portName3: aai-resources-8448
+  internalPort3: 8448
   terminationGracePeriodSeconds: 120
+  sessionAffinity: None
 
 ingress:
   enabled: false
@@ -270,6 +273,58 @@ resources:
       memory: 4Gi
   unlimited: {}
 
+metrics:
+  serviceMonitor:
+    enabled: false
+    targetPort: 8448
+    path: /prometheus
+    basicAuth:
+      enabled: false
+      externalSecretName: mysecretname
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+
+    ## Namespace in which Prometheus is running
+    ##
+    # namespace: monitoring
+
+    ## Interval at which metrics should be scraped.
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ##
+    #interval: 30s
+
+    ## Timeout after which the scrape is ended
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ##
+    # scrapeTimeout: 10s
+
+    ## ServiceMonitor selector labels
+    ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
+    ##
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
+
+    ## RelabelConfigs to apply to samples before scraping
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    ##
+    relabelings: []
+
+    ## MetricRelabelConfigs to apply to samples before ingestion
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    ##
+    metricRelabelings: []
+    #  - sourceLabels:
+    #      - "__name__"
+    #    targetLabel: "__name__"
+    #    action: replace
+    #    regex: '(.*)'
+    #    replacement: 'example_prefix_$1'
+
 #Pods Service Account
 serviceAccount:
   nameOverride: aai-resources
index 24a5241..3022b17 100644 (file)
@@ -106,3 +106,19 @@ schema.service.ssl.trust-store={{ .Values.certInitializer.credsPath }}/{{ .Value
 schema.service.ssl.key-store-password=${KEYSTORE_PASSWORD}
 schema.service.ssl.trust-store-password=${TRUSTSTORE_PASSWORD}
 {{ end }}
+
+#to expose the Prometheus scraping endpoint
+management.port=8448
+management.endpoints.enabled-by-default=false
+management.security.enabled=false
+endpoints.enabled=false
+endpoints.info.enabled=false
+endpoints.prometheus.enabled=false
+endpoints.health.enabled=false
+management.metrics.web.server.auto-time-requests=false
+management.metrics.distribution.percentiles-histogram[http.server.requests]=true
+management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
+#Add common tag for grouping all aai related metrics
+management.metrics.tags.group_id=aai
+#It is not advisable to use labels to store dimensions with high cardinality. Enable this option only for debug purposes. For more information: https://github.com/micrometer-metrics/micrometer/issues/1584
+scrape.uri.metrics=false
\ No newline at end of file
index b9f2a80..0932771 100644 (file)
@@ -155,6 +155,8 @@ spec:
           value: {{ .Values.service.internalPort | quote }}
         - name: INTERNAL_PORT_2
           value: {{ .Values.service.internalPort2 | quote }}
+        - name: INTERNAL_PORT_3
+          value: {{ .Values.service.internalPort3 | quote }}
         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
         - mountPath: /etc/localtime
           name: localtime
@@ -205,6 +207,7 @@ spec:
         ports:
         - containerPort: {{ .Values.service.internalPort }}
         - containerPort: {{ .Values.service.internalPort2 }}
+        - containerPort: {{ .Values.service.internalPort3 }}
         lifecycle:
           # wait for active requests (long-running tasks) to be finished
           # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod.
index b54b6be..daf1758 100644 (file)
@@ -34,12 +34,19 @@ spec:
   - port: {{ .Values.service.internalPort2 }}
     nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- else -}}
   - port: {{ .Values.service.internalPort }}
     name: {{ .Values.service.portName }}{{ (eq "true" (include "common.needTLS" .)) | ternary "s" "" }}
   - port: {{ .Values.service.internalPort2 }}
     name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.portName3 }}
   {{- end }}
   selector:
     app: {{ include "common.name" . }}
     release: {{ include "common.release" . }}
+  clusterIP: None
+  sessionAffinity: {{ .Values.service.sessionAffinity }}
diff --git a/kubernetes/aai/components/aai-traversal/templates/servicemonitor.yaml b/kubernetes/aai/components/aai-traversal/templates/servicemonitor.yaml
new file mode 100644 (file)
index 0000000..c0d9f21
--- /dev/null
@@ -0,0 +1,3 @@
+{{- if .Values.metrics.serviceMonitor.enabled }}
+{{  include "common.serviceMonitor" . }}
+{{- end }}
\ No newline at end of file
index e4c0abe..b5d99fd 100644 (file)
@@ -259,7 +259,10 @@ service:
   internalPort: 8446
   portName2: tcp-5005
   internalPort2: 5005
+  portName3: aai-traversal-8448
+  internalPort3: 8448
   terminationGracePeriodSeconds: 120
+  sessionAffinity: None
 
 ingress:
   enabled: false
@@ -295,6 +298,58 @@ resources:
       memory: 4Gi
   unlimited: {}
 
+metrics:
+  serviceMonitor:
+    enabled: false
+    targetPort: 8448
+    path: /prometheus
+    basicAuth:
+      enabled: false
+      externalSecretName: mysecretname
+      externalSecretUserKey: login
+      externalSecretPasswordKey: password
+
+    ## Namespace in which Prometheus is running
+    ##
+    # namespace: monitoring
+
+    ## Interval at which metrics should be scraped.
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ##
+    #interval: 30s
+
+    ## Timeout after which the scrape is ended
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
+    ##
+    # scrapeTimeout: 10s
+
+    ## ServiceMonitor selector labels
+    ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
+    ##
+    selector:
+      app: '{{ include "common.name" . }}'
+      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
+      release: '{{ include "common.release" . }}'
+      heritage: '{{ .Release.Service }}'
+
+    ## RelabelConfigs to apply to samples before scraping
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    ##
+    relabelings: []
+
+    ## MetricRelabelConfigs to apply to samples before ingestion
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    ##
+    metricRelabelings: []
+    #  - sourceLabels:
+    #      - "__name__"
+    #    targetLabel: "__name__"
+    #    action: replace
+    #    regex: '(.*)'
+    #    replacement: 'example_prefix_$1'
+
 #Pods Service Account
 serviceAccount:
   nameOverride: aai-traversal
index d140296..a8c3c39 100644 (file)
@@ -35,6 +35,8 @@ spec:
   type: {{ .Values.service.type }}
   selector:
     app: {{ include "common.name" . }}
+  clusterIP: {{ .Values.service.aaiServiceClusterIp }}
+  sessionAffinity: {{ .Values.service.sessionAffinity }}
 ---
 apiVersion: v1
 kind: Service
index 81f8a29..1cbbe7b 100644 (file)
@@ -404,6 +404,8 @@ service:
   externalPlainPort: 80
   internalPlainPort: 8080
   nodeport: 33
+  aaiServiceClusterIp:
+  sessionAffinity: None
 
 metricsService:
   type: ClusterIP