2017-02-07 17 views
0

Я действительно новичок в Prometheus, и на данный момент я хочу сделать некоторые тесты с запросом, чтобы быть немного более знакомым с ним.Как сделать этот запрос с помощью Prometheus?

Так с запросом container_last_seen[10s] он возвращает мне массив:

container_last_seen{container_label_com_docker_compose_config_hash="dc8a2ab1347ad16ab37ff0ad03f3a00f86b381ea2d85d45a11367331526c3640",container_label_com_docker_compose_container_number="1",container_label_com_docker_compose_oneoff="False",container_label_com_docker_compose_project="dockprom",container_label_com_docker_compose_service="cadvisor",container_label_com_docker_compose_version="1.10.0",container_label_org_label_schema_group="monitoring",id="/docker/2b448d19a33b50411941a55435b03f5a4af19e3b3e9581054a67e4da3363ef19",image="google/cadvisor:v0.24.1",instance="cadvisor:8080",job="cadvisor",name="cadvisor"} 

И я хочу, чтобы получить только атрибут name.
Так что моя идея состояла в том, чтобы сделать что-то вроде этого:

container_last_seen[10s][name] 

Но у меня есть ошибка синтаксического анализа. Итак, как я могу сделать этот запрос?

ответ

1

Это может показаться немного недопустимым для этой цели, но aggregation operators позволяют уменьшать метки с помощью статей by и without.

sum by(name) (container_last_seen{..criteria..}) 

должен приблизить вас к тому, что вы хотите, возвращая объекты только с ключевым словом.

Я думаю, что вы хотите еще немного - вы не хотите значения, и вы не хотите, чтобы часть объекта - вам просто нужны строки. К сожалению, Prometheus имеет дело с числовыми метриками, которые могут иметь метки, а конкретно не строковые метрики.

Хотя это требует дополнительного программного обеспечения, он официально Прометеем рекомендуется, так что я буду упоминать его здесь, как он получает вы очень близко к тому, что я считаю, это ваш искомое решение:

Если вы картировать этот запрос в графана , либо со всеми ключами, либо только с ключом имени, формат легенды {{name}} должен предоставить вам именно то, что вы хотите. Grafana также предоставляет label_values, чтобы помочь с этой целью в отношении фильтрации.

И наконец, если это не подходит для вас, для интенсивных строковых показателей ELK/EFK-стек может быть лучше подходит. Есть проекты вроде prometheus-es-exporter, которые могут сообщать результаты запросов ElasticSearch как показатели.

+1

Такой приятный и полный ответ! Да, цель состояла в том, чтобы отобразить все имена в Графане. Теперь я немного уверен в себе с Прометеем и Графаной, так как я использую их в течение 2 месяцев. Спасибо за приятный ввод – Jerome

+1

Мое удовольствие! Я рад, что вы хотели, чтобы направление Графаны. Они действительно потрясающие инструменты и только улучшаются, когда мы преодолеваем кривые обучения. :) Видимо, я отрезал конец моего ответа, поэтому я собираюсь изменить его обратно. –

0

Это невозможно, так как метки, такие как «имя», не относятся к значению метрики. Вы должны посмотреть на JSON, чтобы конечные точки запроса и query_range возвращались, чтобы увидеть, как это показано.

+0

Я не понимаю конца вашего ответа, но почему я не могу получить доступ к меткам, возвращаемым запросом? Он возвращает мне объект JSON, поэтому я должен иметь доступ к элементам нет? – Jerome