什么是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 | ● monitorix.service - Monitorix |
如何配置Monitorix?
Monitorix的配置文件位于/etc/monitorix/monitorix.conf
,你可以用任何文本编辑器来修改它。配置文件的格式是INI风格的,有多个节(section),每个节有多个选项(option)。你可以根据你的需要来调整各种选项,比如监控的服务、图表的颜色、报警的阈值等。
配置文件中有一些重要的节,如:
global:这个节定义了一些全局的选项,如标题、语言、时区、日志文件、HTTP服务器等。
system:这个节定义了一些系统相关的选项,如主机名、IP地址、网卡、温度传感器等。
graphs:这个节定义了哪些图表要显示在web界面中,以及它们的顺序和分组。
例如,如果你想监控MySQL数据库,你需要在graphs节中启用mysql图表:graphs.mysql = y
然后,在mysql节中设置MySQL服务器的地址、端口、用户名和密码:
1 | mysql.<n>.host = localhost |
其中
修改配置文件后,你需要重启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> |
其中:
例如,如果你想在系统负载的一分钟平均值超过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 | global.mail_enabled = y |
这些选项分别表示:
是否启用邮件功能
发送邮件的地址
发送邮件的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命令来获取数据或图表,并保存到本地文件或其他地方。