服务器监控软件综述:选择最适合你业务的工具

miloyang
0 评论
/ /
776 阅读
/
7527 字
24 2024-03

背景

随着业务规模的扩大和技术的不断迭代,服务器承载的压力逐渐增大。为了确保业务的稳定运行,监控服务器的性能和可靠性变得至关重要。而随着技术的发展,市面上涌现出了各种各样的服务器监控软件,为管理员提供了更多的选择。本文将介绍几种主流的服务器监控软件,以及它们的特点、操作方法、优缺点等,帮助管理员选择最适合自己业务的工具。

Prometheus

Prometheus 是一款开源的监控和警报工具,由 SoundCloud 开发并于 2012 年开源。它旨在解决现代分布式系统监控领域的挑战,如动态服务发现、高度可扩展性、多维数据模型等。专注于监控云原生环境,具有高度的可扩展性和灵活的查询语言,也就是更多的是监控云服务器,比如docker、k8s部署的服务,当然传统的服务器也是可以监控的。

优缺点:

优点

  • 高度可扩展,适用于大规模环境和云原生架构。
  • 提供了强大的查询语言和灵活的数据模型。
  • 与 Kubernetes 等云原生技术集成良好。

缺点

  • 对于传统架构的监控支持相对较弱。
  • 配置和部署相对复杂,需要一定的技术背景。
  • 对于初学者来说学习曲线较陡峭。

搭建

搭建Prometheus

1:Prometheus 提供了官方的 Docker 镜像,你可以在 Docker Hub 上找到。运行docker pull prom/prometheus 命令下载 Prometheus 镜像。

2:创建配置文件

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']  # 监控 Prometheus 本身
  - job_name: 'your_app'
    static_configs:
      - targets: ['124.223.47.250:80']   # 监控你的应用程序,比如为当前博客地址

3:启动 Prometheus 容器,运行docker run -d --name prometheus -p 9090:9090 -v /usr/monitor/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml prom/prometheus

4: 访问 如果是云服务器,需要配置白名单端口。124.223.47.250:9090 prometheus_test_view

搭建Grafana

一般来说,我们都是通过与 Grafana 等可视化工具结合使用,用于创建仪表盘和图表展示监控数据。同时,Prometheus 内置了警报管理器,可以根据用户定义的警报规则发送警报通知。 1:使用docker安装grafana docker run -d --name=grafana -p 3000:3000 grafana/grafana 2:添加 Prometheus 数据源:

  • 打开浏览器,访问 http://localhost:3000 进入 Grafana 界面,默认登录账号为 admin/admin。 prometheus_grafana_view
  • 在左侧菜单中选择「Configuration」-> 「Data Sources」。
  • 点击「Add data source」按钮,选择 Prometheus 数据源。
  • 在数据源配置页面中,设置以下信息:
    Name: Prometheus(或者你想要的任意名称)
    HTTP URL: http://localhost:9090 (默认 Prometheus 的地址和端口)
    Access: 直接选择 "Direct"。
    点击 "Save & Test" 保存并测试数据源是否正常连接。

设置警报通知

  • 配置 Prometheus 的警报管理器 Alertmanager,以便在触发警报时发送通知。
  • 编辑 Alertmanager 的配置文件,设置警报通知的接收者(如电子邮件、Slack、PagerDuty 等)和通知方式。
  • 当服务宕机时触发警报时,Alertmanager 将会发送通知给指定的接收者,告知服务宕机的情况。

通过以上步骤,你的服务宕机了,可以使用 Prometheus 的警报功能来监控服务的健康状态,并及时发现和处理服务宕机的问题。这种方式可以帮助你确保服务的可用性,并减少因服务宕机而导致的影响。

Zabbix

Zabbix 是流行的开源监控软件,具有强大的功能和灵活的架构。它支持监控多种设备和服务,包括服务器、网络设备、数据库等,提供了丰富的图形化展示和报警功能。它比较适应于传统服务器的部署,比如主从、master节点等等。

优缺点

优点

  • 功能丰富,支持多种监控方式和图形展示。
  • 配置相对简单,易于上手和部署。
  • 提供了强大的报警功能,可以根据不同情况设置不同的触发条件和动作。

缺点

  • 对于大规模环境的监控,性能可能存在一定的瓶颈。
  • 配置过程中需要注意一些细节,可能需要一定的学习成本。
  • 社区相对于其他软件略显小众,插件和支持资源相对较少。

搭建

正常情况下,我们都通过docker部署

docker pull zabbix/zabbix-server-mysql
docker pull zabbix/zabbix-web-nginx-mysql

运行以下命令启动 Zabbix 服务容器:

docker run --name zabbix-server-mysql -e MYSQL_USER=zabbix -e MYSQL_PASSWORD=zabbix -e MYSQL_DATABASE=zabbix -e MYSQL_ROOT_PASSWORD=zabbix -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -e DB_SERVER_HOST=<Zabbix_DB_Server_IP> -e MYSQL_USER=zabbix -e MYSQL_PASSWORD=zabbix -e MYSQL_DATABASE=zabbix -p 8080:80 -d zabbix/zabbix-web-nginx-mysql:latest

