许多Linux管理员依赖一种集中式远程监控系统(比如Nagios或Cacti),检查网络基础设施的健康状况。虽然集中式监控系统为管理员在处理许多主机和设备时简化了工作,但专用的监控设备显然成了单一故障点;要是监控设备出现故障或者由于其他原因(比如硬件坏掉或网络停运)而联系不上,你就失去了可见性,无法了解整个基础设施的状况。

想为监控系统增添冗余机制,一个办法就是起码在网络上任何关键/核心服务器上安装独立的监控软件(作为一条退路)。那样万一集中式监控系统坏掉,你仍能够通过备用的监控工具,保持可见性,了解核心服务器的状况。

Monit简介

Monit是一种跨平台的开源工具,可用于监控Unix/Linux系统(比如Linux、BSD、OSX和Solaris)。Monit安装起来极其容易,也非常轻型(大小只有500KB),并不需要任何第三方程序、插件或代码库。不过,Monit有助于提供成熟的监控功能,具有进程状态监控、文件系统变化监控、电子邮件通知、针对核心服务的可定制操作等功能。Monit集安装简易、轻量级实现和功能强大等优点于一身,因而是一款再理想不过的备用监控工具。

好几年来我一直在多个主机上使用Monit,对它一贯以来的可靠表现非常满意。即使作为一款成熟的监控系统,Monit对任何Linux管理员来说也非常实用、非常强大。我在本教程中将演示如何在本地服务器上搭建Monit(作为备用监控工具),以监控常见服务。该系统搭建起来后,我将仅仅介绍Monit强大功能的皮毛。

将Monit安装到Linux上

大多数Linux发行版已经在其软件库中含有Monit。

在Debian、Ubuntu或Linux Mint上:

$ sudo aptitude install monit

在Fedora或CentOS/RHEL上:

在CentOS/RHEL上,你必须先启用EPEL或Repoforge软件库。

# yum install monit

Monit随带一个文档很齐全的配置文件,有许多示例。主配置文件位于Fedora/CentOS/RHEL中的/etc/monit.conf,或位于Debian/Ubuntu/Mint中的/etc/monit/monitrc。Monit配置有两个部分:“全局”部分和“服务”部分。

全局配置:Web状态页面

Monit可以使用几种邮件服务器用于通知,以及/或者HTTP/HTTPS状态页面。不妨从满足下列要求的Web状态页面入手。

•Monit侦听端口1966。

•对Web状态页面的访问用SSL加密。

•登录需要monituser/romania作为用户/密码。

•只允许从本地主机、myhost.mydomain.ro和内部局域网(192.168.0.0/16)进行登录。

•Monit以pem格式存储SSL证书。

至于随后的步骤,我将使用基于红帽的系统。类似步骤适用于基于Debian的系统上。

首先,生成一个自签名的证书(monit.pem),并存储在/var/cert中。

# mkdir /var/certs

# cd /etc/pki/tls/certs

# ./make-dummy-cert monit.pem

# cp monit.pem /var/certs

# chmod 0400 /var/certs/monit.pem

现在,将下列代码片段放入到Monit的主配置文件。你可以从空的配置文件入手,也可以拷贝一份原始文件。

set httpd port 1966 and

SSL ENABLE

PEMFILE /var/certs/monit.pem

allow monituser:romania

allow localhost

allow 192.168.0.0/16

allow myhost.mydomain.ro

全局配置:电子邮件通知

下一步,不妨在Monit中建立电子邮件通知机制。我们至少需要一台活动的SMTP服务器,它能够从Monit主机发送邮件。类似下列的信息就可以了(针对你的具体情况稍作调整):

•邮件服务器主机名:smtp.monit.ro

•Monit所使用的发送者电子邮件地址:monit@monit.ro

•谁将收到来自monit守护程序的邮件:guletz@monit.ro

•邮件服务器使用的SMTP端口:587(默认端口是25)

有了上述信息,电子邮件通知可以配置成这样:

set mailserver smtp.monit.ro port 587

set mail-format {

from: monit@monit.ro

subject: $SERVICE $EVENT at $DATE on $HOST

message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

Yours sincerely,

Monit

}

set alert guletz@monit.ro

正如你所见,Monit提供了几个内置变量($DATE、$EVENT和$HOST等),你可以定制电子邮件消息,以满足自己的需要。如果你想从Monit主机本身发送邮件,就需要一个已经安装的与sendmail兼容的程序(比如postfix或ssmtp)。

全局配置:Monit守护程序

下一个部分是设置monit守护程序。我们将按如下方式设置它。

•120秒过后执行首次检查。

•每隔3分钟检查一次服务。

•使用syslog用于记录日志。

放入下面这个代码片段,获得上述设置。

set daemon 120

with start delay 240

set logfile syslog facility log_daemon

