求推荐一款ubuntu服务器监控工具

求推荐一款ubuntu服务器监控工具,最好可以监控各种时间段内,比如年、月、日、时内的各种系统性能,比如CPU、内存、网络连接等,最好能有图标界面。

大概就是希望后台运行。然后绑定指定IP和端口,可以基于用户密码登录去查看后台数据面板。

喜欢这个问题 | 分享 | 新建回答

回答

清新baby

Nov 21, 2024
2 赞

试试Perl语言写的Monitorix吧,算一款比较轻量级的,据说是自由软件基金会发布的,不过这个基金会发布的是否具有安全保障,我不太清楚,可以用apt install来安装,基本满足你说的那些需求,应该还好吧。

下面简单介绍一下如何安装使用Monitorix,以ubuntu为例。顺便会说一下坑在哪里。

1、安装Monitorix

首先要添加EPEL到系统源列表(其实这一步,在目前的Ubuntu系统中,基本上不需要运行与添加,因为本身就有的,如果apt install monitorix失败,就运行下面这句吧)

sudo apt install epel-releasesh

上面大概率是多余的,直接apt install monitorix吧,如下:

sudo apt install monitorix

2、查看monitorix命令

安装好后,monitorix就在自己运行了,如果想查看monitorix当前运行状态,输入命令:

sudo service monitorix status

会看到类似如下输出,代表正在运行中:

