目前,我还没有办法确保这些服务保持运行正常。我确实设置了
restart: always
设置,但最坏的情况是,这意味着Docker如果无法启动或由于任何原因而崩溃,都会无休止地重启服务器。也许是docker pull
在更新期间导致了问题。这些服务在白天无法启动或停止运行的原因可能有很多。我想知道何时它们停止运行。也许是一封通知我的电子邮件,所以我可以解决问题,而不是仅在家人通知我或尝试使用该服务时才发现问题。
这种方式监视多个Docker容器的方法?我是否需要手写一堆执行
ps
的脚本来检查处理时间或其他内容?开箱即用的解决方案最好是很棒的。请注意,我使用Docker Compose进行所有操作,并且只有一台运行这些服务的物理机,因此无需担心复杂的设置。#1 楼
注意:仅根据文档回答,我对docker的使用并不多。 >ps
CLI:Usage: events [options] [SERVICE...]
Options:
--json Output events as a stream of json objects
项目中每个容器的流容器事件。
docker-compose events
CLI:描述
从服务器获取实时事件
您将查找容器的
docker events
事件(来自扩展描述):使用
die
从服务器获取实时事件。这些事件根据Docker对象类型的不同而有所不同。 />
无论重新启动策略如何,都会产生该事件(来自Docker Events Explained): ,那里有大量监视工具,我还怀疑有些工具已经按照您的要求进行了操作。
还有什么?我可以在它们上创建警报。下次我的任何
容器决定呕吐而死时,我都可以收到有关它们的注定状态的短信。
#2 楼
如果您不介意在家中运行其他服务,那么建议您使用Grafana,dockerd-exporter和AlertManager尝试Prometheus。 -exporter,Grafana将以一种非常不错的方式显示该数据,而AlertManager将允许您根据需要配置警报。 />还可以检查swarmprom项目。
#3 楼
如果大多数服务是网络服务,或者至少打开了一些管理TCP / IP端口,那么用curl
或netcat
监视它们可能不是最糟糕的解决方案。这就是像OpenShift这样的成熟的业务流程解决方案将如何做到的。因此,以某种递增的顺序:检查TCP / IP端口是否已打开(
netcat -z
)检查端口是否已打开并以特定提示进行响应(
netcat | grep HELLO
) 。检查端口是否使用特定的HTML响应(例如)(
curl ... | grep <p>I'm alive</p>
)。检查手写脚本是否返回true
。#4 楼
您可以像使用其他任何计算机一样,使用check_mk监视容器的运行状况。在此处阅读有关内容。.使用Check MK进行开源Docker监控
希望这会有所帮助。
评论
您的家庭服务器是在GCP / AWS / Azure /阿里云上运行的高可用性kubernetes集群...?@ simbo1905不,我办公室里只运行着一个小巧的Intel NUC。