什么是Monitorix?

Monitorix是一个免费的、开源的、轻量级的系统监控工具,可以监控尽可能多的服务和系统资源。它主要由两个程序组成:一个收集器,叫做monitorix,它是一个Perl守护进程,可以像其他系统服务一样自动启动;一个CGI脚本,叫做monitorix.cgi。Monitorix内置了自己的HTTP服务器(默认监听8080/TCP端口),所以你不需要安装第三方的web服务器来使用它。你只需要在浏览器中访问http://localhost:8080/monitorix就可以看到统计图。

Monitorix可以监控以下内容:

  • 系统负载、CPU使用率、进程、内存使用率、磁盘使用率、网络流量、网络服务、文件系统、温度传感器等
  • MySQL、PostgreSQL、MongoDB等数据库
  • Apache、Nginx、Lighttpd等web服务器
  • Squid、Haproxy等代理服务器
  • Dovecot、Postfix等邮件服务器
  • Bind9、PowerDNS等DNS服务器
  • FTP服务器
  • SSH服务器
  • Raspberry Pi
  • Docker容器
  • 等等

Monitorix支持多种Linux发行版,如RedHat/CentOS/Rocky/Fedora/Debian/Ubuntu/Arch Linux/Gentoo/openSUSE等,也支持其他UNIX系统,如FreeBSD/OpenBSD/NetBSD等。

如何安装Monitorix?

根据你使用的Linux发行版或UNIX系统,你可以选择不同的安装方法。这里以Debian为例,介绍如何用apt命令来安装Monitorix。

首先,你需要添加EPEL仓库到你的系统源列表中:

1
sudo apt install epel-release

然后,你就可以用apt命令来安装Monitorix:

1
sudo apt install monitorix

这个命令会自动安装Monitorix所需的依赖包,如Perl、RRDtool和其他Perl模块。

安装完成后,Monitorix会自动启动,并在后台运行。你可以用以下命令来检查Monitorix的状态:

1
sudo systemctl status monitorix

