前言:人工记录每台网络服务器的硬件配置信息已经是很久以前的事情了。无论是基于脚本制作,还是自动化技术的专用工具,都可以一次编写,四处爬行。本文以saltstack为关键应用工具,然后利用其APi编写所需的Python脚本~~
要求如下:形成网络服务器的主机名、IP地址、运行内存、CPU内核、计算机 *** 作系统、数据信息磁盘配额制、关键运营服务项目。
盐堆快速入门,请参考:http://youerning.blog.51cto.com/10513771/1708964
Grains,这里是使用saltstack的关键,是saltstackminion形成的一些静态数据信息,如CPU、运行内存、主机名等。,而这是每个人都需要的。
实现salt\*grains.items,它会复制很多默认设置抓取的信息,其中一些如下
自然你只选择你必须的,实际 *** 作如下。
获取主机名
salt H-T-4 grains.item host获取IP地址
salt zabbix grains.item ipv4获取CPU内核
salt \* grains.item num_cpus等等,根据自己的需求,get~~~
特别是谷物信息中没有电脑硬盘信息,所以你需要根据disk.usage选项获取你需要的电脑硬盘信息
实现了Saltzabbixdisk.usage,并获得了以下结果。
其中1K-blocks是大家都需要的电脑硬盘信息,按照要求只需要数据信息盘/数据,所以这个盘的配额制后面会测。
最后,脚本如下
#coding=utf-8 import salt.client as sc import json ###salt启用 local = sc.LocalClient() ###总体目标服务器特定 tgt = "*" ###获得grains,disk信息 grains = local.cmd(tgt,"grains.items") diskusage = local.cmd(tgt,"disk.usage") ###关键运用目录即文档开始 app_name = ["tomcat","zookeeper","redis","mysql","nginx"] cols = "主机名,IP地址,运行内存(GB),CPU核数,电脑 *** 作系统,数据信息盘/data(GB),隶属新项目,关键运用" ###开启一个.csv文件,便于载入 ret_file = open("ret.csv","w") ###最先载入开始,有点儿字段的含意 ret_file.write(cols "\n") try: for i in grains.keys(): ###复印信息可注解掉 print grains[i]["nodename"] print "ipv4" ":" ,grains[i]["ipv4"] print "mem_total" ":" , grains[i]["mem_total"] / 1024 1 print "num_cpus" ":" , grains[i]["num_cpus"] print "osfullname" ":" , grains[i]["osfullname"] print "release" ":" , grains[i]["lsb_distrib_release"] ###很有可能一些服务器沒有/data数据信息盘1048576是1024x1024 if "/data" not in diskusage[i]: print "diskusage" ":" "have no /data disk" else: data_vol = int(diskusage[i]["/data"]["1K-blocks"]) print "diskusage" ":" , data_vol / 1048576 ###除掉127.0.0.1这一详细地址 ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","") ###由于一些历史时间遗留,这儿获得并不是主机名,只是salt-minion的id名,用于分辨关键运用 hostname = grains[i]["id"] ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","") ipv4 = ipv4.replace(",","and") mem = grains[i]["mem_total"] / 1024 1 num_cpu = grains[i]["num_cpus"] OS = grains[i]["osfullname"] grains[i]["lsb_distrib_release"] if "/data" not in diskusage[i]: disk_data = "None" else: disk_data = data_vol / 1048576 ###新项目名叫空 project = "" ###根据minion ID名来分辨关键运作服务项目,例如xx-mysql-1,则运作mysql for j in app_name: if j in hostname.lower(): app = j break else: app = "undefined" c = "," ###联接并载入 line = hostname c ipv4 c str(mem) c str(num_cpu) c str(OS) c str(disk_data) c project c app ret_file.write(line "\n") except Exception,e: print "Exception:\n",e finally: ret_file.close()用文本文档打开应该是这样的。
用Excel打开应该是那样的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)