随着民航IP网的建设,越来越多的运维需求被提出,对于网络中心而言,转报、ATM、卫星网网络的监控已经非常成熟,但是对于网控中心服务器的性能监控尚有空白,在这里我们将探讨Collectd在民航网络服务器中的应用前景及意义。 首先Collectd是什么,说到Collectd,不能不谈到APM,即Application Performance Monitoring——应用程序性能监控系统,现代化的运维非常依赖于应用性能监控系统,类比于民航数据通信网的网管,其作用都是在应用或者线路出现问题的时候及时通知维护人员。 Collectd的作用就是负责收集系统健康度信息,InfluxDB负责基于时序存储收集到的数据(也可以替换成Elasticsearch等),Grafana负责监控数据的报表展示。Collectd作为定期收集系统和应用程序的性能指标的守护进程,可以使用不同方式存储这些指标值。当系统运行和存储信息的时候,Collectd会周期性统计系统的相关统计信息,并展示在grafana中(Grafana是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器),同样需要指出的是,Grafana可以接入zabbix源,这为今后实现多样性的告警形式成为了可能,zabbix可以接入企业微信号,通过微信来通知维护人员。一图胜千言,这些数据在grafana中会变成神奇的图形。 我们通过已经搭建好的Grafana图形来看问题,从上面这张图可以很清楚的看出,服务器在13:30到16:00期间出现了很不稳定的状态,CPU的使用量上升到了百分之八十三,这一项使服务器性能水平处在危险的边缘,而这可能并不会直接反映在用户使用中,但是却已经成为了安全隐患,图中的问题是因为在14:00-16:00这个过程中,程序产生了大量的报错日志内容并进行压缩,导致CPU使用率急剧提升,这样的数据可以使运维人员在服务器真正出现生产问题之前进行应对,从而提升保障水平。 隨着民航业的发展,网络性能势必随着进行资源的扩充,由于系统性能有了记录,可以记录系统使用高峰期(瓶颈),Collectd使得在高峰到达之前进行资源扩容成为可能。类比于阿里巴巴双11的资源扩充策略,多是依赖于这类性能监控软件的采样结果,采样并分析每年的用量高峰,来分配服务器资源,机器会记录真实的使用状态,而是否需要扩容,扩容哪些资源,很多情况是凭借老员工的经验无法得来的。 Collectd可以监控的数值非常多,从CPU、内存、SWAP使用情况,到磁盘空间使用率,网络带宽利用率等,都可以通过不同的插件,配置来实现,Collectd支持多服务器监控,这对于机器众多的机房而言,大幅的节省了每台服务器需要安装Collectd终端需要消耗的资源,通过network插件,可以将一个Collectd配置成为server,其他的配置成为client,然后client会向服务器端发送数据,所有的统计都会记录在服务端。 Grafana图表内容均通过维护人员手工录入,虽然很麻烦,但是只需要一次建立就一直可以使用,同时,Grafana可以通过不同的ip地址,对设备进行分类,如监控某一应用的使用,可以单独显示为不同的图表,如转报服务器,华为服务器等。Grafana的数据保存时间可以自由设置,具体的时间可以设置为5天,也可以不设限制,但是对于网页的显示来说会造成一定的负担,导致页面的崩溃(视机器性能而定)。 上图为Collectd的架构图,图中可以看到Collectd进程通过和各种插件交互完成对数据的采集。相对于zabbix,nagios这种更适合于企业级(更多应用服务器),且需要专人负责维护的大型监控应用来说,使用Collectd相较于其他收集系统相关指标的工具,有一定的优点,比如嵌入式系统,C 语言开发(高效)、无需系统 cron 支持(独立)、简单易用,此外他还包含有超过70多种插件以及文档支持。Collectd 除了解析 configfile 其他一切都是在插件下完成,这意味着主守护进程没有任何外部依赖,现在已知的可以应用在 Linux,Solaris,Mac OS X上,AIX,FreeBSD,NetBSD 和 OpenBSD 等系统中,Collectd 配置简单:除了那些需要加载的模块,你不需要配置其他任何东西。Collectd 不是脚本,而是运行在内存里面的进程,不需要每次记录都启动繁重的解释器,有 nice 级别的 10 秒钟的默认解析。Collectd 能够处理任意数量的主机,从一个到几千个,而且可以通过利用该资源尽可能高效。Collectd 支持 SNMP,该 SNMP 插件提供了一个通用接口 SNM 协议,可以用它来查询值,并基于 Collectd 机制处理他们,例如发送他们做其他地方的服务器实例。Collectd 支持各种自定义扩展,C-plugins,Perl-plugins,Java-plugins,Python-plugins,UNIX 域套接字,Java 的 MBean 的支持等。 由于历史原因,民航网控中心对于用户每天的访问量高峰期无法确定,对于网络和设备资源的高峰期占用无从掌控,尽管服务器的资源使用情况现在并没有对实际的业务产生影响,但是对于资源占用情况的掌握,可以更加合理的使用资源,合理进行资源分配,预防高峰期带来的服务器宕机,夯死的情况发生。