Prometheus+Grafana监控系统

本文详细介绍了如何部署Prometheus和Grafana监控系统,包括Prometheus的特性、组件、数据模型以及监控告警Alertmanager。通过Prometheus监控K8s集群,使用Grafana进行数据图形化展示,还涵盖了K8s资源监控和告警配置的实践。
  • 监控内容
    在这里插入图片描述
  • prometheus与zabbix对比
    在这里插入图片描述

Prometheus官网
Github地址

  • Prometheus特点:
  1. 多维度数据模型:由度量名称和键值对标识的时间序列数据
  2. PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
  3. 不依赖分布式存储,单个服务器节点可直接工作
  4. 基于HTTP的pull方式采集时间序列数据
  5. 推送时间序列数据通过PushGateway组件支持
  6. 通过服务发现或静态配置发现目标
  7. 多种图形模式及仪表盘支持(grafana)
  • Prometheus组成与架构
    在这里插入图片描述
    Prometheus Server:收集指标和存储时间序列数据,并提供查询接口
    ClientLibrary:客户端库
    Push Gateway:短期存储指标数据,主要用于临时性的任务
    Exporters:采集已有的第三方服务监控指标并暴露metrics
    Alertmanager:告警
    Web UI:简单的Web控制台
  • 数据模型
    • Prometheus将所有数据存储为时间序列;具有相同度量名称以及标签属于同一个指标。
    • 每个时间序列都由度量标准名称和一组键值对(标签)作为唯一标识。
    • 时间序列格式:
      <metric name>{<label name>=<label value>,...)}
      饭粒:api_http_requests_total{method=“POST”, handle="/messages"}
  • 指标类型
    • counter:递增的计数器
    • Gauge:可以任意变化的数值
    • Histogram:对一段时间范围内数据进行采样,并对所有数值求和与同级数量
    • Summary:与Histogram类似
      在这里插入图片描述
  • 实例:可以抓取的目标称为实例(instances)
  • 作业:具有相同目标的实例集合称为作业(Job)
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']
      - job_name: 'node'
        static_configs:
        - targets: ['192.168.1.10:9090']
    

部署Prometheus

  • 安装
    • 二进制
      下载 解压后执行同名可执行文件即可(注意:2.18.1不可用)
      进入解压目录执行./prometheus --config.file=prometheus.yml
    • docker
      docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
      在浏览器访问 http://192.168.33.7:9090
      在这里插入图片描述
  • 使用systemd管理Prometheus服务(二进制部署适用)
    # vim /usr/lib/systemd/system/prometheus.service
    [Unit]
    Description=prometheus.io
    
    [Service]
    Restart=on-failure
    ExecStart=/usr/local/src/prometheus-2.18.0.linux-amd64/prometheus --config.file=/usr/local/src/prometheus-2.18.0.linux-amd64/prometheus.yml
    
    [Install]
    WantedBy=multi-user.target
    # systemctl daemon-reload
    # systemctl start prometheus
    # ps -ef
    

  • 配置文件 官文
  • 检查配置文件是否有问题
    ./promtool check config [配置文件]

  • 基于文件的服务发现
    • 添加本机监控
    1. 将默认配置文件中static_configs两行配置注释
    2. 同级加上以下配置
      file_sd_configs:
        - files: ['/usr/local/src/prometheus-2.18.0.linux-amd64/sd_config/local.yml']
          refresh_interval: 5s
      
    3. 创建服务发现目录mkdir /usr/local/src/prometheus-2.18.0.linux-amd64/sd_config
    4. 重启prometheus服务 systemctl restart prometheus
    5. 添加服务发现配置文件
      # vim sd_config/local.yml 
      - targets: ['localhost:9090']
        labels:
          idc: sz
      
      在web端查看:
      在这里插入图片描述
    • 添加其他服务器节点监控(在上面的基础下操作)
    1. 在需要被监控的node节点下载node_exporter并解压 官文
    2. 配置systemd管理,启动
      # /usr/lib/systemd/system/node_exporter.service
      [Unit]
      Description=node_exporter
      
      [Service]
      Restart=on-failure
      ExecStart=/usr/local/src/node_exporter-1.0.0.linux-amd64/node_exporter
      
      [Install]
      WantedBy=multi-user.target
      # systemctl daemon-reload
      # systemctl start node_exporter
      # curl 192.168.33.6:9100/metrics
      
    3. 服务端:配置文件中加入
        - job_name: 'node'
          file_sd_configs:
            - files: ['/usr/local/src/prometheus-2.18.0.linux-amd64/sd_config/server_*.yml']
              refresh_interval: 5s
      
    4. 重启prometheus服务 systemctl restart prometheus
    5. 添加服务发现配置文件
      # vim sd_config/server_node.yml 
      - targets: ['192.168.33.6:9100', '192.168.33.9:9100']
      
      在web端查看:
      在这里插入图片描述
  • 监控资源消耗情况
    • cpu使用率:100 - irate(node_cpu_seconds_total{instance="192.168.33.6:9100", mode="idle", job="node"}[5m]) * 100
      在这里插入图片描述
    • 内存使用率:100 - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100
      在这里插入图片描述
    • 根分区剩余空间:node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs" } / node_filesystem_size_bytes{mountpoint="/",fstype=~"ext4|xfs" } * 100
      在这里插入图片描述
  • 监控服务运行状态
  1. 修改node_exporter.service启动脚本,写入需要监控的服务(可以使用正则匹配),重启
    # vim /usr/lib/systemd/system/node_exporter.service
    ...
    ExecStart=/usr/local/src/node_exporter-1.0.0.linux-amd64/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|etcd).service
    ..
### 使用 Prometheus Grafana 构建监控系统的流程 #### 配置 Prometheus 为了使Prometheus能够正常工作并收集所需的度量数据,需先设置其配置文件`prometheus.yml`。此文件应挂载至运行Prometheus的容器内,并依据实际需求调整以指定要监测的目标地址服务发现机制[^1]。 对于静态目标,可以在该配置文件中直接列出待监视的服务实例;而对于动态环境,则可借助诸如Consul这样的外部服务注册表来实施自动化服务探测,从而简化管理过程[^4]。 ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] ``` 这段YAML片段展示了如何设定全局抓取间隔以及定义一个名为'prometheus'的任务去定期访问本地主机上的端口9090获取统计数据。 #### 安装与部署 Grafana 完成Prometheus的基础搭建之后,下一步就是安装Grafana用于展示所捕获的信息。这通常涉及到下载官方提供的二进制包或是利用Docker镜像快速启动一个新实例。 一旦Grafana成功上线,在Web界面里添加一个新的数据源指向先前已配置好的Prometheus服务器即可建立两者之间的连接关系[^2]: ![Add Data Source](https://grafana.com/static/img/docs/v7/add_datasource.png) 在此过程中只需提供Prometheus API接口的位置(通常是http://<PROMETHEUS_HOST>:9090),随后保存更改以便后续操作使用这些来自Prometheus的数据流。 #### 创建仪表板警报规则 有了稳定的数据输入渠道后,就可以着手设计直观易懂的图表视图了。通过拖拽组件的方式轻松定制个性化的看板布局,支持多种类型的图形化表达形式如折线图、柱状图等,帮助运维人员更高效地理解当前系统状态变化趋势[^3]。 此外,还可以制定一系列预警策略当某些关键性能指标超出预设范围时触发通知提醒相关人员及时介入处理潜在风险事件。 最后一步是在默认选项卡中选取早前创建的数据源名称,并填写具体想要跟踪的对象路径作为查询条件[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值