歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> 利用shell腳本監控LXC應用容器內的應用

利用shell腳本監控LXC應用容器內的應用

日期:2017/3/1 10:17:48   编辑:SHELL編程

利用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
}

可以將以上函數整合成一個腳本,然後定時執行腳本,就可以監控容器內的應用資源使用狀況了。

再進一步可以根據應用資源消耗狀況,動態增減分配給容器的資源量。

Copyright © Linux教程網 All Rights Reserved