標籤:

關於容器監控,這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容器的重新部署升級腳本,可參考:github.com/foxutech/dev

自動啟動映像—創建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

foxutech.com/create-inf

安裝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容器的重新部署升級腳本,可參考:github.com/foxutech/dev

自動啟動映像—創建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容器的重新部署升級腳本,可參考:github.com/foxutech/dev

自動啟動鏡像 - 創建一個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

原文鏈接:foxutech.com/monitor-do

推薦閱讀:

Docker 鏡像優化與最佳實踐
很遺憾,我也不知道什麼是容器!
在阿里雲上輕鬆部署Kubernetes GPU集群,遇見TensorFlow
如何在 Windows 上運行 Linux 容器
Docker Compose 整合發布應用相關服務

TAG:容器 | 监控 |