BasisAgent AIX remote monitor tool(二)

需求场景:

一个系统管理员每天需要对多台aix、linux服务器进行巡检。

其中对文件系统的监控,是非常重要工作。(按我的经验,导致服务器停止服务有50%的原因是文件系统的爆满)

面对的服务器少,用手工统计还勉强可以应对,但如果服务器数量太多,管理员的工作量就会大增。

多年以来,我一直想要一个这样的程序,能够自动完成这项工作,这是一件多么愉快的事呀。


BasisAgent工具说明:

BasisAgent工具可以帮助系统管理员监控多台AIX、linux服务器的文件系统,对异常的文件系统提供预警。

BasisAgent按设定的时间点,自动使用telnet或SSH协议,登录服务器,执行指定的相关命令,根据事先定义的规则,

过滤服务器返回的信息,把需要的数据保存到数据库中,如果数据超过阀值,提示该异常或邮件通知管理员。

通过标准的telnet,SSH协议,你可以用BasisAgent监控多种设备,并不一定局限于服务器。

(当然你需要在BasisAgent的开源项目中按自己的需求扩展)

BasisAgent AIX remote monitor tool(二)

底层技术:

C# WINFORMS ,ENTITY FRAMEWORK,Dart.Telnet库, SQLserver


V0.9版功能模块:

1. host monitor 手动监控(0.9版只实现了Telnet协议)。

2. Rule lib 文件系统规则库。

3. DB logStream 自动统计数据流存入数据库。

4. Schedule 定时作业自动统计。

5. Alarm mail 对自动统计的数据,达到设定阈值邮件管理员报警。


1. host monitor 模块

目前只支持Telnet adapter,SSH方式可以在后续加入。

BasisAgent AIX remote monitor tool(二)


2. Rule lib 规则库:

规则库是针对每一个主机返回的信息设置过滤条件,程序按这些条件获取特定的内容。

因为要统计全部文件系统的目录,所以主机文件系统的规则库可能是比较大的,我的主机最多的有40个文件目录。

我准备了批量导入功能,在“Rule lib”中,右键点击主机名,可以批量导入规则库,

导入文本文件的格式: 主机名  命令说明 关键字头  关键字尾 (中间使用空格间隔)。

规则库详细描述,请参考: https://blog.csdn.net/ot512csdn/article/details/80027690

BasisAgent AIX remote monitor tool(二)


3. DB  logStream 自动统计数据流存入数据库:

为方便后续扩展WEB对数据的提取展现,Database是使用SQLserver,没有使用单个数据库SQLite 。

数据库中设计了三张表,host表(存放服务器信息):

BasisAgent AIX remote monitor tool(二)

rule表(存放规则条件):

BasisAgent AIX remote monitor tool(二)

log表(存放按规则条件获取的服务器文件系统信息):

BasisAgent AIX remote monitor tool(二)

注意alarm_checked字段,文件目录超过90%,会填入"alarm",报警完成后会写入"clear"。

数据每次被记录都有一个时间点,所以也可以通过时间点查询,服务器文件系统的历史数据。

在"log stream"中可以查询服务器某个时间点的文件系统信息。

BasisAgent AIX remote monitor tool(二)

4. Schedule 定时作业:

程序会按“Schedule ”中设定时间点telnet全部服务器,获取数据。

时间点的设置我比较懒,我放在了app.config中。

如下设置会在下面三个时间点开始统计数据,一天三次,比人的效率高了不知道多少倍。

<appSettings>
    <add key="t1" value="7:01" />
    <add key="t2" value="16:49" />
    <add key="t3" value="23:01" />
  </appSettings>

BasisAgent AIX remote monitor tool(二)

5. Alarm mail:

每次自动完成统计后,服务器会把文件系统超过90%的主机和目录,显示出来放到Alarm控件中。

管理员看到后点“橡皮”按钮可以取消这些警告。mail通知管理员功能会在下一版中提供。

BasisAgent AIX remote monitor tool(二)


GitHub项目开源:

https://github.com/basis100/BasisAgent