Prometheus、Node Exporter 和 Grafana 是常见的用于监控和可视化系统性能的工具,它们在许多现代运维和监控环境中被广泛使用。下面我会简单介绍一下它们各自的功能和作用:
1. Prometheus
- 概述:Prometheus 是一个开源的监控和警报系统,主要用于收集和存储时间序列数据。它具有强大的查询语言(PromQL),可以从不同的数据源获取指标数据,并对数据进行分析和处理。
- 功能:
- 数据采集:通过定期抓取 HTTP 接口来收集目标系统的指标数据(通常是以 JSON 或者类似格式的文本数据)。
- 时间序列存储:Prometheus 存储的数据是时间序列数据,它通过标签(labels)来标识不同的维度,使得对同一指标的不同维度进行查询变得更加高效。
- 警报功能:Prometheus 可以根据用户定义的规则触发警报,当指标数据达到指定的阈值时,会通过邮件、Slack 或其他通知系统发送警报。
- 常见用途:主要用于监控服务、应用程序、数据库、硬件设备等的性能,支持横向扩展。
2. Node Exporter
- 概述:Node Exporter 是 Prometheus 的一个导出器(exporter),用于收集 Linux/Unix 系统的硬件和操作系统层面的指标数据,并将这些数据暴露出来,供 Prometheus 抓取。
- 功能:
- 硬件指标:它能采集到系统的 CPU 使用率、内存使用情况、磁盘 I/O、网络流量等。
- 操作系统指标:Node Exporter 可以提供操作系统相关的指标,例如操作系统负载、系统启动时间、磁盘空间、文件系统的使用情况等。
- 资源消耗:它帮助 Prometheus 监控主机资源的使用情况,从而分析系统瓶颈或性能问题。
- 工作原理:Node Exporter 运行在目标服务器上,通过一个 HTTP 服务暴露采集到的指标数据,Prometheus 定期抓取这些数据进行存储和分析。
3. Grafana
-
概述:Grafana 是一个开源的可视化和分析平台,主要用于与时间序列数据库(如 Prometheus)配合使用,将收集到的数据以图表、仪表板等形式进行展示。
-
功能:
- 数据可视化:Grafana 提供了多种类型的图表,支持用户创建多种形式的仪表板,例如线图、柱状图、饼图等,帮助用户更直观地理解数据。
- 实时监控:Grafana 可以实时地从 Prometheus 获取最新的指标数据,并动态展示在仪表板上,适合用于监控应用和基础设施的健康状态。
- 警报与通知:Grafana 也有警报功能,用户可以设置阈值,当数据超过预设的范围时,Grafana 会通过邮件、Slack 等通知用户。
- 数据源支持:除了 Prometheus,Grafana 还支持其他多种数据源,例如 Elasticsearch、InfluxDB、MySQL 等,提供了灵活的数据集成能力。
-
常见用途:Grafana 主要用于数据展示和监控面板,它可以将 Prometheus 等监控工具收集到的指标数据展示给用户,使得运维人员可以快速地了解系统状态。
总结:
- Prometheus:主要用于数据的采集、存储和查询。
- Node Exporter:是 Prometheus 的一个组件,用于采集 Linux/Unix 系统的硬件和操作系统级别的指标。
- Grafana:用来可视化展示 Prometheus 等数据源提供的指标数据,帮助用户更好地理解监控数据。
它们通常是一起使用的,Prometheus 收集数据,Node Exporter 提供主机级指标,Grafana 则帮助展示和分析这些数据。
Prometheus、Node Exporter 和 Grafana 版本兼容性表
Prometheus 版本 | Node Exporter 版本 | Grafana 版本 | 备注 |
---|---|---|---|
3.x | 2.x、3.x | 9.x、10.x | 推荐使用最新版本的 Prometheus 和 Node Exporter,Grafana 9.x 和 10.x 也能良好支持,兼容性最好 |
2.30.x - 2.33.x | 2.x | 8.x、9.x | 兼容性很好,建议使用更新版本的 Grafana 和 Node Exporter |
2.25.x - 2.29.x | 1.x、2.x | 7.x、8.x | 仍然支持大多数功能,但某些新特性在较老版本中可能不可用 |
2.20.x - 2.24.x | 1.x | 6.x、7.x | 对一些新功能支持较弱,更新为最新版本可以获得更多功能 |
2.x 以下 | 0.18.x 或更早版本 | 5.x 或更低版本 | 使用旧版本时,可能会遇到兼容性问题,建议升级到较新版本 |
开始部署搭建:
步骤1: 安装Prometheus
下载官网:下载 |普罗 米修斯
#切换到opt目录
cd /opt
#安装Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v3.2.0/prometheus-3.2.0.linux-amd64.tar.gz
#解压安装包
tar -xvzf prometheus-3.2.0.linux-amd64.tar.gz
#重命名为prometheus
mv prometheus-3.2.0.linux-amd64 prometheus
#切换cd prometheus目录
cd prometheus
#在这个目录下,你会看到 prometheus 可执行文件。你可以使用以下命令来启动 Prometheus
./prometheus --config.file=prometheus.yml
#默认情况下,Prometheus 会启动并监听在 http://localhost:9090,你可以在浏览器中访问它。
#防火墙设置:如果你的服务器启用了防火墙,确保打开 9090 端口。
sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --reload
#加入systemd 管理
sudo vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
#重新加载 systemd 并启用服务
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
#运维故障补充:
#日志和调试:你可以使用以下命令查看 Prometheus 服务的日志来诊断问题
sudo journalctl -u prometheus -f
#查看 /opt/prometheus/data目录中的文件是否被其他进程占用
lsof +D /opt/prometheus/data
#修改访问端口 ./prometheus --config.file=prometheus.yml --web.listen-address=:9100 &
#命令后面加参数 把9100换成你先设置的端口 --web.listen-address=:9100 &
#查看版本命令
/opt/prometheus/prometheus --version
或者
#临时
export PATH=$PATH:/opt/prometheus
prometheus --version
#永久
#打开文件
vim ~/.bashrc
#在文件里面添加以下内容
export PATH=$PATH:/opt/prometheus
#运行以下命令让配置立即生效
source ~/.bashrc
步骤2:下载node_exporter
#切换到/opt目录
cd /opt
#安装node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.0/node_exporter-1.9.0.linux-amd64.tar.gz
#解压安装包
tar -xvzf node_exporter-1.9.0.linux-amd64.tar.gz
#重命名为node_exporter
mv node_exporter-1.9.0.linux-amd64 node_exporter
#切换到node_exporter目录里面
cd node_exporter
#启动服务验证
./node_exporter
#默认情况下,node_exporter 会启动并监听在 http://localhost:9100,你可以在浏览器中访问它。
#防火墙设置:如果你的服务器启用了防火墙,确保打开 9100 端口。
sudo firewall-cmd --add-port=9100/tcp --permanent
sudo firewall-cmd --reload
#加入systemd 管理
sudo vim /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
User=root
Group=root
ExecStart=/opt/node_exporter/node_exporter
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
#重新加载 systemd 并启用服务
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
#查看版本
./node_exporter --version
或者
#临时
export PATH=$PATH:/opt/node_exporter
node_exporter --version
#永久
#打开文件
vim ~/.bashrc
#在文件里面添加以下内容
export PATH=$PATH:/opt/node_exporter
#运行以下命令让配置立即生效
source ~/.bashrc
把node_exporter 添加到 prometheus 监控文件里面。
#编辑prometheus.yml文件
vim /opt/prometheus/prometheus.yml
#删除不必要的注释
#复制
y4j
#粘贴
p
#以下内容
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
#把名称改为node_exporter 把端口改为9100
打开prometheus web 界面点击状态 查看目标运行状态 可以看到 监控的目标 prometheus 和 node_exporter。
步骤3:下载Grafana
#下载命令Grafana
sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.4.16-1.x86_64.rpm
#查看版本
grafana-server -v
#启动 Grafana 服务
sudo systemctl start grafana-server
#设置启用开机自启动:
sudo systemctl enable grafana-server
#查看状态
sudo systemctl status grafana-server
#访问 Grafana Web UI
#默认情况下,Grafana 会监听在 http://localhost:3000 上。您可以在浏览器中访问该地址,使用默认的用户名和密码进行登录:
#用户名:admin
#密码:admin(首次登录时会提示您更改密码)
#登录后,您就可以开始配置仪表板和数据源了。
#防火墙配置
#从外部访问 Grafana,需要允许通过端口 3000:
sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload
输入默认用户:admin 默认密码 :admin 然后点击登录 设置新密码。
设置新密码 点击提交,就可以看到Grafana web界面了。
安装prometheus插件。
添加prometheus 链接。
保存并测试。
点击仪表盘 新增功能 导入模板
点击蓝色超链接 选择模板。
选择一个想要的模板,复制模板id
粘贴模板ID 然后点击load。
选择prometheus源 然后导入。
可视化平台部署完成 !