Prometheus+Grafana搭建统计监控工具

本文介绍了如何利用Prometheus进行系统监控,包括安装node_exporter收集服务器指标,并配置Prometheus服务器抓取数据。接着,通过Grafana部署可视化界面,展示了如何设置数据源、导入dashboard模板以展示监控数据。最后,提到了Prometheus和Grafana结合实现监控告警的可能。

    选择开源工具Prometheus实现系统监控、docker服务监控、API网关状态监控数据提取、保存,配合开源可视化图形Grafana展示监控数据,并且根据监控数据,通过邮箱发出告警邮件。

    下面将以采集一台服务器运行数据为例,说明监控系统的运行原理及搭建流程。

一、Prometheus

    Prometheus是一个开源的监控系统,可以通过job/exporter开放的API接口,定时获取监控数据,并保存。所以在说明Prometheus之前,必须要介绍下exporter。

1.1 node_exporter

    需要采集一台服务器的运行参数,比如服务器CUP的负载、系统负载、内存消耗、硬盘使用量等,node_exporter工具可以收集好数据,并对外开放API查询接口。

1.1.1 node_exporter安装使用

    访问https://github.com/prometheus/node_exporter/releases,可以查看node_exporter各个版本,根据需要下载对象的版本。node_exporter使用go语言实现,源码可以https://github.com/prometheus/node_exporter获取。

    本文下载0.17.0版本,并运行,服务器ip为10.21.70.44。

cd /opt/
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar -zxvf node_exporter-0.17.0.linux-amd64.tar.gz
cd node_exporter-0.17.0.linux-amd64/
./node_exporter

    可看到如下启动日志,对外端口为9100

    可以通过访问ip+port,来查看一次采集的指标数据,直接浏览器输入10.21.70.44:9100,点击Metrics,可查看本次查询的监控指标数据。

1.1.2 Prometheus简介

    通过node_exporter介绍,可以猜测到Prometheus大概的一个作用,就是定时访问node_exporter对外开放的API接口,获取当前系统的运行数据。

    Prometheus官网的架构图

    分析该架构图

    Prometheus server: 是Prometheus工具的核心组件,存储使用时序数据库TSDB,将监控数据存储在硬盘上。

    Service discovery:服务发现能力,file_sd——该功能让Prometheus自行监听配置文件的变化;kubernetes——使Prometheus动态更新配置以适应频繁的节点变更。

    pushgateway:相当于中转站能力,Prometheus只会使用pull方式从节点开放的API接口拉去监听数据,但是存在特殊节点,只能push数据,所以可以先push数据到Pushgateway,Prometheus从Pushgateway拉去数据。

    Jobs/exporters:exporter导出器,Prometheus最主要的数据来源。上节介绍的node_exporter属于exporter导出器的一种。

1.1.3 Prometheus 安装使用

    通过https://prometheus.io/download/选择合适版本的Prometheus,本文选择2.6.0-linux版本。

cd /opt
sudo wget https://github.com/prometheus/prometheus/releases/download/v2.6.0/prometheus-2.6.0.linux-amd64.tar.gz
sudo tar -zxvf prometheus-2.6.0.linux-amd64.tar.gz
cd prometheus-2.6.0.linux-amd64/

    首先配置prometheus.yml, 在scrape_configs节点下添加node_exporter的对外开放的API。

 - job_name: "node"
    static_configs:
    - targets: ["10.21.70.44:9100"]

    通过命令“./prometheus”,启动Prometheus,启动日志如下截图,可以看到“ Server is ready to receive web requests. ”,表明Prometheus启动成功。

level=info ts=2018-12-29T08:51:26.126230419Z caller=main.go:243 msg="Starting Prometheus" version="(version=2.6.0, branch=HEAD, revision=dbd1d58c894775c0788470944b818cc724f550fb)"
level=info ts=2018-12-29T08:51:26.126302838Z caller=main.go:244 build_context="(go=go1.11.3, user=root@bf5760470f13, date=20181217-15:14:46)"
level=info ts=2018-12-29T08:51:26.126419034Z caller=main.go:245 host_details="(Linux 4.4.0-132-generic #158-Ubuntu SMP Thu Aug 2 09:08:04 UTC 2018 x86_64 master1 (none))"
level=info ts=2018-12-29T08:51:26.126497022Z caller=main.go:246 fd_limits="(soft=1000000, hard=1000000)"
level=info ts=2018-12-29T08:51:26.126567171Z caller=main.go:247 vm_limits="(soft=unlimited, hard=unlimited)"
level=info ts=2018-12-29T08:51:26.127332045Z caller=main.go:561 msg="Starting TSDB ..."
level=info ts=2018-12-29T08:51:26.127414745Z caller=web.go:429 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2018-12-29T08:51:26.135164421Z caller=main.go:571 msg="TSDB started"
level=info ts=2018-12-29T08:51:26.135204665Z caller=main.go:631 msg="Loading configuration file" filename=prometheus.yml
level=info ts=2018-12-29T08:51:26.136207062Z caller=main.go:657 msg="Completed loading of configuration file" filename=prometheus.yml
level=info ts=2018-12-29T08:51:26.136232588Z caller=main.go:530 msg="Server is ready to receive web requests."

    浏览器通过url: http://10.21.70.44:9090,访问Prometheus自带的UI界面。

    Prometheus支持PromQL语言记性查询,支持简单的图形展示,点击Graph按钮,即可查看图形。

