如何测量mesos中每个容器的cpu利用率?

mum43rcc  于 2021-06-26  发布在  Mesos
关注(0)|答案(2)|浏览(451)

我有许多应用程序运行在mesos的容器上,通过marathon进行管理。我已经给了每个应用程序的cpu分配,而通过马拉松部署,如1,.5等,但在马拉松的cpu分配,并不意味着它的1个cpu或一半的cpu。这仅仅意味着它的分时比率。每个容器还可以访问其主机上的所有CPU。
现在,我想测量mesos从机上每个容器的cpu效率,以便减少或增加marathon中每个应用程序的cpu分配。我只想让资源利用更加高效。
我可以用https://github.com/bobrik/collectd-mesos-tasks,但问题是cpu利用率指标与marathon中的cpu分配无关。

zpf6vheq

zpf6vheq1#

在mesoswebui中,您可以看到执行器使用了多少cpu
下面是从中收集统计信息的代码 /monitor/statistics 终结点并计算cpu使用率。
你对什么感兴趣 cpus_total_usage 所以下面的方法应该适合你
让我们假设 a 以及 b 是某个时间点统计数据的快照。计算 cpus_total_usage ,我们需要计算executor在系统和用户空间中花费的时间,并将其除以 a 以及 b .

cpus_total_usage = (
                    (b.cpus_system_time_secs - a.cpus_system_time_secs) +
                    (b.cpus_user_time_secs - a.cpus_user_time_secs)) / 
                    (b.timestamp - a.timestamp)
                   )
cpu_percent      = cpus_total_usage / cpu_limit * 100%
mkh04yzy

mkh04yzy2#

根据您自己想要投入多少工作,您可以使用marathon事件总线,更一般地说,可以使用marathonhttpapi(例如这个端点)以及诸如cadvisor或cinf之类的低级工具来自己进行计算。如果您不想自己编写代码,我建议您使用sysdig、datadog或prometheus来完成繁重的工作。

相关问题