当前位置: 首页 > news >正文

Ubuntu 系统安装 Prometheus+Grafana(附shell脚本一键部署↓)

Prometheus与Grafana的组合是云原生环境下高效监控与可视化的黄金搭档,二者通过技术互补形成完整的监控解决方案,适用于容器化应用、微服务架构及传统IT环境的性能管理。

Prometheus:云原生监控的核心引擎

  1. 技术定位与优势
    Prometheus是由SoundCloud开发、后纳入CNCF的开源监控系统,采用Pull模式主动拉取指标数据,支持多维数据模型(时间序列由指标名和键值对标签构成)。其核心优势包括:
    1. 高效存储:单机每秒可采集千万级指标,320万时间序列存储60天仅需228GB磁盘。
    2. 灵活查询:PromQL查询语言支持复杂数学运算,适合动态服务架构的监控需求。
    3. 服务发现:原生支持Kubernetes、DNS、Consul等动态目标发现,适配容器化环境。
    4. 自治架构:单节点独立运行,不依赖分布式存储,故障时仍可提供基础监控能力。
  2. 典型应用场景
    • Kubernetes集群监控:通过Node Exporter采集节点资源(CPU、内存、磁盘),Kube-State-Metrics监控Pod/Deployment状态,cAdvisor跟踪容器资源使用。
    • 微服务性能分析:结合Blackbox Exporter监控服务存活性,通过自定义指标分析接口响应时间、错误率。
    • 日志与事件关联:与Loki集成实现日志与指标的交叉分析,加速故障定位。

Grafana:数据可视化的终极利器

  1. 技术定位与优势
    Grafana是基于Go的开源可视化平台,支持多数据源(Prometheus、InfluxDB、MySQL等),提供动态仪表盘、告警规则配置及插件扩展能力。其核心价值包括:
    • 直观展示:折线图、热力图、仪表盘等20+种图表类型,支持时间范围对比、数据下钻。
    • 告警管理:通过Alerting模块定义阈值规则,支持Email、Slack、Webhook等多渠道通知。
    • 混合数据源:单图聚合不同数据源指标(如Prometheus指标+MySQL业务数据)。
    • 模板变量:动态生成仪表盘(如按服务名筛选Pod指标),提升复用性。
  2. 典型应用场景
    • 实时监控大屏:构建IT运维驾驶舱,集中展示核心业务指标(如订单量、交易成功率)。
    • 告警中心:集成Alertmanager实现告警收敛、分组,减少噪音干扰。
    • 自定义报表:通过SQL或PromQL生成日报/周报,支持PDF导出与分享。