● monitorix.service - Monitorix
     Loaded: loaded (/usr/lib/systemd/system/monitorix.service; enabled; preset>
     Active: active (running) since Thu 2024-11-21 15:28:22 CST; 6min ago
       Docs: man:monitorix(8)
    Process: 1053960 ExecStart=/usr/bin/monitorix -c /etc/monitorix/monitorix.c>
   Main PID: 1053961 (/usr/bin/monito)
      Tasks: 2 (limit: 4657)
     Memory: 27.2M (peak: 43.2M)
        CPU: 1.419s
     CGroup: /system.slice/monitorix.service
             ├─1053961 "/usr/bin/monitorix -c /etc/monitorix/monitorix.conf -p >
             └─1054025 "monitorix-httpd listening on 8080"we

为了查看monitorix更多命令,可以运行:

sudo service monitorix help

会输出如下:

Usage: /etc/init.d/monitorix {start|stop|restart|try-restart|force-reload|status}

可以看出,与一般的服务不一样的,monitorix的重新加载配置不是“reload”,而是“force-reload”,force这个前缀不可以省略。

3、Web端查看monitorix面板

默认http方式查看数据面板的端口是8080端口,所以要访问“http://localhost:8080/monitorix”,你也可以把你localhost换成服务器具体的外网IP地址或者对应该IP地址的域名。不过“/”路径是不显示的,一定要加上“/monitorix”路径,即“http://<服务器的IP>:8080/monitorix”。

8080端口是默认的,可以通过修改配置文件进行自定义。

4、monitorix的配置文件

monitorix的配置文件在如下路径:

/etc/monitorix/monitorix.conf

但是有个大坑的地方就是,大家会把monitorix所有的配置都以为全在monitorix.conf这个文件中,其实并不是这样的,还有其他影响因素,就是大家可能会忽略monitorix.conf旁边的conf.d文件夹下还有配置文件,conf.d的配置文件会进一步覆盖monitorix.conf,所以两个文件都要着手去修改。

建议修改几处:

① 运行者的“用户与用户组”的修改,建议贴近真实,不要使用nobody,使用你真实的用户和用户组,比如我的用户和用户组都是“ubuntu”,那么就去修改,修改monitorx.conf,如下:

<httpd_builtin>
        enabled = y
        host =
        port = 8080
        user = nobody
        group = nobody
        log_file = /var/log/monitorix-httpd
        hosts_deny =
        hosts_allow =
        autocheck_responsiveness = y
        <auth>
                enabled = n
                hosts_dey = all
                msg = Monitorix: Restricted access
                htpasswd = /var/lib/monitorix/htpasswd
        </auth>
</httpd_builtin>

本来上面的user和group都是nobody,可以考虑全改成你当前真实运行的用户名和用户组名,我的都是叫ubuntu,所以就改成ubuntu了。改完就是:

user = ubuntu
group = ubuntu

但是,你会发现改完后依然无法生效,因为光改这一处不够,conf.d文件夹下还有.conf文件,打开后也还有关于user和group的设置,你就把设置全改成你自己的即可。我当前系统的conf.d文件夹下的配置文件叫“00-debian.conf”,使用vim命令编辑:

sudo vim /etc/monitorix/conf.d/00-debian.conf 

其内容如下:

# This is the Debian/Ubuntu configuration file to be added in the directory
# /etc/monitorix/conf.d. It will override some default options without having
# to change any line of the main configuration file.
mail_log    = /var/log/mail.log
<httpd_builtin>
        user = ubuntu
        group = ubuntu
</httpd_builtin>

……

上面我把user和group改成自己的用户名和用户组名了,即ubuntu用户。这里的修改很容易忘记,会导致之后添加别的设置的时候,权限不够而无法读取,所以,一定要修改还用户名和用户组。

② 把端口改成自定义端口

在 /etc/monitorix/monitorix.conf 配置文件中,可以找到port进行修改;

默认是8080端口,比如你要改成8079端口,那就直接改。

记住,不管改什么,如果希望生效,一定要重新加载,即运行命令:

sudo service monitorix force-reload

5、monitorix的监控的web端添加用户名和密码

配置文件“/etc/monitorix/monitorix.conf”中的<auth>标签内,就是用来配置登录模块的。

首先做一些准备工作,安装一下htpasswd命令,来生成用户密码文件,这就要如下来安装工具包:

sudo apt-get install apache2-utils

轻松安装完毕,如果是centos等Linux,就“sudo yum install httpd-tools”即可。

使用 htpasswd 命令来创建 用户名和密码文件:

sudo htpasswd -c /var/lib/monitorix/htpasswd your_username

your_username换成你自定义的后台网页登录的用户名即可,在提示下,会输入想要设置的自定义密码;-c是新建的意思。

如果要修改该密码文件,就把-c去除,修改一下即可:

sudo htpasswd /var/lib/monitorix/htpasswd your_username

也可以先删除,再重建,删除是-d的意思,-c是新建的意思,组合起来,也可以重置密码。

sudo htpasswd -d -c /var/lib/monitorix/htpasswd your_username

但是,这里有一个大坑:那就是输出入的自定义密码不能太短,太短会有问题。尽量不小于8位字符的字符串!!!

如何把密码文件在配置中生效,打开/etc/monitorix/monitorix.conf进行编辑:

sudo vim /etc/monitorix/monitorix.conf

把<auth>标签内的enabled设置为“y”就可以了:

<httpd_builtin>
        enabled = y
        host =
        port = 8079
        user = ubuntu
        group = ubuntu
        log_file = /var/log/monitorix-httpd
        hosts_deny =
        hosts_allow =
        autocheck_responsiveness = y
        <auth>
                enabled = y
                msg = Monitorix: Restricted access
                htpasswd = /var/lib/monitorix/htpasswd
        </auth>
</httpd_builtin>

这样就代表开启验证了。

htpasswd = /var/lib/monitorix/htpasswd

代表读取“/var/lib/monitorix/htpasswd”这个密码文件,这个密码文件,就是htpasswd命令生成的。这个密码文件可以存不止一个用户名密码。



另外,为了进一步的安全,<auth>标签内还可以添加hosts_allowhosts_deny属性。

hosts_allow 就是允许谁不经过验证直接访问,hosts_deny就是禁止哪个地址来的访客进行访问。

以hosts_allow为例,

如果设置成:

<auth>
      enabled = y
      hosts_allow all
      msg = Monitorix: Restricted access
      htpasswd = /var/lib/monitorix/htpasswd
</auth>

那么所有的访客,就直接可以访问了。

属性值还可以是具体IP:

<auth>
      enabled = y
      hosts_allow 122.21.12.122
      msg = Monitorix: Restricted access
      htpasswd = /var/lib/monitorix/htpasswd
</auth>

hosts_allow 122.21.12.122 的意思就是122.21.12.122的访客直接不需要输入账户和密码,直接就能访问了,所以,通过hosts_allow或hosts_deny就能通过IP来控制访客,从而更加具有安全性。

最后就是别忘了,每次修改完之后,都要 强制重新加载配置数据,即“sudo service monitorix force-reload”命令。



jerkzhang

Nov 20, 2024
1 赞

你要的应该是“服务器监控面板”,有很多可选,但谁才是真正安全可靠的呢?不好说。毕竟等于彻底把后门给别人了。