Cacti自定义脚本,监测Docker信息(Script/Command方式)
一 环境背景
- 监控主机A:192.168.24.231;被监控主机B:192.168.24.233
- A/B主机,通过公私钥建立ssh连接 [操作B主机时不需要输入密码,详见笔记:http://app.yinxiang.com/l/ACQDOta4_v1IEr_WI6aufZVFEux9o1ou6ts/]
二 监控目标及测试结果
主机 A监测主机B上以下信息:
- 正在运行的容器数量 (黄)
- 已经定义的容器数量 (绿)
- 崩溃的容器数量 (红)
![](https://app.yinxiang.com/shard/s41/res/9973a45c-bb80-4390-92f1-7b80e28c8954.png?resizeSmall&width=1304)
三 整体步骤
- B主机采集docker容器信息
- 监控主机A获取B主机上采集所采集信息
- 自定义cacti数据输入方式
- 自定义cacti数据模板
- 自定义cacti图形模板
- 应用Graph Template
四 具体实现
1 主机B,采集Docker信息脚本如下:DockerMonitor.sh
- # cd /home
- # vim DockerMonitor.sh
- # chmod +x DockerMonitor.sh
![](https://app.yinxiang.com/shard/s41/res/d084c975-44d3-46c4-922a-521537622d88.png?resizeSmall&width=1304)
ps :
总容器数:ALL_FUNCTION_N
正在运行的容器数:RUNNING_FUNCTION
崩溃容器数据: CRASHED_FUNCTION
执行结果如下:
![](https://app.yinxiang.com/shard/s41/res/9386f5e0-f00b-4d03-ac41-d1bae3b7a04b.png?resizeSmall&width=1304)
2 主机A,获取主机B上所采集信息
- #cd /var/www/html/cacti/scripts
- #vim testDocker.sh
![](https://app.yinxiang.com/shard/s41/res/7076db97-28e4-4291-9e91-23af2a93aca7/Image.png?resizeSmall&width=1304)
运行结果:
![](https://app.yinxiang.com/shard/s41/res/672c140e-43f1-4496-af8c-5e33f1975ac1.png?resizeSmall&width=1304)
ps:host为被监控主机ip:192.168.24.231
3 自定义Data Input Method
(1)Console->Collection Methods->Data Input Method->Add
![](https://app.yinxiang.com/shard/s41/res/6c12e2d5-c736-4bd2-ac3b-be89c64321f2.png?resizeSmall&width=1304)
ps
- 其中<ip> :被监控主机IP :192.168.24.233
- Input Type 应选择Script/Command ,因为是运行自定义脚本
- DockerMonitor.sh即为步骤2中所定义脚本
( 2 ) 弹出页面 Input Fields ==>Add
![](https://app.yinxiang.com/shard/s41/res/1b8514c5-f358-43e2-a3b1-849a5728f6bc.png?resizeSmall&width=1304)
ps:
- hostname,也可以不填写,如果填写的话,ip参数默认为Device Id
- Field[Input] 为输入参数
(3)弹出页面 Output Fields ==>Add
![](https://app.yinxiang.com/shard/s41/res/8d0d051c-8b75-4f95-9326-5fce0126c281.png?resizeSmall&width=1304)
ps:
- 框图图分应和脚本中输出参数相同,有多个输出参数,继续点Add 添加,且脚本中输出格式为:”RUNNING_FUNCTION:数量 CRASHED_FUNCTION:数量 ALL_FUNCTION:数量“
4 自定义Data Template
(1) Console->Templates->Data Templates =>Add
![](https://app.yinxiang.com/shard/s41/res/8572fbdc-1168-47bd-9cea-5318f9c5e3df.png?resizeSmall&width=1304)
ps
- Name 即这个模板的名字
- Data Source里的Name是指这个数据源的名字,这里一般会采用“|host_description| - 名称”的格式,在应用模板时,host_description会被替换为监控机器的名字
- Data Input Method这里选我们刚才创建的Data Input Method即可,如果有多个的话,保存了以后,右上角会出一个New的链接,点击可以继续创建
- 如果有多个输入的话,下面会出现Custom Data 区域,这里是指输入参数区域,你可以在这里给输入的参数给一个值,也可以让它在应用模板时输入
- 至此,Data Input Method和Data Template联系起来了。
5 自定义Graph Template
(1) Console->Templates->Graph Templates =>Add
![](https://app.yinxiang.com/shard/s41/res/19c536ac-f8d4-4854-a838-c0dd5521250f.png?resizeSmall&width=1304)
具体添加Graph Template Items如下:
![](https://app.yinxiang.com/shard/s41/res/cc4811f8-ad8a-4561-94c2-0da66fa95d46.png?resizeSmall&width=1304)
ps
- Consolidation Function 应选择AVERAGE,否则会不出图形
- 这 里第一个是Data Source选择我们之前创建的Data Template,因为可能有多个输出,因此它也可能有多个,我们一一创建即可,注意这里Color是用于显示的颜色,Graph Item Type是显示的类型,比如Area就是显示成块即可,Text Format就是给这个输出一个名字
- 创建后,如果你还想为这个输出 创建一个Legend,那就是再Add选择Graph Item Type->Legend即可,注意上面的Graph Item Inputs是自动创建的,一般不用处理,到此,Graph Templates已经完成,接下来就是应用了。
6 应用Graph Templates
选择Console->Management->Devices创建你要应用到的机器,定义输入参数等,以下步骤,略