2017-02-07 74 views
0

我對Prometheus非常陌生,現在我想對查詢做一些測試,使其更熟悉它。因此,與查詢container_last_seen[10s]如何使用Prometheus進行查詢?

它返回我的數組:

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允許使用bywithout子句減少標籤。

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

應該通過僅使用名稱鍵返回對象來讓你更接近你想要的東西。

我想你想要更進一步 - 雖然你不想要價值觀,你不想要對象的一部分 - 你只是想要字符串。不幸的是,Prometheus處理可以具有標籤的數字度量,特別是不包含字符串度量。

雖然它需要額外的軟件,它被正式普羅米修斯建議,所以我會,因爲它可以讓你非常接近我相信在這裏提到它是你想要的解決方案:

如果你是用圖來Grafana該查詢,無論是使用所有按鍵還是僅使用名稱鍵,圖例格式{{name}}都應該能夠完全符合您的要求。 Grafana還提供label_values以幫助實現過濾的目的。

最後,如果這不是您的正確方向,對於密集的基於字符串的指標,ELK/EFK堆棧可能更適合。有像prometheus-es-exporter這樣的項目可以將ElasticSearch查詢的結果報告爲度量標準。

+1

這樣一個不錯的和完整的答案!是的,目標是顯示格拉法納所有的名字。自從我用了2個月後,現在我對Prometheus和Grafana更有信心。謝謝你的好意輸入 – Jerome

+1

我的榮幸!我很高興你想要格拉法納方向。它們是非常棒的工具,只有當我們通過學習曲線時纔會變得更好。 :)顯然,我切斷了我的答案,所以我要編輯回來。 –

0

這是不可能的,因爲像'name'這樣的標籤是獨立於度量值的。您應該查看JSON查詢和query_range端點以查看它是如何暴露的。

+0

我真的不明白你的答案的結束,但爲什麼我不能訪問查詢返回的標籤?它返回給我一個JSON對象,所以我應該能夠訪問項目沒有? – Jerome