最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Prometheus&Grafana基本使用

来源:博客园

Prometheus介绍

Prometheus 是一套开源的系统监控与报警框架,以便于我们能够监控生产环境下的应用与服务。启发于 Google 的 BorgMon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入CNCF(Cloud Native Computing Foundation),成为受欢迎度仅次于 Kubernetes 的项目。

Prometheus特点

作为新一代的监控框架,Prometheus 具有以下特点:


(相关资料图)

  • 多维度数据模型:
    • 时间序列数据通过 metric 名和键值对来区分。
    • 所有的 metrics 都可以设置任意的多维标签。
    • 数据模型更随意,不需要刻意设置为以点分隔的字符串。
    • 可以对数据模型进行聚合,切割和切片操作。
    • 支持双精度浮点类型,标签可以设为全 unicode。
  • 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
  • 易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
  • 高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
  • 使用 pull 模式采集时序数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
  • 可以采用 push gateway 的方式把时序数据推送至 Prometheus server 端。
  • 可以通过服务发现或者静态配置去获取监控的 targets。
  • 支持多种可视化图形界面,比如Grafana等。

Prometheus组件

Prometheus server

主要负责数据采集和存储,提供PromQL查询语言的支持。包含了三个组件:

  • Retrieval: 获取监控数据
  • TSDB: 时间序列数据库(Time Series Database),我们可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。具备以下特点:大部分时间都是顺序写入操作,很少涉及修改数据删除操作都是删除一段时间的数据,而不涉及到删除无规律数据读操作一般都是升序或者降序
  • HTTP Server: 为告警和出图提供查询接口

Metrics collection

主要负责指标的采集,其次将指标主动或被动交付给Prometheus Server

  • Job/Exporters: 数据采集组件,负责从目标处(主机/数据库/服务/容器/...)搜集数据,并将其转化为Prometheus支持的格式。已有一系列可用,面向各基础设施的采集工具可直接使用。组件完成数据采集后,等待Prometheus Server拉取。
  • Short-lived Jobs&Pushgateway: 支持临时Job主动推送指标到中间网关,进而等待Prometheus Server拉取。

Service discovery

  • Kubernetes: 支持从Kubernetes中自动发现服务和采集信息。
  • file_sd: 通过配置文件来实现服务的自动发现。

Alerting

通过相关的告警配置,对触发阈值的告警通过页面展示、短信和邮件通知的方式告知运维人员。

Visualization

通过PromQL语句查询指标信息,并在页面展示。可使用Prometheus自带UI界面,或是使用内容展示更加丰富的Grafana。也可调用API来获取监控指标。

Prometheus部署

准备好了两台服务器,用来模拟指标采集,其中一台服务器用来指标数据的收集,另一台用来部署Prometheus Server。

指标数据收集

从三个角度去收集指标数据,从主机指标,容器指标以及容器服务指标分别收集。

主机指标

为收集服务器指标数据,使用node_exporter,此处为了简便,使用容器安装,但最好是直接安装在主机上,以避免指标数据收集不准确。

docker run -d \--name StarCityNodeExporter \--restart=always \--net="host" \--pid="host" \-v "/proc:/host/proc:ro" \-v "/sys:/host/sys:ro" \-v "/:/rootfs:ro" \-e TZ=Asia/Shanghai \-v /etc/localtime:/etc/localtime \prom/node-exporter \--path.procfs=/host/proc \--path.rootfs=/rootfs \--path.sysfs=/host/sys \--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"

可访问http://host:9100/metrics,查看指标数据

容器指标

再安装一个针对主机上所有容器的指标收集器cAdvisor,能够收集所有容器的CPU,内存,网络等使用情况。

docker run \  --volume=/:/rootfs:ro \  --volume=/var/run:/var/run:ro \  --volume=/sys:/sys:ro \  --volume=/var/lib/docker/:/var/lib/docker:ro \  --volume=/dev/disk/:/dev/disk:ro \  --publish=58080:8080 \  --detach=true \  --name=StarCityCAdvisor \  --privileged \  --device=/dev/kmsg \  google/cadvisor

可访问http://host:58080/containers,查看指标数据

容器服务指标

以及收集RabbitMQ指标的收集器RabbitMQ_exporter,--net=container:RabbitMQ容器名(此处我本地RabbitMQ容器名为StarCityRabbitMQ),需要注意,在创建RabbitMQ时候容器开放9419端口。

docker run --name StarCityRabbitMQExporter -d --net=container:StarCityRabbitMQ kbudde/rabbitmq-exporter

可访问http://host:9419/metrics,查看指标数据

Prometheus Server

配置文件挂载目录

mkdir -p /opt/prometheus/datachmod -R 777 /opt/prometheus/data

配置Prometheus文件

cd /opt/prometheus/touch prometheus.yml

此处为了方便,直接用winscp编辑了prometheus.yml文件

global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: - job_name: prometheus  static_configs:   - targets:     - "Prometheus Server Host:9090"    labels:     appname: Prometheus - job_name: node  scrape_interval: 10s  static_configs:   - targets:     - "Metrics Host:9100"    labels:     appname: node - job_name: cadvisor  static_configs:   - targets:     - "Metrics Host:58080" - job_name: rabbitmq  scrape_interval: 10s  static_configs:   - targets:     - "Metrics Host:9419"    labels:     appname: rabbitmq

搭建Prometheus容器

docker run -d \--name StarCityPrometheus \--restart=always \-p 9090:9090 \-v /opt/prometheus/data:/prometheus \-e TZ=Asia/Shanghai \-v /etc/localtime:/etc/localtime \-v /opt/prometheus:/etc/prometheus \prom/prometheus

可通过http://host:9090/targets,访问Prometheus的UI页面查看prometheus.yml中配置的指标采集组件信息及情况。

Grafana

介绍

Grafana使你能够把来自不同数据源比如Elasticsearch,Prometheus,Graphite,influxDB等多维度的数据以绚丽的图表展示出来。它也能基于你的metrics数据发出告警。当一个告警状态改变时,它能通过email,slack或者其他途径发出通知。

搭建Grafana

docker run -d --name StarCityGrafana --restart=always -p 3000:3000 grafana/grafan

可访问http://host:3000,初始化用户名密码:admin/admin(首次进入后可改密码或跳过)。

设置数据源

选择Prometheus作为数据源,从其中读取数据,用于图表展示。

设置Prometheus地址与其他参数

导入仪表

已有许多设置好的,图表丰富的模板我们可以直接从模板库中导入使用。

对于主机层面的node_exporter指标收集器,此处使用id 8919

对于容器层面的cadvisor指标收集器,此处使用id 13112

对于容器服务层面的rabbitmq的指标收集器,此处使用id 4279

2023-01-31,望技术有成后能回来看见自己的脚步

关键词: 数据采集 配置文件 数据收集