Commit 51d3042d authored by Price, Zach's avatar Price, Zach
Browse files

Add Prometheus metrics for nginx

parent 928c887a
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -125,6 +125,34 @@ spec:
            - name: logstash-tmp
              mountPath: /tmp/logstash
        {{- end }}
        # Metrics exporter, if enabled
        {{- if $fileServer.metrics.exporter.enabled }}
        - name: nginx-prometheus-exporter
          {{ include "esgf.deployment.image" (list . $fileServer.metrics.exporter.image) }}
          args:
            - "--nginx.scrape-uri=http://localhost:8080/stub_status"
            {{- range $key, $value := $fileServer.metrics.exporter.extraArgs }}
            - "--{{ $key }}{{ if $value }}={{ $value }}{{ end }}"
            {{- end }}
          {{- with $fileServer.metrics.exporter.extraEnv }}
          env: {{ toYaml . | nindent 12 }}
          {{- end }}
          resources: {{ toYaml $fileServer.metrics.exporter.resources | nindent 12 }}
          {{- with .Values.data.securityContext }}
          securityContext: {{ toYaml . | nindent 12 }}
          {{- end }}
          ports:
          - name: prom-metrics
            containerPort: 9113
            protocol: TCP
          livenessProbe:
            {{- toYaml $fileServer.metrics.exporter.livenessProbe | trim | nindent 12 }}
          readinessProbe:
            {{- toYaml $fileServer.metrics.exporter.readinessProbe | trim | nindent 12 }}
          {{- with $fileServer.metrics.exporter.extraVolumeMounts }}
          volumeMounts: {{ toYaml . | nindent 12 }}
          {{- end }}
        {{- end }}
      {{- with $fileServer.nodeSelector }}
      nodeSelector: {{ toYaml . | nindent 8 }}
      {{- end }}
+35 −0
Original line number Diff line number Diff line
{{- $fileServer := .Values.data.fileServer -}}
{{- if $fileServer.metrics.podMonitor.enabled }}
apiVersion: {{ $fileServer.metrics.podMonitor.apiVersion }}
kind: PodMonitor
metadata:
  name: {{ include "esgf.component.fullname" (list . "fileServer") }}
  labels: {{ include "esgf.component.labels" (list . "fileServer" $fileServer.labels) | nindent 4 }}
spec:
  jobLabel: {{ include "esgf.component.fullname" (list . "fileServer") }}
  {{- if $fileServer.metrics.podMonitor.podTargetLabels }}
  podTargetLabels:
  {{ toYaml $fileServer.metrics.podMonitor.podTargetLabels | indent 4 }}
  {{- end }}
  podMetricsEndpoints:
  - port: prom-metrics
    interval: {{ $fileServer.metrics.podMonitor.interval }}
    scrapeTimeout: {{ $fileServer.metrics.podMonitor.scrapeTimeout }}
    path: {{ $fileServer.metrics.podMonitor.path }}
    {{- if $fileServer.metrics.podMonitor.honorLabels }}
    honorLabels: true
    {{- end }}
    {{- if $fileServer.metrics.podMonitor.metricRelabelings }}
    metricRelabelings:
    {{ toYaml $fileServer.metrics.podMonitor.metricRelabelings | indent 4 }}
    {{- end }}
    {{- if $fileServer.metrics.podMonitor.relabelings }}
    relabelings:
    {{ toYaml $fileServer.metrics.podMonitor.relabelings | indent 4 }}
    {{- end }}
  selector:
    matchLabels: {{ include "esgf.component.selectorLabels" (list . "fileServer") | nindent 6 }}
  namespaceSelector:
    matchNames:
    - {{ $.Release.Namespace }}
{{- end }}
 No newline at end of file
+49 −0
Original line number Diff line number Diff line
@@ -386,6 +386,55 @@ data:
    # See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
    tolerations:

    # Options related to observability
    metrics:
      # Whether or not to create a Prometheus Operator PodMonitor
      # See https://prometheus-operator.dev/docs/developer/getting-started/#using-podmonitors
      podMonitor:
        enabled: true
        # Set the API version of the ServiceMonitor
        apiVersion: "monitoring.coreos.com/v1"
        # Set how frequently Prometheus should scrape
        interval: 30s
        # Set path to nginx-exporter telemtery-path
        path: /metrics
        honorLabels: true
        # Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
        additionalLabels: {}
        # Set timeout for scrape
        scrapeTimeout: 10s
        # Set which labels which are transferred from the associated Kubernetes Pod object onto the ingested metrics.
        podTargetLabels: []
        # Set relabeling rules to apply to metrics after scraping but before ingestion
        metricRelabelings: []
        # Set relabeling rules to configure how scrape targets are discovered and labeled before scraping
        relabelings: []
      exporter:
        enabled: true
        image:
          prefix: nginx
          repository: nginx-prometheus-exporter
        # Extra arguments passed to the nginx prometheus exporter
        # See https://github.com/nginx/nginx-prometheus-exporter?tab=readme-ov-file#command-line-arguments
        extraArgs: []
        extraEnv: {}
        extraVolumeMounts: {}
        # The resource allocations for the nginx prometheus exporter container
        # See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
        resources: {}
        livenessProbe:
          httpGet:
            path: /
            port: prom-metrics
          initialDelaySeconds: 30
          timeoutSeconds: 10

        readinessProbe:
          httpGet:
            path: /
            port: prom-metrics
          initialDelaySeconds: 30
          timeoutSeconds: 10
###
# Index node configuration
###