Access CronWorkflow name for metrics labels

638 views Asked by At

I have a CronWorkflow that sends the following metric:

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: my-cron-wf
spec:
  schedule: "0 * * * *"
  suspend: false
  workflowSpec:
    metrics:
      prometheus:
        - name: wf_exec_duration_gauge
          help: "Duration gauge by workflow name and status"
          labels:
            - key: name
              value: my-cron-wf
            - key: status
              value: "{{workflow.status}}"
          gauge:
            value: "{{workflow.duration}}"

I would like to populate the metric's label name with the CronWorkflow name using a variable in order to avoid copying it but I didn't find a variable for it. I tried to use {{workflow.name}} but it equals to the generated workflow name and not to the desired CronWorkflow name.

I use Kustomize to manage argo workflows resources so if there is a kustomize-way to achieve this it would be great as well.

1

There are 1 answers

3
crenshaw-dev On BEST ANSWER

Argo Workflows automatically adds the name of the Cron Workflow as a label on the workflow. That label is accessible as a variable.

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: my-cron-wf
spec:
  schedule: "0 * * * *"
  suspend: false
  workflowSpec:
    metrics:
      prometheus:
        - name: wf_exec_duration_gauge
          help: "Duration gauge by workflow name and status"
          labels:
            - key: name
              value: "{{workflow.labels.workflows.argoproj.io/cron-workflow}}"
            - key: status
              value: "{{workflow.status}}"
          gauge:
            value: "{{workflow.duration}}"