Great!

For the metrics, there should be the following registered by the MicroProfile 
Metrics Camel extension:

https://camel.apache.org/camel-quarkus/2.4.x/reference/extensions/microprofile-metrics.html#_usage

However, the final name is determined by the MicroProfile Metrics 
specification, so for example the following metric:

camel.context.exchanges.completed.total

Have its name translated to:

application_camel_context_exchanges_completed_total

To check also if the metrics endpoint do have the metrics registered, you can 
run:

$ kubectl exec deployment/<integration_name> -- curl -s 
http://localhost:8080/q/metrics | grep 
application_camel_route_exchanges_completed_total

# HELP application_camel_route_exchanges_completed_total The total number of 
completed exchanges for a route or Camel Context
# TYPE application_camel_route_exchanges_completed_total counter
application_camel_route_exchanges_completed_total{camelContext="camel-1",routeId="route1"}
 33.0

> On 26 Nov 2021, at 14:34, Roberto Camelk <betonetotbo.cam...@gmail.com> wrote:
> 
> Thanks a lot again Antonin. I owe you a beer or coffee!!!
> 
> This worked 100%.
> 
> To end, another question.... after this, prometheus start scraping the
> metrics from my running route pod, but...
> 
> Some metrics IDs are not there, some metrics starting with
> "org_apache_camel_" as I have see in this grafana dashboard sample:
> https://github.com/weimeilin79/camel-k-example-prometheus/blob/ca347f0b8b702b84b7129dfcfcb3b84eff4e2f73/grafana/SampleCamelDashboard.json#L145
> 
> The other metrics (camel_k_* -
> https://camel.apache.org/camel-k/next/observability/monitoring/operator.html#metrics)
> are there as so the jvm metrics
> (https://github.com/eclipse/microprofile-metrics/blob/master/spec/src/main/asciidoc/required-metrics.adoc#required-metrics).
> 
> Is this correct? Why am I not getting that "org_apache_camel_" metrics?
> 
> On Fri, Nov 26, 2021 at 9:13 AM Antonin Stefanutti
> <anto...@stefanutti.fr.invalid> wrote:
>> 
>> It's likely that you need to configure the Prometheus instance, by editing 
>> the Prometheus resource, e.g.:
>> 
>> apiVersion: monitoring.coreos.com/v1
>> kind: Prometheus
>> metadata:
>>  name: prometheus
>> spec:
>>  serviceAccountName: prometheus
>>  podMonitorSelector:
>>    matchLabels:
>>      app: camel-k
>>  podMonitorNamespaceSelector: {}
>> 
>> It's important to have podMonitorNamespaceSelector: {} to discover all the 
>> namespaces, otherwise it's only the resource's namespace.
>> 
>> Also you can use the Prometheus trait to set the labels on the Integration 
>> PodMonitor accordingly, e.g.:
>> 
>> $ kamel run -t prometheus.enabled=true -t 
>> prometheus.pod-monitor-labels="app=camel-k"
>> 
>> There are some examples in the Prometheus operator documentation:
>> 
>> https://github.com/prometheus-operator/prometheus-operator/tree/v0.52.1/example/user-guides/getting-started
>> 
>> And the troubleshooting guide at:
>> 
>> https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/troubleshooting.md
>> 
>> 
>>> On 26 Nov 2021, at 12:32, Roberto Camelk <betonetotbo.cam...@gmail.com> 
>>> wrote:
>>> 
>>> Antonin. Thanks !
>>> 
>>> But I continue stuck, please let me share some extra info about my
>>> prometheus operator log:
>>> 
>>> level=debug ts=2021-11-26T11:12:05.837624346Z caller=operator.go:1840
>>> component=prometheusoperator msg="filtering namespaces to select
>>> PodMonitors from" namespaces=cattle-prometheus
>>> namespace=cattle-prometheus prometheus=cluster-monitoring
>>> 26/11/2021 08:12:05 level=debug ts=2021-11-26T11:12:05.837687534Z
>>> caller=operator.go:1853 component=prometheusoperator msg="selected
>>> PodMonitors" podmonitors= namespace=cattle-prometheus
>>> prometheus=cluster-monitoring
>>> 26/11/2021 08:12:05 level=debug ts=2021-11-26T11:12:05.942216811Z
>>> caller=operator.go:1677 component=prometheusoperator msg="updating
>>> Prometheus configuration secret skipped, no configuration change"
>>> 26/11/2021 08:12:05 level=debug ts=2021-11-26T11:12:05.950980834Z
>>> caller=operator.go:1776 component=prometheusoperator msg="filtering
>>> namespaces to select ServiceMonitors from"
>>> namespaces=cattle-prometheus,cattle-system,kube-node-lease,kube-public,security-scan,kube-system
>>> namespace=cattle-prometheus prometheus=cluster-monitoring
>>> 26/11/2021 08:12:05 level=debug ts=2021-11-26T11:12:05.951162973Z
>>> caller=operator.go:1810 component=prometheusoperator msg="selected
>>> ServiceMonitors"
>>> servicemonitors=cattle-prometheus/grafana-cluster-monitoring,cattle-prometheus/exporter-kube-etcd-cluster-monitoring,cattle-prometheus/exporter-node-cluster-monitoring,cattle-prometheus/exporter-kube-controller-manager-cluster-monitoring,cattle-prometheus/exporter-kube-state-cluster-monitoring,cattle-prometheus/prometheus-cluster-monitoring,cattle-prometheus/prometheus-operator-monitoring-operator,cattle-prometheus/exporter-fluentd-cluster-monitoring,cattle-prometheus/exporter-kubelets-cluster-monitoring,cattle-prometheus/exporter-kube-scheduler-cluster-monitoring,cattle-prometheus/exporter-kubernetes-cluster-monitoring
>>> namespace=cattle-prometheus prometheus=cluster-monitoring
>>> 26/11/2021 08:12:05 level=debug ts=2021-11-26T11:12:05.977550133Z
>>> caller=operator.go:1741 component=prometheusoperator msg="updated
>>> tlsAssetsSecret" secretname=prometheus-cluster-monitoring-tls-assets
>>> 26/11/2021 08:12:06 level=debug ts=2021-11-26T11:12:06.022196407Z
>>> caller=operator.go:1169 component=prometheusoperator msg="new
>>> statefulset generation inputs match current, skipping any actions"
>>> 26/11/2021 08:12:26 level=debug ts=2021-11-26T11:12:26.321817491Z
>>> caller=operator.go:734 component=prometheusoperator msg="PodMonitor
>>> added"
>>> 26/11/2021 08:12:27 level=debug ts=2021-11-26T11:12:27.755854021Z
>>> caller=operator.go:748 component=prometheusoperator msg="PodMonitor
>>> updated"
>>> 26/11/2021 08:12:46 level=debug ts=2021-11-26T11:12:46.453112794Z
>>> caller=operator.go:748 component=prometheusoperator msg="PodMonitor
>>> updated"
>>> 26/11/2021 08:17:35 level=debug ts=2021-11-26T11:17:35.194031009Z
>>> caller=operator.go:759 component=prometheusoperator msg="PodMonitor
>>> delete"
>>> 
>>> This last 4 lines is about my camel-k route, that I ran and stopped.
>>> 
>>> So, there are some problems, I think, about the logs above about the
>>> podmonitor selectors telling: "selected PodMonitors" podmonitors=
>>> namespace=cattle-prometheus prometheus=cluster-monitoring
>>> 
>>> My camel-k route is running at namespace "platform" and has no label
>>> like "prometheus=cluster-monitoring".
>>> 
>>> Do you know how can I fix this? Adding additional scrape configs to
>>> prometheus can solve this? Can you provide a snipet code?
>>> 
>>> On Thu, Nov 25, 2021 at 9:56 AM Antonin Stefanutti
>>> <anto...@stefanutti.fr.invalid> wrote:
>>>> 
>>>> When run an Integration with `kamel run -t prometheus.enabled=true`, a 
>>>> PodMonitor resource is created for the Prometheus operator to reconcile 
>>>> and configure Prometheus to scrape the Integration metrics endpoint.
>>>> 
>>>> The PodMonitor metadata must match that of the Prometheus operator, like 
>>>> the namespace, the labels, ...
>>>> 
>>>> Some documentation is available at:
>>>> 
>>>> https://camel.apache.org/camel-k/1.7.x/observability/monitoring/integration.html#_discovery
>>>> 
>>>> That contains some links to the Prometheus operator documentation for 
>>>> troubleshooting why the metrics endpoint is not discovered.
>>>> 
>>>>> On 25 Nov 2021, at 12:25, Roberto Camelk <betonetotbo.cam...@gmail.com> 
>>>>> wrote:
>>>>> 
>>>>> I have a Kubernetes running Rancher 2.4.3. I have the cluster
>>>>> monitoring enabled in rancher, so that exists a Prometheus instance
>>>>> running, so as a Prometheus Operator.
>>>>> 
>>>>> Recently I deployed a Apache Camel-K operator, and now I want to
>>>>> enable the prometheus integration for collect metrics about my camel
>>>>> routes.
>>>>> 
>>>>> So, my Camel-K operator is running in namescape camel-k and the
>>>>> rancher embedded prometheus stack in cattle-prometheus namespace.
>>>>> 
>>>>> I just have launched my route with the trait --trait
>>>>> prometheus.enabled=true, but the camel metrics aren't listing at my
>>>>> prometheus.
>>>>> 
>>>>> Anyone knows why or what I need to configure to my camel-k route
>>>>> deploy it's metrics at the rancher embedded prometheus?
>>>> 
>> 

Reply via email to