You can follow these steps to modify or change the config file in vRops to support third-party prometheus exporters.

Following is the metric received using Prometheus collector:

kubernetes_system_container_memory_major_page_faults{container_name="kubelet",host="
vrops-telegraf-k8s-fvcvr", 
job="k8s_telegraf_job",namespace="kube-system",node_name="k8s-01-node-01"}

This metric has the following components:

  1. Metric Name: kubernetes_system_container_memory_major_page_faults

  2. Label Name: container_name, host, job, namespace, node_name

  3. Label Value: kubelet, vrops-telegraf-k8s-fvcvr, k8s_telegraf_job, kube-system", k8s-01-node-01

Given a metric name and a set of labels, time series are frequently identified using this notation:

<metric name>{<label name>=<label value>, ...}

For example, from the above sample metric, the service-related information can be extracted from the labels:

  1. container_name – contains the name of Container

  2. namespace – contains the name of Namespace

  3. node_name – contains the name of Node

For more details, refer to https://prometheus.io/docs/concepts/data_model/#notation.

To map any Prometheus Metric to vROps Objects such as Namespace, Node, Pod, and Container, the metric Label Value should possess the identifier or name of these service instances which will later be mapped to an appropriate object in vROps.

Path to the YAML configuration file in vROps Appliance: /usr/lib/vmware-vcops/user/plugins/inbound/KubernetesAdapter3/conf/prometheusConfig.yml

Create a new mapping in the configuration file in the below format:

config_name: <mapping configuration name>
label_contains_name: '' 
k8s_node:
label_contains_name: ''
k8s_pod:
label_contains_name: ''
k8s_container:
label_contains_id: ''
label_contains_name: ''

Use any one of the cases below:

Case 1: To map the sample metric to the Container object in vROps, fill only the k8s_container section.

k8s_container:
label_contains_id: ''
label_contains_name: 'container_name'

In this case, only the container name is available and present under the label container_name.

Case 2: To map the sample metric to the Namespace object in vROps, fill only the k8s_namespace section.

k8s_namespace:
label_contains_name: 'namespace'

In this case, the Namespace name is present under the label namespace.

Case 3: To map the sample metric to the Node object in vROps, fill only the k8s_node section.

k8s_node:
label_contains_name: 'node_name'

In this case, the Node name is present under the label node_name.

Note:
  • To avoid multiple label groups getting displayed in vROps Metric chart, add the label names (to be dropped) in "Prometheus metric labels to exclude" section. For this purpose, go to Configuring Kubernetes Adapter Instance > Advanced SettingsStep 10 > Step g.

  • Once the configuration file is updated, user must restart the Kubernetes Adapter instance.