------需要补充截图,以及输入

二、Grafana+Prometheus

    由于Prometheus的图形展示工具过于简单,而且不能长久存储数据,而Grafana是用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,支持告警功能。可直接支持Prometheus作为数据源。所以选择Grafana配合Prometheus做数据的展示和监控。

2.1 安装部署Grafana+Prometheus

    本文选择docker容器方式部署Grafana和Prometheus, docker-compose编排文件docker-compost.yml内容如下:

version: '2'

networks:
  monitor:
    driver: bridge

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    hostname: prometheus
    restart: always
    volumes:
      - /opt/prometheus/config:/etc/prometheus
      - /data/prometheus:/prometheus
    ports:
      - "9090:9090"
    expose:
      - "8086"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--log.level=info'
      - '--web.listen-address=0.0.0.0:9090'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention=15d'
      - '--query.max-concurrency=50'
    networks:
      - monitor

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    hostname: grafana
    restart: always
    volumes:
      - /opt/grafana/data:/var/lib/grafana
    ports:
      - "3000:3000"
    networks:
      - monitor
    depends_on:
      - prometheus

    根据docker-compose.yml文件内容,新建docker容器的映射目录,将Prometheus的配置文件、grafana的数据文件、prometheus的数据文件,都映射的磁盘上,这样不需要进容器操作,方便。

sudo su
cd /opt
mkdir -p prometheus/config/
mkdir -p grafana/data
chmod 777 grafana/data
mkdir -p /data/prometheus
chmod 777 /data/prometheus

    执行docker-compose -f docker-compose.yml up -d,启动prometheus和grafana两个工具容器。启动完成后,分别查看prometheus页面:http://10.21.70.44:9090/targets,查看exporter是否正常运行。

    登录Grafana页面,http://10.21.70.44:3000/, 用户名:admin,密码:admin

   登录后,先添加数据源 data source,即新增Prometheus类型的数据源。

    选择Prometheus,输入prometheus对外开放的获取监控数据API,点击【save and test】按钮,测试data source是否正确运行。

     node_exporter是开源的项目,有对象的dashboard图表,所以直接可以去Grafana官网下载即可,访问https://grafana.com/,选择【Grafana】-【Dashboards】。

    过滤条件:Data Source选择Prometheus,Collecter选择nodeExporter,如下截图,最终我们选择第一个中文版本的dashboard。

    负责该dashboard模板的ID,如下图

    Grafana页面,选择import导入dashboard模板

    粘贴复制的dashboard模板的ID:8919,点击load,Grafana会自动下载模板

   加载模板完成后,选择对应的数据源,即可。

显示监控数据如下:

