如何使用Monit部署服务器监控系统

很多Linux系统管理员依赖一个集中式的远程监控系统(比如Nagios或者Cacti)来检查他们网络基础设备的健康状况。虽然集中式监控让管理员的生活更简单了,然而处理很多机器和服务时,专用的监控中心显然成为了一个单点故障,如果监控中心挂了或者因为什么原因(比如硬件或者网络故障)不可访问了,你就会失去整个网络基础设备情况的任何信息。

一个给你的监控系统增加冗余度的方法是安装独立的监控软件(作为后备),至少在网络中的关键/核心服务器上。这样在集中式监控系统挂掉的情况,你还有能力通过后备的监控方式来获取核心服务器的运行状况。

Monit是什么?

Monit是一个跨平台的用来监控Unix/linux系统(比如Linux、BSD、OSX、Solaris)的工具。Monit特别易于安装,而且非常轻量级(只有500KB大小),并且不依赖任何第三方程序、插件或者库。然而,Monit可以胜任全面监控、进程状态监控、文件系统变动监控、邮件通知和对核心服务的自定义动作等场景。易于安装、轻量级的实现以及强大的功能,让Monit成为一个理想的后备监控工具。

我已经在一些机器使用Monit几年了,而且我对它的可靠性非常满意。甚至作为全面的监控系统,对任何Linux系统管理员来说Monit也是非常有用和强大的。在这篇教程中,我会展示如何在一个本地服务器部署Monit(作为后备监控系统)来监控常见的服务。在部署过程中,我只会展示我们用到的部分。

在Linux安装Monit

Monit已经被包含在多数Linux发行版的软件仓库中了。

Debian、Ubuntu或者Linux Mint:


  1. $ sudo aptitude install monit

Fedora或者CentOS/RHEL:

在CentOS/RHEL中,你必须首先启用EPEL或者Repoforge软件仓库.


  1. # yum install monit

Monit自带一个文档完善的配置文件,其中包含了很多例子。主配置文件在/etc/monit.conf(Fedora/CentOS/RHEL 中),或者/etc/monit/monitrc(Debian/Ubuntu/Mint 中)。Monit配置文件有两部分:“Global”(全局)和“Services”(服务)。

Global Configuration: Web Status Page (全局配置:Web状态页面)

Monit可以使用邮件服务来发送通知,也可以使用HTTP/HTTPS页面来展示。我们先使用如下配置的web状态页面吧:

  • Monit监听1966端口。
  • 对web状态页面的访问是通过SSL加密的。
  • 使用monituser/romania作为用户名/口令登录。
  • 只允许通过localhost、myhost.mydomain.ro和在局域网内部(192.168.0.0/16)访问。
  • Monit使用pem格式的SSL证书。

之后的步骤,我会使用一个基于Red Hat的系统。在基于Debian的系统中的步骤也是类似的。

首先,在/var/cert生成一个自签名的证书(monit.pem):


  1. # mkdir /var/certs
  2. # cd /etc/pki/tls/certs
  3. # ./make-dummy-cert monit.pem
  4. # cp monit.pem /var/certs
  5. # chmod 0400 /var/certs/monit.pem

现在将下列代码片段放到Monit的主配置文件中。你可以创建一个空配置文件,或者基于自带的配置文件修改。


  1. set httpd port 1966 and
  2. SSL ENABLE
  3. PEMFILE /var/certs/monit.pem
  4. allow monituser:romania
  5. allow localhost
  6. allow 192.168.0.0/16
  7. allow myhost.mydomain.ro

Global Configuration: Email Notification (全局配置:邮件通知)

然后,我们来设置Monit的邮件通知。我们至少需要一个可用的SMTP服务器来让Monit发送邮件。这样就可以(按照你的实际情况修改):

  • 邮件服务器的机器名:smtp.monit.ro
  • Monit使用的发件人:monit@monit.ro
  • 邮件的收件人:guletz@monit.ro
  • 邮件服务器使用的SMTP端口:587(默认是25)

有了以上信息,邮件通知就可以这样配置:


  1. set mailserver smtp.monit.ro port 587
  2. set mail-format {
  3. from: monit@monit.ro
  4. subject: $SERVICE $EVENT at $DATE on $HOST
  5. message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.
  6. Yours sincerely,
  7. Monit
  8. }
  9. set alert guletz@monit.ro

