背景
随着业务规模的扩大和技术的不断迭代,服务器承载的压力逐渐增大。为了确保业务的稳定运行,监控服务器的性能和可靠性变得至关重要。而随着技术的发展,市面上涌现出了各种各样的服务器监控软件,为管理员提供了更多的选择。本文将介绍几种主流的服务器监控软件,以及它们的特点、操作方法、优缺点等,帮助管理员选择最适合自己业务的工具。
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
搭建Grafana
一般来说,我们都是通过与 Grafana 等可视化工具结合使用,用于创建仪表盘和图表展示监控数据。同时,Prometheus 内置了警报管理器,可以根据用户定义的警报规则发送警报通知。
1:使用docker安装grafana docker run -d --name=grafana -p 3000:3000 grafana/grafana
2:添加 Prometheus 数据源:
- 打开浏览器,访问 http://localhost:3000 进入 Grafana 界面,默认登录账号为 admin/admin。
- 在左侧菜单中选择「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
设置预警
可以针对业务服务器和某个具体的业务接口进行监控。
登录 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 来说,生态系统相对较小 |