星期二, 9月 22, 2015

Prometheus

Prometheus 是一個 Monitor 的服務,要收集 host 資訊要搭配 node-exporter,要有 dashboard ,可以搭配 promdash。
而 這三者,都有 docker container image 可以下載,但是要怎麼搭在一起,可就讓人傷腦筋了。花了一些時間把他們三個兜在一起,寫成 docker-compose.yml ,這樣就可以用 docker-compose up 直接啟動這三個 container。

過程裡遇到幾個難題:
  1. 沒 辦法用自訂的 prometheus 設定:這部份查了老半天,反覆查看 prometheus 的 Dockerfile 以後,確定要 overwrite,所以在 docker-compose.yml 裡,加上了 entrypoint 與 command,其實就是原來的 prometheus Dockerfile 裡的 entrypoint 跟 command,只是 -config.file 這邊修改掉了。
    另外就加掛了自訂的 conf 目錄到容器裡的 /etc/custom 。
  2. prometheus 無法找到 node-exporter:這邊要利用 docker 的 link 在 /etc/hosts 裡插入的主機名稱,不能用 node-exporter 文件裡提到的 localhost ,所以我填入 docker-compose.yml 裡定義的 nodeexporter。
大概就這樣,目前執行結果看起來是沒問題,用一陣子看看吧。另外有在 https://hub.docker.com/u/prom/ 這裡看到不少 container image 可以拉下來組合的,以及 google 的 cAdvisor,有機會再來看看。
後 記:實驗結果發現 node-exporter 不適合放在 docker container 裏面執行(跟 node-exporter 對應的,還有一個 container-exporter 專案,是專門收集 container 資訊的),因為會無法收集到關於 host 的資訊,所以 node-exporter 最好還是放在 host 執行,然後讓 prometheus 能存取到。另外,在找關於連結到 host 的部份時,看到有人提報一個 issue 給 docker,建議應該提供一個 --link-host 的功能,讓 container 裏面也能存取到 host,而不需要額外繞路取得。一般的繞路手法是透過 route 取得 gateway 位址,在某些情況下是還蠻麻煩的。

沒有留言: