加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

借助shell脚本监控LXC应用容器内的应用

发布时间:2021-11-23 13:35:15 所属栏目:PHP教程 来源:互联网
导读:利用lxc-execute启动应用容器后,可以利用lxc自带的lxc-info获取容器的状态,lxc-monitor监控容器状态的变化,但是不能获取容器内应用的信息。这点可以通过结合Linux ps命令和lxc自带的lxc-ps和lxc-cgroup命令来实现。 1.首先我们可以通过lxc-ps获取特定容器

利用lxc-execute启动应用容器后,可以利用lxc自带的lxc-info获取容器的状态,lxc-monitor监控容器状态的变化,但是不能获取容器内应用的信息。这点可以通过结合Linux ps命令和lxc自带的lxc-ps和lxc-cgroup命令来实现。
 
1.首先我们可以通过lxc-ps获取特定容器内需要监控的应用的pid号
 
#usage:get_pid container_name app_name
function get_pid
{
local pid=`lxc-ps -n $1 |grep $2 | awk '{print $2}'|grep -v PID`
echo $pid
}
 
2.然后我们就可以使用ps命令对该pid代表的应用进行监控了。
 
2.1获取应用所在的cpu核心
 
#usage:get_cpu_core pid
function get_cpu_core
{
local cpu_core=`ps -p $1 -o psr | grep -v PSR`
echo $cpu_core
}
 
2.2获取应用占用的cpu比例
 
#usage:get_cpu_percent pid
function get_cpu_percent
{
local cpu_percent=`ps -p $1 -o pcpu | grep -v CPU`
echo $cpu_percent
}
 
2.3获取应用使用的RSS(物理内存)
 
#usage:get_app_phy_mem pid
function get_app_phy_mem
{
local mem=`ps -p $1 -o rss | grep -v RSS`
mem=$((mem*1024))
echo $mem
}
 
3.接着利用LXC自带的lxc-cgroup命名来统计整个容器的资源占用情况
 
3.1获取容器使用的物理内存(RSS+cache)
 
#usage:get_container_phy_mem container_name
function get_container_phy_mem
{
local mem=`lxc-cgroup -n $1 memory.usage_in_bytes`
echo $mem
}
 
3.2获取容器使用物理内存和swap空间的和
 
#usage:get_container_total_mem container_name
function get_container_total_mem
{
local mem=`lxc-cgroup -n $1 memory.memsw.usage_in_bytes`
echo $mem
}
 
4.利用lxc-info抓取容器的状态
 
#usage:get_status container_name
function get_container_status
{
local str=`lxc-info -n $1 |grep state |awk '{print $2}'`
echo $str
}
 
可以将以上函数整合成一个脚本,然后定时执行脚本,就可以监控容器内的应用资源使用状况了。
 
再进一步可以根据应用资源消耗状况,动态增减分配给容器的资源量。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读