<p>I am trying to monitor <em>Strimzi</em> using the <a href="https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack" rel="nofollow noreferrer">kube-prometheus-stack</a> helm chart. I have set it up following the tutorial from the official <em>Strimzi</em> documentation. In this tutorial, they both use Podmonitors and a Prometheus config to get some metrics.
But I do not quite understand why I need to set up a Podmonitor for some metrics and add jobs in prometheus.prometheusSpec.additionalScrapeConfigs for others. Could someone explain the difference to me?</p>

<p>The <code>PodMonitor</code>(s) are used to select the metrics from the pods from the Strimzi provided custom resources, like for example Kafka, ZooKeeper, KafkaBridge, and so on. The Prometheus operator translates that configuration in corresponding jobs with a <code>kubernetes_sd_configs</code> having <code>role: pod</code>.
The <code>prometheus-additional.yaml</code> file that is used for the additional scrape configs field, contains &quot;raw&quot; jobs configuration for Kubernetes related metrics directly from nodes and provided by cadvisor and kubelet (i.e. volume disk space, CPU and memory usage). In the Prometheus operator there is no a corresponding thing for <code>role: node</code>, doesn't exist a thing like <code>NodeMonitor</code>.
I hope that it makes more sense now.</p>