就像你看到的,Monit会提供几个内部变量($DATE$EVENT$HOST等),你可以按照你的需求自定义邮件内容。如果你想要从Monit所在机器发送邮件,就需要一个已经安装的与sendmail兼容的程序(如postfix或者ssmtp)。

Global Configuration: Monit Daemon (全局配置:Monit守护进程)

接下来就该配置Monit守护进程了。可以将其设置成这样:

  • 在120秒后进行第一次检测。
  • 每3分钟检测一次服务。
  • 使用syslog来记录日志。

如下代码段可以满足上述需求。


  1. set daemon 120
  2. with start delay 240
  3. set logfile syslog facility log_daemon

我们必须定义“idfile”,Monit守护进程的一个独一无二的ID文件;以及“eventqueue”,当monit的邮件因为SMTP或者网络故障发不出去,邮件会暂存在这里;以及确保/var/monit路径是存在的。然后使用下边的配置就可以了。


  1. set idfile /var/monit/id
  2. set eventqueue
  3. basedir /var/monit

测试全局配置

现在“Global”部分就完成了。Monit配置文件看起来像这样:


  1. # Global Section
  2. # status webpage and acl's
  3. set httpd port 1966 and
  4. SSL ENABLE
  5. PEMFILE /var/certs/monit.pem
  6. allow monituser:romania
  7. allow localhost
  8. allow 192.168.0.0/16
  9. allow myhost.mydomain.ro
  10. # mail-server
  11. set mailserver smtp.monit.ro port 587
  12. # email-format
  13. set mail-format {
  14. from: monit@monit.ro
  15. subject: $SERVICE $EVENT at $DATE on $HOST
  16. message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.
  17. Yours sincerely,
  18. Monit
  19. }
  20. set alert guletz@monit.ro
  21. # delay checks
  22. set daemon 120
  23. with start delay 240
  24. set logfile syslog facility log_daemon
  25. # idfile and mail queue path
  26. set idfile /var/monit/id
  27. set eventqueue
  28. basedir /var/monit

现在是时候验证我们的工作了,你可以通过运行如下命令来验证存在的配置文件(/etc/monit.conf):


  1. # monit -t
  2. Control file syntax OK

如果monit提示任何错误,请再检查下配置文件。幸运的是,错误/警告信息是可以帮助你发现问题的,比如:


  1. monit: Cannot stat the SSL server PEM file '/var/certs/monit.pem' -- No such file or directory
  2. /etc/monit/monitrc:10: Warning: hostname did not resolve 'smtp.monit.ro'

一旦你确认配置文件没问题了,可以启动monit守护进程,然后等2到3分钟:


  1. # service monit start

如果你使用的是systemd,运行:


  1. # systemctl start monit

现在打开一个浏览器窗口,然后访问https://<monit_host>:1966。将<monit_host>替换成Monit所在机器的机器名或者IP地址。

如果你使用的是自签名的SSL证书,你会在浏览器中看到一个警告信息。继续访问即可。

你完成登录后,就会看到这个页面。

原文发布时间为:2015-05-30

本文来自合作伙伴“Linux中国”

时间: 2024-10-04 20:31:03

如何使用Monit部署服务器监控系统的相关文章

Opserver开源的服务器监控系统(ASP.NET)

  Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET(MVC)应用程序,无需任何复杂的应用配置,入门很快.下载地址:https://github.com/opserver/Opserver.据说,国内腾讯公司内部也有使用.接下来就着重给大家介绍下Opserver的安装配置过程. 首先,解压下载的项目文件,启动VS,项目结构如下:     其次,打开解决方案下的Config文件夹,我们可以看到很多以example为扩展名的文件,这些就是Op

如何在局域网内部署服务器监控 ?

背景 随着互联网的发展,各种网络攻击手段也层出不穷,不管是大型企业还是中小企业,随时都有被攻击的危险,因此很多公司都会采取各种手段来维护自己服务器安全,其中比较常见的是采用内网环境,只设置一台代理服务器,其他服务器都走代理,这样即使遭受攻击对内网环境的服务器影响还是很小的.那这种情况下怎么监控服务器,数据库的性能,有人说有开源软件啊,例如 zabbix nagios 等,但别忘了,使用这2种 监控软件从配置监控开始,到后期一天天的维护,这可是都需要专人来看管的. 那么问题来了,内网环境的数据库监

几个常用网络/服务器监控开源软件

