Existe-t-il un moyen de regrouper toutes les métriques d'une application par noms de métriques? Une partie d'une requête répertoriant toutes les métriques d'une application (c'est-à-dire {app="bar"}
):
ch_qos_logback_core_Appender_all_total{affiliation="foo",app="bar", instance="baz-3-dasp",job="kubernetes-service-endpoints",kubernetes_name="bar",kubernetes_namespace="foobarz",kubernetes_node="mypaas-dev-node3.fud.com",updatedBy="janedoe"} 44
ch_qos_logback_core_Appender_debug_total{affiliation="foo",app="bar", instance="baz-3-dasp",job="kubernetes-service-endpoints",kubernetes_name="bar",kubernetes_namespace="foobarz",kubernetes_node="mypaas-dev-node23.fud.com",updatedBy="deppba"} 32
J'ai également essayé d'utiliser un caractère générique dans le nom de la métrique, Prometheus se plaint de cela. En regardant les métriques, je peux voir que certains d'entre eux ont des noms dynamiques, probablement fournis par des métriques dropwizard. Ce que je veux en définitive, c’est une liste de toutes les mesures disponibles.
J'ai eu un indice d'une réponse de @ brian-brazil et je suis arrivé à une solution. La requête suivante répertorie toutes les métriques disponibles:
sum by(__name__)({app="bar"})
Où bar
est le nom de l'application, comme vous pouvez le voir dans les entrées du journal postées dans la question.
{__name__=~".+"}
renverra toutes les séries chronologiques non périmées, mais la requête est coûteuse et doit généralement être évitée.
En utilisant directement
{__name__=~".+"}
retournera success
mais rien d’autre (trop grand).
ou
{__name__=~".*"}
tandis que va nous donner error
à la place comme prévu:
parse error at char 17: vector selector must contain at least one non-empty matcher
Mon astuce consiste donc à combiner les solutions de brian-brazil et de naimdjon à l'aide d'éléments tels que
sum({__name__=~"c.*|e.*|n.*|p.*|r.*|k.*|z.*|r.*"}) by (__name__)
comme je connais la possibilité prefixes
, je les ajoute donc à query pour être sûr de ne pas renvoyer quelque chose; et plus loin,
pour éviter les champs inutiles retournés (soulignant le Prométhée), je demanderai seulement à __name__
de cette manière by(__name__)
, tous les noms des métriques dont j'ai besoin sont renvoyés comme prévu.
En fait, il existe une API
pour obtenir tous les noms de métriques disponibles sous la forme:
/api/v1/label/__name__/values