F5Networks / f5-telemetry-streaming

F5 BIG-IP Telemetry Streaming
Apache License 2.0
53 stars 24 forks source link

How to retrieve all related values by sending one polling query #261

Open f5minions opened 11 months ago

f5minions commented 11 months ago

Environment

Sys::Version Main Package Product BIG-IP Version 16.1.2.2 Build 0.0.28 Edition Point Release 2 Date Thu Apr 7 13:32:41 PDT 2022

Summary

Actually, I don't know below issue is bug or not.

there is some of different mechanism between "system default" vs "custom endpoint". In case of using "system default" we can get below information, for example, for the "f5_serverside_curConns" metric, f5_serverside_curConns{pools="/Common/adid-hadoop-rm_80"} 0 f5_serverside_curConns{pools="/Common/adid-hadoop-rm_80",members="/Common/10.60.64.167:80"} 0 f5_serverside_curConns{pools="/Common/adid-hadoop-rm_80",members="/Common/10.60.64.216:80"} 0 f5_serverside_curConns{pools="/Common/adid-hadoop-rm_443"} 0 f5_serverside_curConns{pools="/Common/adid-hadoop-rm_443",members="/Common/10.60.64.167:443"} 0

by this query, we can get all pool members "serverside_curConns" information. but if we use custom endpoint such as interface/stat then only retrieve one by one, not like as above serverside_curConns. In that case, customer need to define each metrics on grafana to get graph.

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:

    {
    "class": "Telemetry",
    "controls": {
        "class":"Controls",
        "logLevel":"info"
    },
    
    "My_System": {
        "class": "Telemetry_System",
        "enable": "true",
        "systemPoller": [
            "My_Poller"
        ]
    },
    
    "Custom_System": {
        "class": "Telemetry_System",
        "systemPoller": [
            "Custom_System_Poller",
            {
                "interval": 0
            }
        ]
    },
    
    "My_Poller": {
        "class": "Telemetry_System_Poller",
        "interval": 0
    },
    
    "Endpoints_Custom": {
        "class": "Telemetry_Endpoints",
        "items": {
            "system": {
                "path": "/mgmt/tm/sys/global-settings?$select=hostname",
                "name": "hostname"
            }
        }
    },
    
    "Endpoints_Interface": {
        "class": "Telemetry_Endpoints",
        "items": {
            "interface": {
                "path": "/mgmt/tm/net/interface/stats"
    
            }
        }   
    },
    
    "Custom_System_Poller": {
        "class": "Telemetry_System_Poller",
        "interval": 0,
        "endpointList": [
            "Endpoints_Custom",
            "Endpoints_Interface"
        ]
    },
    
    "metrics": {
        "class": "Telemetry_Pull_Consumer",
        "type": "Prometheus",
        "systemPoller": [
            "My_Poller",
            "Custom_System_Poller"
        ]
    }
    }

Expected Behavior

I expect other custom endpoint declaration also need to retrieve all related values(objects) by sending one ts query such as above "f5_serverside_curConns" metric. In my case, I used "/mgmt/tm/net/interface/stats" metric to get all interfaces's stats information but i need to send one by one to get all interfaces.

It's too difficult to display these statistics on grafana dashboard. I need to define each interfaces query to get all device's interface stats information.

Actual Behavior

could you check this is issue or bug? or it's our expected behavior? if that is expected behavior, how we can improve it? any declaration sample to all informations by sending one query?

Nachtfalkeaw commented 5 months ago

I can confirm this issue. It is with v1.33.0 and v1.34.0.

The metrics formatting is different from "Default" and "Custom" metrics. Instead of creating

metricsname{labels:values} value

like the Default does the custom metric creates a a comination of metricname and label.

metricsname_labelname_1{} value metricsname_labelname_2{} value metricsname_labelname_3{} value

This is a bug I think in the formatting.

Expected behaviour: If I use the Default System the metric format should be exactly the same as if I poll the same information via a custom endpoint. For prometheus Pull consumer this is not the case.

G-gonzalezjimenez commented 5 months ago

Hi, thanks for the information. This is by design.

F5 BIG-IP Telemetry Streaming was moved to a phase of ongoing maintenance and support at the beginning of last year.

This means the following:

A product in maintenance mode continues to receive support and ensures its stability with regular critical fixes and security updates. This maintenance approach helps maintain the longevity and reliability of the product for the long term. Enhancement requests for this product will be evaluated on an individual basis, taking into consideration their overall impact and alignment with our business objectives.

Only those with a strong case for improvement will be considered for implementation. Please contact your sales representative for more information about this process.

There is no plan to deprecate this product.