Prometheus + Grafana:1+1>2的监控实践

  1. 技术协同原理
    Prometheus负责数据采集与存储,Grafana通过API拉取指标并可视化,二者通过以下机制深度集成:
    • 数据源配置:在Grafana中添加Prometheus数据源,指定URL(如http://prometheus-server:9090)。
    • 仪表盘模板:利用社区模板(如Node Exporter Full、Kubernetes Cluster)快速部署监控面板。
    • 告警联动:Grafana Alerting调用Alertmanager API,实现可视化告警规则配置与通知。
  2. 部署架构示例
    • 单机部署:同一服务器安装Prometheus(端口9090)与Grafana(端口3000),通过Nginx反向代理实现统一访问。
    • 集群部署:Prometheus联邦模式分散采集压力,Grafana集群通过HA配置保障高可用。
    • 安全配置:启用Prometheus TLS认证,Grafana配置LDAP集成实现权限管理。
  3. 最佳实践建议
    • 标签设计:遵循<metric_name>{label="value"}规范,避免高基数标签(如用户ID)。
    • 采集频率:根据指标重要性设置scrape_interval(默认1分钟),关键业务指标可缩短至15秒。
    • 告警策略:采用“紧急>警告>通知”分级机制,结合抑制规则减少重复告警。
    • 扩展性:长期历史数据存储可对接Thanos或Cortex,实现全局视图与降采样查询。

一、安装 Prometheus

1. 下载 Prometheus

sudo apt update    #更新软件包列表
wget https://githubfast.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz

2. 解压并移动文件

tar xvf prometheus-2.53.2.linux-amd64.tar.gz
sudo mv prometheus-2.53.2.linux-amd64 /usr/local/prometheus-2.53.2   # 移动到系统目录
sudo ln -s /usr/local/prometheus-2.53.2 /usr/local/prometheus        # 创建软链接便于未来升级

3. 创建专用用户和权限

sudo useradd -s /sbin/nologin -M prometheus                  # 创建prometheus用户,禁止登录
sudo chown -R prometheus:prometheus /usr/local/prometheus*   # 授权

4. 创建数据存储目录

sudo mkdir -p /data/prometheus
sudo chown -R prometheus:prometheus /data/prometheus/

5. 配置 systemd 服务

sudo tee /etc/systemd/system/prometheus.service > /dev/null << 'EOF'
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus \--config.file=/usr/local/prometheus/prometheus.yml \--storage.tsdb.path=/data/prometheus \--web.enable-lifecycle \--web.listen-address=:9090
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF

6. 启动 Prometheus 服务

# 重新加载systemd配置
sudo systemctl daemon-reload# 启动并设置开机自启
sudo systemctl start prometheus
sudo systemctl enable prometheus# 查看状态
sudo systemctl status prometheus --no-pager

7. 访问 Prometheus Web UI

打开浏览器访问:http://<IP>:9090

二、安装 Grafana

1. 添加 Grafana 官方仓库

# 安装依赖
sudo apt-get install -y software-properties-common wget# 添加GPG密钥
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg# 添加仓库
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | \sudo tee /etc/apt/sources.list.d/grafana.list

2. 更新并安装 Grafana

sudo apt-get update
sudo apt-get install grafana -y

3 启动 Grafana 服务

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server# 查看状态
sudo systemctl status grafana-server --no-pager

4. 访问 Grafana Web UI

打开浏览器访问:http://<IP>:3000

  • 默认用户名admin
  • 默认密码admin

首次登录后会提示修改密码,请立即设置新密码。

三、配置 Grafana 为中文

  1. 登录 Grafana 后,点击左侧齿轮图标 "Administration"
  2. 进入 General > Default preferences
  3. 将 Language 设置为 中文(简体)
  4. 点击 Save,点击下面的 Save

四、在 Grafana 中添加 Prometheus 数据源

  1. 登录 Grafana
  2. 点击左侧 连接 号,选择 "数据源(Data Source)"
  3. 选择 Prometheus
  4. 在 HTTP 区域的 URL 输入框中填写:http://localhost:9090
  5. 向下滚动,点击 Save & Test
  6. 如果显示 "绿色√",表示连接成功。

五、监控本机指标 —— 安装 Node Exporter

1. 下载并运行 Node Exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/

创建一个 systemd 服务来管理 Node Exporter

sudo tee /etc/systemd/system/node-exporter.service > /dev/null << 'EOF'
[Unit]
Description=Node Exporter
After=network.target[Service]
User=root
ExecStart=/usr/local/bin/node_exporter
Restart=always[Install]
WantedBy=multi-user.target
EOF

启用并启动服务

sudo systemctl daemon-reload
sudo systemctl start node-exporter
sudo systemctl enable node-exporter

2. 配置 Prometheus 抓取 Node Exporter

编辑 Prometheus 配置文件:

sudo vim /usr/local/prometheus/prometheus.yml

scrape_configs 下添加:

  - job_name: 'node_exporter'static_configs:- targets: ['localhost:9100']

3. 重载 Prometheus 配置

sudo systemctl reload prometheus
sudo kill -HUP $(pgrep prometheus)     # 或发送 HUP 信号

七、shell脚本自动化安装

#!/bin/bash# +--------------------------------------------------+
# |     Ubuntu 自动部署 Prometheus + Grafana        |
# |     作者:LoneEon
# |     2025 年 9 月 29 日
# |     适用于 Ubuntu 20.04/22.04 LTS                |
# +--------------------------------------------------+set -e  # 遇到错误立即退出# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Colorecho -e "${GREEN}开始部署 Prometheus + Grafana 监控系统(精简版)...${NC}"# 1. 更新系统
echo -e "${YELLOW}【步骤1】更新系统软件包...${NC}"
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl gnupg2 software-properties-common# 2. 创建专用用户
echo -e "${YELLOW}【步骤2】创建 prometheus 用户...${NC}"
sudo useradd -s /sbin/nologin -M prometheus 2>/dev/null || true# 3. 下载 Prometheus 2.53.2
echo -e "${YELLOW}【步骤3】下载 Prometheus 2.53.2...${NC}"
wget https://githubfast.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz
tar xvf prometheus-2.53.2.linux-amd64.tar.gz
sudo mv prometheus-2.53.2.linux-amd64 /usr/local/prometheus-2.53.2
sudo ln -sf /usr/local/prometheus-2.53.2 /usr/local/prometheus# 4. 创建数据目录
echo -e "${YELLOW}【步骤4】创建数据和配置目录...${NC}"
sudo mkdir -p /data/prometheus
sudo chown -R prometheus:prometheus /usr/local/prometheus*
sudo chown -R prometheus:prometheus /data/prometheus# 5. 创建 prometheus.yml 配置文件
echo -e "${YELLOW}【步骤5】生成 Prometheus 配置文件...${NC}"
sudo tee /usr/local/prometheus/prometheus.yml > /dev/null << 'EOF'
global:scrape_interval: 15sevaluation_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']
EOF
sudo chown prometheus:prometheus /usr/local/prometheus/prometheus.yml# 6. 创建 Prometheus systemd 服务
echo -e "${YELLOW}【步骤6】配置 Prometheus 服务...${NC}"
sudo tee /etc/systemd/system/prometheus.service > /dev/null << 'EOF'
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus \--config.file=/usr/local/prometheus/prometheus.yml \--storage.tsdb.path=/data/prometheus \--web.enable-lifecycle \--web.listen-address=:9090
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF# 7. 添加 Grafana 官方仓库
echo -e "${YELLOW}【步骤7】添加 Grafana 仓库...${NC}"
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | \sudo tee /etc/apt/sources.list.d/grafana.list# 8. 安装 Grafana
echo -e "${YELLOW}【步骤8】安装 Grafana...${NC}"
sudo apt update
sudo apt install -y grafana# 9. 启动所有服务
echo -e "${YELLOW}【步骤9】启动并启用 Prometheus 和 Grafana 服务...${NC}"
sudo systemctl daemon-reload# 启动 Prometheus
sudo systemctl start prometheus
sudo systemctl enable prometheus# 启动 Grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server# 10. 输出完成信息
echo -e "${GREEN}==================================================${NC}"
echo -e "${GREEN}✅ Prometheus + Grafana 部署完成(精简版)!${NC}"
echo -e "${GREEN}==================================================${NC}"
echo
echo -e "${GREEN}📊 Prometheus 访问地址:${NC} http://$(hostname -I | awk '{print $1}'):9090"
echo -e "${GREEN}📈 Grafana 访问地址:${NC}   http://$(hostname -I | awk '{print $1}'):3000"
echo -e "${GREEN}🔑 Grafana 默认账号:${NC}    admin / admin"
echo
echo -e "${YELLOW}📌 首次登录 Grafana 后请立即修改密码!${NC}"
echo
echo -e "${GREEN}🎉 部署成功!${NC}"

八、 常见问题排查

问题解决方案
apt-get update 报错 GPG 密钥确保正确执行了 gpg --dearmor 步骤
Grafana 无法启动检查 /etc/apt/sources.list.d/grafana.list 文件内容是否正确
权限错误确保 /data/prometheus 目录属于 prometheus 用户:
sudo chown -R prometheus:prometheus /data/prometheus/
服务无法开机自启确认已执行 systemctl enable 命令

通过本文的完整实践,我们成功在Ubuntu系统上部署了Prometheus与Grafana这一强大的监控组合,实现了从数据采集、存储到可视化的闭环。这不仅为系统性能观测提供了有力工具,也为后续构建全面的告警体系和深入的运维分析奠定了坚实基础。

http://www.dtcms.com/a/422800.html

相关文章:

  • Airbnb内部核心键值存储系统 Mussel 已完成从 v1 到 v2 的重构升级
  • 漳州做网站配博大钱少awordpress国内网站吗
  • 在用户调研中应用卡尔曼滤波:用动态思维重构认知更新
  • [免费]基于Python的在线音乐网站系统(后端Django)【论文+源码+SQL脚本】
  • 网站建设后期出现的问题手机网站开发前台架构
  • 首饰设计网站大全如何选择昆明网站建设
  • MapDistill:通过相机 - 激光雷达融合模型蒸馏提升高效基于相机的高清地图构建性能
  • 安卓开发---在适配器中使用监听器
  • 【COT】PromptCoT 2.0少样本训练 CoT
  • 鸿蒙应用开发和安卓应用开发的区别
  • UNIX下C语言编程与实践12-lint 工具使用指南:C 语言源代码语法与逻辑错误检查实战
  • UNIX下C语言编程与实践5-C 语言编译器 cc(gcc/xlc)核心参数解析:-I、-L、-D 的使用场景与实例
  • 机器视觉的双相机对位模切应用
  • 高档网站设计wordpress好用的商城主题
  • 植物大战僵尸融合版下载安装教程【PC/安卓/iOS 完整攻略 + 常见问题解决】
  • 厦门做网站价格想学网站建设与设计的书籍
  • 【TCSVT→Neurocomputing→ASOC投稿】记一次旷日持久的投稿经历
  • namespace 扩展
  • C语言——深入解析C语言指针:从基础到实践从入门到精通(一)
  • leetcode430:扁平化多级双向链表
  • 网站项目开发收费标准360网站名片怎么做的
  • 分布式秒杀系统设计方案
  • 分布式短链接系统设计方案
  • 分布式光纤声波振动与AI的深度融合:开启智慧感知新时代
  • 电商网站设计论文新网金商网站
  • [pdf、epub]320道《软件方法》强化自测题业务建模需求分析共279页(202509更新)
  • 赎金信--leetcode
  • Harbor磁盘空间清理指南:如何安全清理半年前的镜像
  • 网站开发项目组织架构电商平台怎么找商家
  • 基于Hadoop的肾脏疾病风险分析系统架构设计精髓