添加监控主机:

  • 登录 Zabbix 前端界面,使用默认账号 Admin / zabbix 登录。
  • 在左侧导航栏中选择「Configuration」-> 「Hosts」,点击「Create host」按钮。
  • 输入要监控的主机信息,如主机名、IP 地址等,并设置相关的监控项和触发器。
  • 在「Templates」选项卡中,关联适用的监控模板,以便监控相应的服务和应用程序。

监控和报警

在 Zabbix 中,你可以设置各种监控项和触发器,以监控服务器的 CPU 使用率、内存使用情况、磁盘空间等。
你还可以设置警报规则,当某个监控项的值超过阈值时触发警报通知,以便管理员及时处理问题。
通过以上步骤,你可以完成 Zabbix 的部署和基本配置,开始监控你的服务器和网络设备。随着你对 Zabbix 的熟悉程度增加,你还可以进一步配置和优化监控系统,以满足不同场景下的监控需求。

Nagios

Nagios 是一款开源的服务器监控软件,广泛应用于各类企业和组织中。它可以监控服务器的各种指标,包括 CPU 使用率、内存占用、磁盘空间、网络流量等。Nagios 通过配置插件来实现不同类型的监控,具有高度的可定制性。

优缺点

优点

  • 开源免费,社区活跃,有大量的插件可供选择。
  • 高度可定制,可以根据需要灵活配置监控项。
  • 支持多种通知方式,包括邮件、短信、手机 App 等。

缺点

  • 配置相对复杂,需要一定的技术水平。
  • Web 界面相对简陋,用户体验略显欠缺。
  • 对于大规模环境的监控,需要额外的扩展和优化

安装

docker pull jasonrivers/nagios:latest

docker run --name nagios -p 8080:80 -d jasonrivers/nagios:latest

在浏览器中访问 http://localhost:8080,你将看到 Nagios Web 界面的登录页面。
默认情况下,Nagios Web 界面的登录凭证如下:

用户名:nagiosadmin
密码:nagios

nagiosservser_test

设置预警

可以针对业务服务器和某个具体的业务接口进行监控。

  • 登录 Nagios Web 界面:

    在浏览器中访问 Nagios 的 Web 界面,通常是 http://your_nagios_server_ip/nagios,输入管理员用户名和密码进行登录。

  • 导航到配置界面:

    在 Nagios Web 界面的左侧菜单中,选择 "Configure" 菜单,然后选择 "Core Config Manager"。

  • 添加主机:

    在 "Core Config Manager" 页面中,选择 "Hosts" 标签页,然后点击 "Add Host" 按钮。在弹出的对话框中填写主机的信息,包括主机名、别名、地址等,并保存配置。

  • 添加服务:

    在 "Core Config Manager" 页面中,选择 "Services" 标签页,然后点击 "Add Service" 按钮。在弹出的对话框中选择要监控的主机,填写服务的描述、命令等信息,并保存配置。

  • 编辑命令:

    在 "Core Config Manager" 页面中,选择 "Commands" 标签页,然后点击 "Add Command" 按钮。在弹出的对话框中填写命令的名称、命令行等信息,并保存配置。

  • 应用配置:

    完成配置后,在 "Core Config Manager" 页面中点击 "Apply Configuration" 按钮,将配置应用到 Nagios 中。

通过以上步骤,你可以通过 Nagios 的 Web 界面方便地配置监控项,而不需要直接编辑配置文件。这种方式更加直观和友好,适用于不熟悉 Nagios 配置文件格式的用户。同时,通过 Web 界面配置还能够及时反馈错误信息,帮助你更快地发现和解决配置问题。

总结

我们基于Prometheus、Zabbix 和 Nagios 的比较分析,从使用场景、业务服务、数据手机、可靠性、周边生态等维度来查看。

特点 prometheus zabbix nagios
使用场景 适用于云原生环境和动态扩展的应用场景 适用于传统的基础设施监控场景 适用于实时监控和警报通知场景
适用服务 适用于各种规模的业务服务,特别适用于大规模的微服务架构和分布式系统 适用于中小型企业和传统的 IT 环境,也可以应用于较大规模的业务服务 适用于中小型企业和传统的 IT 环境,也可以应用于较大规模的业务服务
数据收集 使用拉模型收集指标数据,并使用本地时间序列数据库存储数据,具有高效的数据查询和存储功能 支持多种数据采集方法,包括 agent、SNMP、JMX 等,数据存储在中央数据库中,可以配置历史数据的存储周期 采用被动监控方式收集数据,不提供内置的数据存储功能,通常需要结合其他工具进行数据存储和分析
可靠性 具有高可用性和水平扩展性,支持分布式部署和自动发现功能 具有较高的可靠性和稳定性,但在大规模监控和高并发场景下可能需要额外的配置和优化 具有一定的可靠性和稳定性,但在大规模监控和复杂环境下可能性能受限,需要更多的手动管理和维护
周边生态 拥有活跃的开发社区和丰富的生态系统,提供了许多第三方插件和集成工具 拥有庞大的用户社区和丰富的插件生态系统,提供了丰富的监控和管理功能 作为监控领域的传统工具,拥有广泛的用户群和丰富的文档资源,但相对于 Prometheus 和 Zabbix 来说,生态系统相对较小
人未眠
工作数十年
脚步未曾歇,学习未曾停
乍回首
路程虽丰富,知识未记录
   借此博客,与之共进步