前言

本系列将对夜莺平台各个模块的主要逻辑进行介绍,方便大家进行二次开发,本篇是系列的第四篇,资产设备管理 (AMS) 模块

首先贴下夜莺的项目地址和架构图,正在使用夜莺的读者欢迎给夜莺加一个star

img

本节主要讲解资产管理系统 AMS模块,开源版本只实现了主机设备的管理。AMS 是一个web 服务,http接口大家直接看 http/router.go 的代码,里面列举了 ams 的所有 http 接口。本篇主要介绍下大家如果将自己公司的主机设备自动注册到资产管理系统中,以及如何使用设备管理的扩展字段,首先介绍下设备注册

设备自动注册

agent上报

在本系列第一篇中,介绍了 agent 负责了三个工作,其中一个工作是 主机设备信息的收集,只要将 n9e-agent 部署到需要收集信息的主机上,agent 就会自动采集主机的设备信息,采集方式是执行在 agent.yml 中提前写到的shell命令,将执行输出结构赋值给对象的字段,agent配置文件如下

report:
  # 上报周期,单位是秒
  interval: 10
  # physical:物理机,virtual:虚拟机,container:容器,switch:交换机
  cate: physical
  # 使用哪个字段作为唯一KEY,即作为where条件更新对应记录,一般使用sn或ip
  uniqkey: ip
  # 如果是虚拟机,应该是获取uuid
  # curl -s http://169.254.169.254/a/meta-data/instance-id
  sn: dmidecode -s system-serial-number | tail -n 1
  fields:
    cpu: cat /proc/cpuinfo | grep processor | wc -l
    mem: cat /proc/meminfo | grep MemTotal | awk '{printf "%dGi", $2/1024/1024}'
    disk: df -m | grep '/dev/' | grep -v '/var/lib' | grep -v tmpfs | awk '{sum += $2};END{printf "%dGi", sum/1024}'

从配置文件我们可以发现 cpu、mem 和 disk 采集时所执行的命令,大家可以根据自己的场景去修改这些shell

扩展字段使用

如果想要采集更多的信息,ams 也提供了扩展字段的能力,只需要在页面上添加好扩展字段的key,然后再 agent.yml 的 fields 中 添加增加字段的采集命令即可,举个例子,如果我们想要增加主机内核版本的展示,首先我们到扩展字段管理添加 kernel_version 字段

然后在 agent.yml 的 report.fileds 中添加配置

fields:
    cpu: cat /proc/cpuinfo | grep processor | wc -l
    mem: cat /proc/meminfo | grep MemTotal | awk '{printf "%dGi", $2/1024/1024}'
    disk: df -m | grep '/dev/' | grep -v '/var/lib' | grep -v tmpfs | awk '{sum += $2};END{printf "%dGi", 
    kernel_version: uname -v 
    tannat: echo "inner"

这样即可实现扩展字段的自动上报。

接口调用

除了使用 agent 自动上报来注册设备以外,我们也可以和自己公司内部的平台联动,通过调用接口的方式,将系统设备自动注册到资产管理平台,ams 提供了 /hosts/register 的接口,调用方式可以参考agent的 report 的实现

租户自动分配

如果大家使用夜莺的场景比较简单,自家的公司只需要有一个租户的话,可以参考上面的配置,在 fileds 中配置 tenant 字段,主机注册到资产管理系统之后,会自动分配到 inner 租户下面

AMS模块比较简单,本篇介绍到此就结束了,下篇将为大家介绍任务执行中心(JOB)模块