> For the complete documentation index, see [llms.txt](https://docs.finout.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.finout.io/kubernetes-integrations/kubernetes/ensure-compatibility-of-your-kubernetes-monitoring-with-finout.md).

# Ensure Compatibility of Your Kubernetes Monitoring with Finout

For DevOps teams looking to confirm their Kubernetes monitoring setup works seamlessly with Finout, this concise guide provides the essentials. Learn how to leverage Finout's cronjob support across Prometheus-compatible systems, ensuring your monitoring solution is fully compatible and optimized for use with Finout. This straightforward approach aims to equip DevOps professionals with the knowledge needed to validate their exporter's functionality swiftly.

Before you begin, ensure you have the following prerequisites in place:

* **Prometheus-compatible system**: Your metrics collection system must be compatible with Prometheus. This includes systems such as VictoriaMetrics, Thanos, Cortex, and M3, among others. These systems must support PromQL queries for integration.
* **Kubernetes cluster**: You need an operational Kubernetes cluster where you can deploy the Finout Cronjob.
* **Connect to Kubernetes Prometheus**: Refer to the [main documentation](broken://pages/ioV6tiagHMAKptUTuYju) for detailed instructions on setting up the Kubernetes Prometheus integration.
* **Environment variables**: Ensure you have the necessary environment variables configured for connectivity. These include SCHEME, HOSTNAME, PORT, PROMETHEUS\_USERNAME, PROMETHEUS\_PASSWORD, and optionally, PROMETHEUS\_AUTH\_TOKEN, PROMETHEUS\_BEARER\_AUTH\_TOKEN, and PROMETHEUS\_X\_SCOPE\_ORGID.

## Integration Steps <a href="#h_f197ac7063" id="h_f197ac7063"></a>

1. **Validate metrics export**: Ensure that your system exports the correct metrics to Finout. Validate the following queries in your system:

   * Memory Usage (V2 or Standard):
     * For Memory Usage V2:

       ```yaml
       - name: memory_usage_v2
        query: sum without (instance) (label_replace(sum(container_memory_working_set_bytes{pod!="", container!="",container!="POD", instance!=""}) by (instance, namespace, pod, container, %%%cluster_label), "node", "$1", "instance", "(.+)"))
       ```
     * For Standard Memory Usage:

       ```yaml
       - name: memory_usage
       query: sum(node_namespace_pod_container:container_memory_working_set_bytes{pod!="", containeč!="",container!="POD", instance!=""}) by (node, namespace, pod, container, %%%cluster_label)
       ```
   * CPU Usage (V2 or Standard):
     * For CPU Usage V2:

       ```yaml
       - name: cpu_usage_v2
       query: sum without (instance) (label_replace( sum(rate(container_cpu_usage_seconds_total{pod!="", container!="", container!="POD", instance!=""}[1m])) by (instance, namespace, pod, container, %%%cluster_label), "node", "$1", "instance", "(.+)"))
       ```
     * For Standard CPU Usage:

       ```yaml
       - name: cpu_usage
       query: sum(rate(container_cpu_usage_seconds_total{pod!="", container!="", container!="POD", instance!=""}[1m])) by (node, namespace, pod, container,%%%cluster_label)
       ```
   * Network Usage (V2 or Standard):
     * Bytes Received and Transmitted:
       * For V2:

         ```yaml
         - name: bytes_received_v2
         query: sum without (instance) (label_replace(sum(rate(container_network_receive_bytes_total{pod!="", instance!=""}[5m])) by (instance, namespace, pod, container, %%%cluster_label), "node", "$1", "instance", "(.+)"))
         - name: bytes_transmitted_v2
         query: sum without (instance) (label_replace(sum(rate(container_network_transmit_bytes_total{pod!="", instance!=""}[5m])) by (instance, namespace, pod, container, %%%cluster_label), "node", "$1", "instance", "(.+)"))
         ```
       * For standard Bytes Received and Transmitted:

         ```yaml
         - name: bytes_received
         query: sum(rate(container_network_receive_bytes_total{pod!="", instance!=""}[1m])) by (node, namespace, pod, container, %%%cluster_label)
         - name: bytes_transmitted
         query: sum(rate(container_network_transmit_bytes_total{pod!="", instance!=""}[1m])) by (node, namespace, pod, container, %%%cluster_label)
         ```
   * Node Info:

     ```yaml
     - name: node_info
     query: max(kube_node_info) by (node, provider_id,%%%cluster_label)
     ```

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Note</strong>: You may omit the cluster_label grouping when testing these queries.</p></div>

2. **Deploy the Finout Cronjob**: Deploy the Finout Cronjob in your Kubernetes cluster. This is essential for scheduling and running the integration tasks.

3. **Configure connectivity**: Utilize the environment variables to configure the connectivity between Finout and your Prometheus-compatible metrics system. This setup allows Finout to execute PromQL queries against your metrics database.

4. **Grant Finout permissions**: Ensure Finout has the necessary permissions to read your metrics export from your S3 bucket, as detailed in the [documentation](/telemetry-integrations/telemetry/s3-csv-telemetry.md).

By following these steps and ensuring your Prometheus-compatible system meets the requirements, you can successfully integrate Kubernetes metrics with Finout for enhanced monitoring and management capabilities.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.finout.io/kubernetes-integrations/kubernetes/ensure-compatibility-of-your-kubernetes-monitoring-with-finout.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