我们还必须定义“idfile”和“eventqueue”,前者是monit守护程序使用的独特ID,后者是monit发送邮件的路径,但由于SMTP/网络错误而无法送达。证实路径(/var/monit)已经存在。下列配置就行。

set idfile /var/monit/id

set eventqueue

basedir /var/monit

测试全局配置

现在,“全局”部分已完成。Monit配置文件看起来就像这样:

# 全局部分

# status webpage and acl's

set httpd port 1966 and

SSL ENABLE

PEMFILE /var/certs/monit.pem

allow monituser:romania

allow localhost

allow 192.168.0.0/16

allow myhost.mydomain.ro

# mail-server

set mailserver smtp.monit.ro port 587

# email-format

set mail-format {

from: monit@monit.ro

subject: $SERVICE $EVENT at $DATE on $HOST

message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

Yours sincerely,

Monit

}

set alert guletz@monit.ro# 延迟检查

set daemon 120

with start delay 240

set logfile syslog facility log_daemon

# idfile和邮件队列路径

set idfile /var/monit/id

set eventqueue

basedir /var/monit

现在是时候检查我们完成的步骤了。你可以测试现有的配置文件(/etc/monit.conf),只要运行:

# monit -t

Control file syntax OK

如果Monit报告任何错误,请再次阅读配置文件。幸好,错误/警告信息量很丰富。比如说:

monit: Cannot stat the SSL server PEM file '/var/certs/monit.pem' -- No such file or directory

/etc/monit/monitrc:10: Warning: hostname did not resolve 'smtp.monit.ro'

一旦你验证了配置语法,就启动monit守护程序,等两三分钟:

# service monit start

如果你使用systemd,运行:

# systemctl start monit

现在打开浏览器窗口,进入到https://:1966。把换成你的Monit主机名或IP地址。

请注意:如果你有一个自签名的SSL证书,会在浏览器中看到警告信息。

你完成登录后,肯定会看到下面这一页。