想要更清晰的了解你的网络吗?没有比这几个免费的工具更好用的了. 网络和系统监控是一个很宽的范畴.有监控服务器.网络设备.应用正常工作的方案,也有跟踪这些系统和设备性能,提供趋势性能分析的解决方案.有些工具像个闹钟一样,当发现问题的时候就会报警,而另外的一些工具甚至可以在警报响起的时候触发一些动作.这里,收集了一些开源的工具,旨在解决上述的一些甚至大部分问题. Cacti Cacti是一个性能广泛的图表和趋势分析工具,可以用来跟踪并几乎可以绘制出任何可监测指标,描绘出图表.从硬盘的利用率到风扇的转

视频服务器在网络视频监控系统中的地位

作为http://www.aliyun.com/zixun/aggregation/32407.html">网络视频监控系统的重要组成部分,视频服务器随着网络化监控时代的到来正被越来越关注,视频服务器在网络视频监控系统中究竟处于什么样的地位?应用现状如何?未来又将向什么方向发展?,下面与读者共同探讨. 视频服务器的应用现状 从目前来看,由于网络化进程的加快,视频服务器已经明显地进入了差异化应用阶段,客户需求越来越个性化,因此视频服务器的种类也越来越多. 尤其是视频编码器,从图像质量上可分为

系统之锹sysdig:Linux服务器监控和排障利器

系统之锹sysdig:Linux服务器监控和排障利器 当你需要追踪某个进程产生和接收的系统调用时,首先浮现在你脑海中的是什么?你可能会想到strace,那么你是对的.你会使用什么样的命令行工具来监控原始网络通信呢?如果你想到了tcpdump,你又作出了一个极佳的选择.而如果你碰到必须追踪打开的文件(在Unix意义上:一切皆文件)的需求,可能你会使用lsof. strace.tcpdump以及lsof,确实是些伟大的工具,它们应该成为每个系统管理员工具集之中的一部分,而这也正是你为什么应该爱上sy

Monitorix :支持服务器和树莓派的轻量级系统监控系统

Monitorix :支持服务器和树莓派的轻量级系统监控系统 有时候,无论是普通用户还是系统管理员,都需要知道系统运行是否良好.与系统状态相关的许多问题,都可以通过检查运行的服务所生成的日志文件来获得答案.然而,即便对于干过几年的系统管理员而言,要检查日志文件的每个细节都不是件容易的事.这也是为什么他们依赖于监控软件的原因,监控软件能够从不同的源收集信息,并以易于理解的格式给出分析报告,如图表.可视化图像.统计数据等. 市面上流传着许多复杂的系统监控软件,诸如Cacti, Nagios, Zab

关于.NET/C#/WCF/WPF 打造IP网络智能视频监控系统的介绍_实用技巧

OptimalVision网络视频监控系统 OptimalVision(OV)网络视频监控系统(Video Surveillance System),是一套基于.NET.C#.WCF.WPF等技术构建的IP网络视频监控系统.设计与实现该系统的初衷是希望在家用电脑中部署该系统,连接本地或局域网设备,通过浏览器或手机客户端浏览宝宝实时视频,也就是俗称的"宝宝在线"或"家庭看护". 但由于业余时间总是有限,完成系统中的服务.配置.采集.传输和桌面GUI部分后,继续完成后续

集群监控系统Ganglia应用案例

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1330114 集群监控系统Ganglia应用案例 --我们把集群系统投入生产环境后,这时就需要一套可视化的工具来监视集群系统,这将有助于我们迅速地了解机群的整体配置情况,准确地把握机群各个监控节点的信息,全面地察看监控节点的性能指标,使机群系统具有较高的管理性.监视系统的主要目标是从各个监控节点采集监控信息,如CP

当我们谈论监控系统时,看看Twitter怎么做

"Twitter的监控团队为其内部工程团队提供了全栈的库和多个服务.而其监控技术也为网站发展提供了有力的支持.本文分享了Twitter监控技术在可视化.警告.分布式追踪系统.日志聚合/分析平台.利用率方面的概况,以及学习到的教训."   Twitter的监控工程团队为我们的内部工程团队提供了全栈的库和多个服务,来监控服务的健康状态.遇到问题发出警告.通过提供分布式系统的调用踪迹来支持肯本原因的调查以及通过创建了一个聚合应用/系统日志的可搜索索引支持诊断.监控工程团队的主要工作包含四个方