2017-02-07 10 views
0

私はプロメテウスには本当に新しく、少し慣れていくために、いくつかのテストをしたいと思っています。プロメテウスを使用してこのクエリを作成する方法は?

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]と、それは私の配列を返します。
は、だから私のアイデアは、このような何かになった:

container_last_seen[10s][name] 

をしかし、私はパースエラーを持っています。どうすればこのクエリを作成できますか?

答えて

1

aggregation operatorsは、bywithout句でラベルを減らすことができます。

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

は、名前キーのみでオブジェクトを返すことで、あなたが望むものに近づけることができます。

私はあなたがもう少し欲しいと思う - あなたは値を望まないし、オブジェクトの部分を望んでいない - 文字列がほしいと思う。残念ながら、Prometheusはラベルを持つことができる数値メトリックを扱います。特に文字列メトリックは使用できません。

、それは追加のソフトウェアが必要ですが、正式にそれは私があなたの希望ソリューションであると考えているものに、あなたが非常に近くなるように、私はここにそれを言及しますプロメテウスによって推奨されています

あなたはGrafanaでそのクエリをグラフ化した場合すべてのキーまたは名前キーのいずれかを使用すると、凡例の書式{{name}}は必要なものを正確に取得する必要があります。 Grafanaはフィルタリングに関してこの目的に役立つlabel_valuesも提供しています。

最後に、これが正しい方向でない場合、ストロークベースの強力なメトリックのために、ELK/EFKスタックが適している可能性があります。 prometheus-es-exporterのようにElasticSearchクエリの結果をメトリックとして報告できるプロジェクトがあります。

+1

すてきで完璧な答え!はい、目標はGrafanaのすべての名前を表示することでした。プロメテウスとグラファナは2ヶ月間使用しているので、もう少し自信があります。素敵な入力をありがとう – Jerome

+1

私の喜び! Grafanaの方向性が欲しいと嬉しく思っています。彼らは本当にすばらしいツールであり、学習曲線を過ぎるにつれて良くなります。 :)明らかに私は私の答えの終わりを切り捨てたので、私はそれを編集するつもりです。 –

0

「名前」のようなラベルはメトリック値とは別のものであるため、これはできません。これがどのように公開されているかを見るには、queryおよびquery_rangeエンドポイントが戻ってくるJSONを見てください。

+0

答えの終わりはわかりませんが、クエリが返すラベルにアクセスできないのはなぜですか?私はJSONオブジェクトを返すので、アイテムにアクセスできなくてはなりませんか? – Jerome

関連する問題