<think>好的,我需要帮助用户搭建PrometheusGrafana的服务器监控系统。首先,我要回顾用户之前的问题,之前他们询问了Zabbix是否需要付费,现在转向了PrometheusGrafana的组合,这可能是因为他们需要开源免费的解决方案,并且更关注云原生或容器化环境的监控用户的需求很明确:搭建服务器监控系统。Prometheus作为监控工具,负责数据采集和存储,而Grafana则用于数据可视化。我需要确保步骤清晰,适合不同技术水平的用户,并且覆盖常见的问题点。 首先,我应该分步骤介绍安装和配置过程。可能需要包括安装Prometheus、Node Exporter(用于服务器指标)、Grafana,然后配置数据源和仪表盘。同时,用户可能需要了解如何设置服务自启动,以及如何验证各个组件是否正常工作。 要注意用户可能的潜在问题,比如防火墙设置、权限问题,或者配置文件的正确性。比如,Prometheus默认使用9090端口,Grafana用3000,而Node Exporter用9100,需要确保这些端口开放。此外,SELinux或AppArmor可能会阻止服务运行,需要提示用户检查或临时禁用。 另外,用户可能对PromQL不熟悉,所以在配置警报或自定义仪表盘时可能会遇到困难。不过用户问题主要是搭建,可能不需要深入PromQL,但可以提及Grafana的社区仪表盘,方便用户导入使用。 需要检查之前的对话,用户之前得到的是关于Zabbix的详细回答,包含代码示例和表格,所以这次回答也应该保持类似结构,使用清晰的步骤和代码块,可能还包括配置文件的示例。同时,要使用中文,避免专业术语过多,但必要时解释清楚。 最后,总结一下优势,比如开源、灵活性、适合云环境等,帮助用户理解选择Prometheus+Grafana的原因。可能还要提到与其他工具(如Alertmanager)的集成,但用户当前问题可能不需要深入,可以简要提及作为扩展建议。</think>以下是 **Prometheus + Grafana 服务器监控体系** 的完整搭建指南,涵盖从基础安装到高级配置的全流程: --- ### 一、架构原理 ```mermaid graph LR A[被监控服务器] -->|Node Exporter 暴露指标| B(Prometheus Server) B -->|抓取&存储时序数据| C{Grafana} C -->|可视化查询| D[监控仪表盘] C -->|告警规则触发| E[Alertmanager] ``` --- ### 二、基础环境搭建(以 Ubuntu 22.04 为例) #### 1. 安装 Prometheus ```bash # 创建专用用户 sudo useradd --no-create-home --shell /bin/false prometheus # 下载二进制包(版本可替换为最新) wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz tar xvf prometheus-*.tar.gz sudo cp prometheus-*/prometheus /usr/local/bin/ sudo cp prometheus-*/promtool /usr/local/bin/ # 配置文件 sudo mkdir /etc/prometheus sudo nano /etc/prometheus/prometheus.yml ``` **配置文件模板**: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['被监控服务器IP:9100'] ``` #### 2. 安装 Node Exporter(每个被监控服务器都需要) ```bash 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/ # 创建系统服务 sudo nano /etc/systemd/system/node_exporter.service ``` **服务文件内容**: ```ini [Unit] Description=Node Exporter [Service] User=node_exporter ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target ``` --- ### 三、Grafana 集成 #### 1. 安装 Grafana ```bash sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install grafana sudo systemctl start grafana-server sudo systemctl enable grafana-server ``` #### 2. 配置数据源 1. 访问 `http://服务器IP:3000` 使用 admin/admin 登录 2. 进入 **Configuration > Data Sources > Add data source** 3. 选择 Prometheus,URL 填写 `http://localhost:9090` #### 3. 导入仪表盘模板 推荐使用官方模板库: - **Node Exporter 仪表盘**:ID `1860` - **服务器综合监控**:ID `8919` 导入方式: ```text Grafana 首页 -> Create -> Import -> 输入模板ID -> Load ``` --- ### 四、高级配置技巧 #### 1. Prometheus 告警规则 ```yaml # 创建告警规则文件 sudo nano /etc/prometheus/alerts.yml # 示例:CPU使用率超过90%触发告警 groups: - name: host_stats rules: - alert: HighCpuUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90 for: 5m labels: severity: critical annotations: summary: "高CPU使用率 (实例 {{ $labels.instance }})" ``` #### 2. 配置 Alertmanager ```bash # 下载安装 wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz tar xvf alertmanager-*.tar.gz sudo cp alertmanager-*/alertmanager /usr/local/bin/ # 邮件告警配置示例 sudo nano /etc/alertmanager/alertmanager.yml ``` ```yaml route: receiver: 'email-notice' receivers: - name: 'email-notice' email_configs: - to: 'admin@example.com' from: 'alert@monitor.com' smarthost: 'smtp.example.com:587' auth_username: 'user' auth_password: 'password' ``` --- ### 五、性能优化建议 1. **存储优化** - 启用本地SSD存储 - 设置数据保留策略:`--storage.tsdb.retention.time=30d` 2. **高可用方案** ```mermaid graph TB A[Prometheus A] -->|联邦集群| C[中心Prometheus] B[Prometheus B] -->|联邦集群| C C --> Grafana ``` 3. **安全加固** - 启用HTTPS通信 - 配置访问控制列表 (ACL) - 定期备份 `prometheus.yml` 和告警规则文件 --- ### 六、成本对比 | 方案 | 监控100节点年成本 | 核心优势 | |---------------------|-------------------|-----------------------------| | Prometheus+Grafana | $0 (自建硬件除外) | 完全开源/高度定制化 | | 商业监控软件 | $8,000+ | 开箱即用/SLA支持 | | 云平台自带监控 | $3,000+ | 深度云集成/免维护 | --- **总结**:该方案通过开源组件实现企业级监控能力,适合需要深度定制化且具备基础运维能力的团队。关键优势在于灵活的指标采集能力和Grafana强大的可视化生态,但需要投入学习PromQL查询语言的时间成本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值