在教程的其余部分,我将介绍如何监控本地服务器和常见服务。你会在官方维基页面上看到许多有用的示例(http://mmonit.com/wiki/Monit/ConfigurationExamples)。大多数示例可以拷贝粘贴!

服务配置:处理器/内存监控

不妨先监控本地服务器的处理器/内存使用情况。将下列代码片段拷贝到配置文件。

check system localhost

if loadavg (1min) > 10 then alert

if loadavg (5min) > 6 then alert

if memory usage > 75% then alert

if cpu usage (user) > 70% then alert

if cpu usage (system) > 60% then alert

if cpu usage (wait) > 75% then alert

很容易解读上述配置。每个监控周期(在全局部分中被设为120秒),针对本地主机执行上述检查。要是符合条件,monit守护程序就会通过电子邮件发送提醒。

如果某些属性不需要每个周期都加以监控,你可以使用下列格式。比如说,这将每隔一个周期(也就是每隔240秒)监控平均负载。

if loadavg (1min) > 10 for 2 cycles then alert

服务配置:SSH服务监控

不妨检查我们是否将sshd二进制文件安装在/usr/sbin/sshd中:

check file sshd_bin with path /usr/sbin/sshd

我们还想检查sshd的init脚本是否存在:

check file sshd_init with path /etc/init.d/sshd

最后,我们想检查sshd守护程序是否安装并运行起来,是否侦听端口22:

check process sshd with pidfile /var/run/sshd.pid

start program "/etc/init.d/sshd start"

stop program "/etc/init.d/sshd stop"

if failed port 22 protocol ssh then restart

if 5 restarts within 5 cycles then timeout

更具体地说,我们可以解读上述配置,如下所示。我们检查一个名为sshd的进程和pidfile(/var/run/sshd.pid)是否存在。要是这其中一个都不存在,我们就使用init脚本重启sshd守护程序。我们检查侦听端口22的进程是否支持SSH协议。要是不支持,我们就重启sshd守护程序。要是在最近5个监控周期(即5 x 120秒)里面至少有5次重启,sshd守护程序就宣布失效,我们并不试图再次检查。

服务配置:SMTP服务监控

现在检查远程SMTP邮件服务器(比如192.168.111.102)。假设SMTP服务器通过其局域网接口,运行SMTP、IMAP和SSH。

check host MAIL with address 192.168.111.102

if failed icmp type echo within 10 cycles then alert

if failed port 25 protocol smtp then alert

else if recovered then exec "/scripts/mail-script"

if failed port 22 protocol ssh then alert

if failed port 143 protocol imap then alert

我们检查远程主机是否响应ICMP。要是我们没有在10个周期内收到ICMP响应,就发送提醒。要是SMTP协议测试在端口25上失败,我们就发送提醒。要是测试失败后测试又成功了,我们就运行脚本(/scripts/mail-script)。要是SSH和IMAP协议测试分别在端口22和端口143上失败,我们就发送提醒。

结束语

我在本教程中演示了如何在本地服务器上搭建Monit。就Monit的功能而言,我在这里介绍的仅仅是冰山一角。不妨花点时间阅读关于Monit的参考手册页。Monit的语法非常通俗易懂,为任何Linux管理员提供了许多功能。如果你结合集中式远程监控工具和Monit为己所用,就会拥有一个更可靠的监控系统。你觉得Monit怎么样?

英文:How to set up server monitoring system with Monit

http://netsecurity.51cto.com/art/201504/471116_7.htm

monit 内存 监控_如何借助Monit搭建服务器监控系统?(1)相关推荐

  1. Telegraf+InfluxDB+Grafana搭建服务器监控平台

    Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...

  2. 搭建服务器处理系统(基于netty)

    搭建服务器处理系统(基于netty)-我们到底能走多远系列(25) 推荐: google rest 一个不错的http测试应用,google浏览器可以使用.做接口什么的,很有帮助.亲,还不快了解一下. ...

  3. monit 内存 监控_如何使用Monit部署服务器监控系统

    很多Linux系统管理员依赖一个集中式的远程监控系统(比如Nagios或者Cacti)来检查他们网络基础设备的健康状况.虽然集中式监控让管理员的生活更简单了,然而处理很多机器和服务时,专用的监控中心显 ...

  4. 技术分享 | 使用 Zabbix + Grafana 搭建服务器监控系统

    搭建 Linux 服务器监控的目的是防止以下现象:自己有一台阿里云服务器内存是 2g 的 , 多开一些软件就会把内存和 CPU 使用率弄的很高,最终导致服务器卡死. 所以基于这个痛点,想知道当前的 C ...

  5. mysql 可视化监控_基于Prometheus构建MySQL可视化监控平台

    对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发.相信很多同行都应该已经开始玩起来了.我这边的选型是prometheus + granafa的实现 ...

  6. 个人搭建云手机系统_信通中心搭建云办公系统助力疫情防控

    针对疫情防控期间办公需求实际,2月1日,中国石油西南油气田公司信通中心快速搭建云办公系统,全力保障公司生产经营工作有序开展. 建立云视频办公系统,组织技术队伍在公司机关安装视频会议终端设备,并逐步覆盖 ...

  7. 计算机网络域搭建,计算机网络课程设计_组建局域网及搭建服务器(26页)-原创力文档...

    河南理工大学 计算机科学与技术学院 课程设计报告 20 11 - 20 12 学年第 2 学期 课程名称 计算机网络 设计题目 组建局域网及搭建服务器 学生姓名 学 号 专业班级 指导教师 2012 ...

  8. diy 多路监控_如何通过此DIY设置监控空气质量

    diy 多路监控 借助Raspberry Pi,低成本气体传感器和遥控开关,您可以控制房屋的空气质量. (With a Raspberry Pi, low-cost gas sensors, and ...

  9. Grafana + prometheus在Centos搭建服务器监控系统(一)---安装、配置

    一.Grafana介绍 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知.它主要有以下六大特点: 展示方式:快速灵活的客户端图表,面板插件有 ...

最新文章

  1. 拜托,面试别再问我JVM了!!!
  2. 常用系统分析监控工具
  3. 2021年有不加班的选择吗?哪些城市加班最严重?
  4. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2
  5. HeartBeat 集群组件概述
  6. python数据科学-单变量数据分析
  7. C语言写文件到txt里有屯字,C语言10 文件.ppt
  8. android 弹窗有边框_Android 多种简单的弹出框样式设置代码
  9. 06512oracle数据库,ORA-06512 – 专业Oracle数据库恢复,或许是您恢复数据的最后机会@phone:13429648788 - 专业Oracle数据库恢复技术支持...
  10. WinForm和WPF使用log4net
  11. 设计模式学习笔记——外观(Facade)模式
  12. 博通2021财年第三季度营收67.8亿美元,半导体业务营收50亿美元
  13. 【图像去噪】基于matlab小波变换图像去噪(MSE和SNR)【含Matlab源码 2192期】
  14. @Adaptive注解
  15. 百度搜索引擎结果网址参数 搜索框提示词搜索方式(rsv_sug2)
  16. lua -- class
  17. 张小龙:做 PC 版微信是一种破坏
  18. 软件开发过程与项目管理(14.项目核心计划执行控制)
  19. 15款js编辑器大全 收藏
  20. Ubuntu 蓝屏拯救

热门文章

  1. luogu_1002 过河卒
  2. 4.SELECT DISTINCT 语句
  3. 干货!几招教你降低论文重复率!!
  4. shell脚本的两种执行方式区别举例
  5. MPI学习存在的一些问题
  6. Python Tutorial(六):模块
  7. 基于小波变换的图像边缘检测(matlab祖传代码注释)
  8. Caffe学习笔记2
  9. [C++调试笔记]求电势posi.cpp
  10. Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络