關於容器監控,這3種工具你可能用得上
數人云技術總監老龐在之前的文章中《解惑|你是否為容器監控操碎了心?》提到:沒有監控如同閉眼開車,今天小數給大家分享三種工具,輕鬆搞定容器監控~
本文將介紹如何為DevOps/Docker環境創建一個有趣且包含時間時間序列指標的監控環境,使用Garafana作為展示儀錶盤,資料庫為influxDb,收集指標的工具有很多,如Collectd,Graphite等,這裡選擇Telegraf(InfluxData公司的產品)
安裝Grafana
建立一個持久存儲卷,可以保留升級版本、銷毀重建Grafana容器時的配置。
# docker run -d -v /var/lib/grafana --name grafana-storage busybox:latest
創建並啟動Grafana容器,此時已安裝完畢等待配置。
#docker create --name = grafana -p 3000:3000 --volumes-from grafana-storage -e "GF_SECURITY_ADMIN_PASSWORD=<<you-password>>" grafana/grafana
Docker升級腳本
若沒有Grafana容器的重新部署升級腳本,可參考:https://github.com/foxutech/devops
自動啟動映像—創建Systemd啟動腳本
#vi /lib/systemd/system/grafana.service
[Unit]Description=grafana containerRequires=docker.serviceAfter=docker.service[Service]User=foxutechRestart=on-failureRestartSec=45ExecStart=/usr/bin/docker start -a grafanaExecStop=/usr/bin/docker stop -t 2 grafana[Install]WantedBy=multi-user.target
設置開機啟動。
#systemctl enable grafana.service
現在啟動。
#systemctl start grafana
http://foxutech.com/create-influxdb-and-grafana-containers-on-linux/
安裝InfluxDB
創建本地存儲,目的是避免在任何情況下容器被刪除導致的數據丟失。
#mkdir -p / monitoring / influxdb / conf /#mkdir -p / monitoring / influxdb / db /
檢驗文件夾所有者及讀取許可權(可選)
不是必備項,取決於創建上述文件夾使用的用戶名及Linux發行版本,若想確保此路徑由啟動Docker服務的用戶所有,請將下面命令中的User替換為實際用戶名:
#chown user:user -R /docker
生成默認配置項
生成後仔細校驗,一些重要的選項需要去注意。
#docker run --rm influxdb influxd config> /monitoring/influxdb/conf/influxdb.conf
創建並啟動InfluxDB容器
# docker create --name influxdb -e PUID=1212 -e PGID=1212 -p 8083:8083 -p 8086:8086 -v /monitoring/influxdb/conf/influxdb.conf:/etc/influxdb/influxdb.conf:ro -v /monitoring/influxdb/db:/var/lib/influxdb influxdb -config /etc/influxdb/influxdb.conf# docker start influxdb
創建測試資料庫
查看本地 localhost:8083上的實例。下面需要創建測試的資料庫,只需進入查詢區域並輸入:
CREATE DATABASE test
Docker升級腳本
若沒有InfluxDB容器的重新部署升級腳本,可參考:https://github.com/foxutech/devops
自動啟動映像—創建Systemd啟動腳本
#vi /lib/systemd/system/grafana.service
[Unit]Description=influxdb containerRequires=docker.serviceAfter=docker.service[Service]User=foxutechRestart=on-failureRestartSec=45ExecStart=/usr/bin/docker start -a influxdbExecStop=/usr/bin/docker stop -t 2 influxdb[Install]WantedBy=multi-user.target
設置開機啟動
#systemctl enable influxdb.service
馬上啟動測試
#systemctl start influxdb
Docker統計
當Docker很快成為日常工作流程的一部分,為了快速部署常見部署和頻繁升級常用包,同時保持配置文件和卷存儲完整性,本文作者在單個伺服器中的兩台VM虛擬機上跑了近15個容器實例,啟動新的軟體實測最後移到垃圾箱沒有任何痕迹。
為了實現這一點,要去部署Telegraf容器,實際上,它是大多數自定義腳本極好的替代品,如涉及到SNMP數據時,可以讓Telegraf獲取所有數據,並將數據發送到InfluxDB。
用Docker安裝Telegraf
創建Docker卷存儲位置
#mkdir -p / monitoring / telegraf /
生成默認配置文件
#docker run --rm telegraf -sample-config > /monitoring/telegraf/telegraf.conf
修改此文件以滿足您的實際情況,在配置文件頂部是很多環境變數相關的選項。特別應查找這兩項。
輸出插件
# Configuration for influxdb server to send metrics to[[outputs.influxdb]]urls = ["http://localhost:8086"] # requireddatabase = "telegraf" # requiredprecision = "s"retention_policy = "default"write_consistency = "any"timeout = "5s"
Docker 配置
[[inputs.docker]]## Docker Endpoint## To use TCP, set endpoint = "tcp://[ip]: [port]"## To use environment variables (ie, docker-machine), set endpoint = "ENV"#endpoint = "unix:///var/run/docker.sock"#you may need to use the actual IP hereendpoint = "tcp://localhost:2375"## Only collect metrics for these containers, collect all if emptycontainer_names = []## Timeout for docker list, info, and stats commandstimeout = "30s"
Docker升級腳本
若沒有Telegraf容器的重新部署升級腳本,可參考:https://github.com/foxutech/devops
自動啟動鏡像 - 創建一個Systemd啟動腳本
#vi /lib/systemd/system/telegraf.service
[Unit]Description=telegraf containerRequires=docker.serviceAfter=docker.service[Service]User=foxutechRestart=on-failureRestartSec=45ExecStart=/usr/bin/docker start -a telegrafExecStop=/usr/bin/docker stop -t 2 telegraf[Install]WantedBy=multi-user.target
設置開機啟動。
# systemctl enable telegraf.service
啟動並測試。
# systemctl start telegraf
一旦Telegraf啟動,您應該看到數據打入到InfluxDB資料庫。
以上是用InfluxDB、Grafana、Telegraf這三種工具為容器創建時間序列指標的監控環境,當然,沒有最好,只有最適合自身及團隊的工具,做好監控,能及時並解決發生的問題,讓應用處於最優的狀態運行。
原文作者:motoskia
原文鏈接:http://foxutech.com/monitor-docker-environment/
推薦閱讀:
※Docker 鏡像優化與最佳實踐
※很遺憾,我也不知道什麼是容器!
※在阿里雲上輕鬆部署Kubernetes GPU集群,遇見TensorFlow
※如何在 Windows 上運行 Linux 容器
※Docker Compose 整合發布應用相關服務