无监控,不运维。
没有了监控,运维靠什么排查问题?靠什么调优?靠什么规划资源?因此,监控系统对于做好运维是必不可少的。
目前,比较流行的开源监控有Zabbix、NagIOS、Pormetheus、Open-Falcon等。
Nagios是一款开源的服务器和网络监视工具,能有效监控windows、linux和Unix的主机状态,交换机路由器等网络设置,打印机等。
nagios 通过服务端周期性的运行命令,检查监控设备的状态,通过命令的返回值来判断状态是否正常。如果周期内,有多少次不正常就发送告警。注重的是状态监控。
命令可以自定义,可以自己写脚本完成,只要输出返回值,nagios就可以进行状态判断。这就是nagios的灵活的地方。
但是,nagios定义的命令那个 能在本地执行,怎么监控远程的服务器?或者说是怎么在远程服务器上执行命令命令,并返回监控项目的状态呢?
这时候就要用到nrpe,被监控客户端需要安装nrpe,并启用nrpe服务,默认会启用5666端口;服务端也是需要安装nrpe,但是需要用到的命令那个是check_nrpe,这个命令可以调用远程已经定义好的命令。
因此,只要服务端周期性,调用check_nrpe命令执行远程的命令并返回状态,就可以判断远程机器的状态。
同时nagios也可以同步命令那个返回对应的性能数据,可以指定格式存储到对应的文本中。可以通过分析文本里面的信息获取历史数据。
命令输出状态用于判断服务状态,同时命令的输出会被当成信息展示出来,通过 "|"分割展示信息和性能数据。
例如:
OK - CPU Load is OK | load1=2;16;32 load5=0.1;14;32 load15=0.2;12;32
nagios配置都是文件,需要在终端下进行配置,比较不方便。也有可以存到数据库的解决方案可以选择。
nagios配置比较不方便,修改命令的时候,需要下发命令脚本,修改配置文件。
解决方案:通过命令参数来下发命令和参数,通过参数自动下载脚本。当然,这样子存在一定的风险,就是参数如果是恶意的命令,就可能出现安全问题。需要对权限进行控制。
nagios自带的web自展示状态和配置信息,没有针对性能数进行展示,需要搭建另外的服务进行图表展示。例如:PNP。
官方文档里面也有一套 nagios + nagflux + influxdb + grafana的方案。可以展示比较好看的图表
nagios是比较灵活,但是灵活以为着可以有很多选择,很多事情都要自己来定义。
你觉得Nagios怎么样呢?