如果一切正常,你应该看到类似这样的输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
● monitorix.service - Monitorix
Loaded: loaded (/lib/systemd/system/monitorix.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-03-25 09:24:32 UTC; 4h 54min ago
Docs: man:monitorix(8)
Process: 82874 ExecStart=/usr/bin/monitorix -c /etc/monitorix/monitorix.conf -p /run/monitorix.pid $OPTIONS (co>
Main PID: 82875 (/usr/bin/monito)
Tasks: 2 (limit: 1074)
Memory: 59.4M
CPU: 40.230s
CGroup: /system.slice/monitorix.service
├─82875 "/usr/bin/monitorix -c /etc/monitorix/monitorix.conf -p /run/monitorix.pid"
└─82973 "monitorix-httpd listening on 8080"

Mar 25 09:24:31 ubuntu-22-04 systemd[1]: Starting Monitorix...
Mar 25 09:24:32 ubuntu-22-04 systemd[1]: Started Monitorix.

如何配置Monitorix?

Monitorix的配置文件位于/etc/monitorix/monitorix.conf,你可以用任何文本编辑器来修改它。配置文件的格式是INI风格的,有多个节(section),每个节有多个选项(option)。你可以根据你的需要来调整各种选项,比如监控的服务、图表的颜色、报警的阈值等。

配置文件中有一些重要的节,如:

global:这个节定义了一些全局的选项,如标题、语言、时区、日志文件、HTTP服务器等。
system:这个节定义了一些系统相关的选项,如主机名、IP地址、网卡、温度传感器等。
graphs:这个节定义了哪些图表要显示在web界面中,以及它们的顺序和分组。
:这些节定义了各种服务相关的选项,如数据库、web服务器、代理服务器等。每个服务都有自己的节,以及一些特定的选项。
例如,如果你想监控MySQL数据库,你需要在graphs节中启用mysql图表:
graphs.mysql = y
然后,在mysql节中设置MySQL服务器的地址、端口、用户名和密码:

1
2
3
4
mysql.<n>.host = localhost
mysql.<n>.port = 3306
mysql.<n>.user = monitorix
mysql.<n>.pass = secret

其中是一个数字,表示第几个MySQL服务器。你可以监控多个MySQL服务器,只要给它们分配不同的数字即可。

修改配置文件后,你需要重启Monitorix服务才能生效:

1
sudo systemctl restart monitorix

如何使用Monitorix?

使用Monitorix非常简单,你只需要在浏览器中访问http://localhost:8080/monitorix就可以看到web界面。web界面由多个标签页组成,每个标签页显示一组图表。你可以点击不同的标签页来切换不同的图表,也可以点击图表上方的按钮来切换不同的时间范围。

web界面的样式是由/etc/monitorix/themes/default.css文件定义的,你可以修改这个文件来改变web界面的外观。你也可以在global节中指定其他的主题文件:

global.theme = dark.css
Monitorix还提供了一个API接口,你可以用它来获取JSON格式的数据或SVG格式的图表。API接口的地址是http://localhost:8080/monitorix/api.cgi。你可以用以下参数来调用API接口:

  • action:指定要执行的动作,有两种可选值:data和graph。
  • module:指定要获取数据或图表的模块名,如system、mysql等。
  • graph:指定要获取数据或图表的图表名,如load、queries等。
  • when:指定要获取数据或图表的时间范围,有四种可选值:day、week、month和year。
  • color:指定要获取图表的颜色,有两种可选值:black和white。

例如,如果你想获取系统模块的负载图表的一天的数据,你可以用以下URL:

http://localhost:8080/monitorix/api.cgi?action=data&module=system&graph=load&when=day

如果你想获取MySQL模块的查询图表的一周的图表,你可以用以下URL:

http://localhost:8080/monitorix/api.cgi?action=graph&module=mysql&graph=queries&when=week&color=black

你可以用任何支持HTTP请求的工具或语言来调用API接口,比如curl、wget、Python、Perl等。

Monitorix的报警功能

Monitorix还有一个报警功能,可以在某些条件满足时发送邮件通知。你可以在/etc/monitorix/alerts.conf文件中定义报警规则。报警规则的格式是:

1
<service>.<graph>.<line> = <condition> <value> <email>

其中:

是服务名,如system、mysql等。
是图表名,如load、queries等。
是图表中的线条名,如avg1、select等。
是条件符号,有四种可选值:>、<、>=和<=。
是条件值,是一个数字。
是接收报警邮件的地址。
例如,如果你想在系统负载的一分钟平均值超过5时发送邮件给admin@example.com,你可以定义以下规则:

system.load.avg1 = > 5 admin@example.com
如果你想在MySQL查询数低于1000时发送邮件给dbadmin@example.com,你可以定义以下规则:

mysql.queries.select = < 1000 dbadmin@example.com
你可以定义多个报警规则,每个规则占一行。你也可以用#符号来注释掉不需要的规则。

为了让报警功能正常工作,你还需要在/etc/monitorix/monitorix.conf文件中配置邮件相关的选项,如:

1
2
3
4
5
6
global.mail_enabled = y
global.mail_from = monitorix@localhost
global.mail_smtpserver = localhost
global.mail_port = 25
global.mail_username =
global.mail_password =

这些选项分别表示:

是否启用邮件功能
发送邮件的地址
发送邮件的SMTP服务器
发送邮件的端口
发送邮件的用户名(如果需要认证)
发送邮件的密码(如果需要认证)
配置好这些选项后,你需要重启Monitorix服务才能生效:

sudo systemctl restart monitorix

Monitorix的优缺点

Monitorix是一个非常实用和方便的系统监控工具,它有以下优点:

免费、开源、轻量级
支持多种Linux发行版和UNIX系统
支持多种服务和系统资源的监控
内置HTTP服务器和web界面,无需额外安装
提供API接口和SVG图表,方便集成和定制
提供报警功能和邮件通知
Monitorix也有一些缺点,比如:

配置文件比较复杂,需要手动修改
图表样式比较简单,没有动画效果
报警功能比较基础,没有声音或短信通知
不支持分布式或集群监控

总之,Monitorix是一个适合中小型服务器或嵌入式设备的系统监控工具,它可以帮助你了解你的系统状态和性能,并及时发现和解决问题。如果你想要一个更强大和灵活的系统监控工具,你可以尝试其他的选择,比如Zabbix、Prometheus、Grafana等。

Monitorix的使用技巧

Monitorix虽然简单易用,但是也有一些使用技巧,可以让你更好地利用它的功能。这里列举一些常用的技巧,希望对你有用。

  • 你可以在web界面中点击图表的右上角的小图标,来放大或缩小图表,或者下载图表为PNG格式的图片。
  • 你可以在web界面中点击图表下方的数字,来切换不同的数据源。比如,在网络流量图表中,你可以点击1、2、3等数字,来切换不同的网卡。
  • 你可以在web界面中点击图表左下角的小图标,来查看图表的详细信息。比如,在系统负载图表中,你可以点击i图标,来查看系统负载的定义和计算方法。
  • 你可以在web界面中点击左上角的Monitorix图标,来返回主页。
  • 你可以在web界面中点击右上角的设置图标,来修改一些个性化的选项。比如,你可以修改语言、时区、日期格式、颜色等。
  • 你可以在web界面中点击右上角的帮助图标,来查看Monitorix的文档和联系方式。
  • 你可以在web界面中点击右上角的退出图标,来退出Monitorix。这样会清除你的浏览器缓存和cookie,并重置所有选项为默认值。
  • 你可以在/etc/monitorix/monitorix.conf文件中修改一些高级的选项。比如,你可以修改HTTP服务器的端口、日志级别、数据采集间隔等。
  • 你可以在/etc/monitorix/alerts.conf文件中定义一些自定义的报警规则。比如,你可以根据CPU温度、磁盘空间、网络延迟等条件来发送邮件通知。
  • 你可以用API接口来获取JSON格式的数据或SVG格式的图表。比如,你可以用curl或wget命令来获取数据或图表,并保存到本地文件或其他地方。