第3章 Exporter 在 prometheus 中,Exporter 是重要的组成部分,在实际监控样本数据的收集是由 Exporter 完成的,prometheus 服务器只需要定时从
这些 Exporter 提供的http服务获取监控数据即可。3.1 概述 Exporter 本质上是将收集的数据转化为对应的文本格式,并提供 http 接口,供 prometheus 定期采集数据。3.1.1 Exporter类型 通常来说可以将 Exporter 分为两类:1.直接采集型这类 Exporter 内置了相应的应用程序,用于向 prometheus 直接提供 Target 数据支持。这样设计的好处是,可以更好的监控各自系统的内部运行状态,同时也更适合更多自定义监控指标的项目实施。2.间接采集型原始监控目标并不直接支持 prometheus,需要我们使用 prometheus 提供的 Client Labrary 编写该监控目标的监控采集程序,用户可以将该程序独立运行,去获取指定的各类监控数据值。3.1.2 文本数据格式 在 prometheus 监控环境中,所有返回监控样本数据的 Exporter 程序,均需要遵守 prometheus 规范,即基于文本的数据格式,其特点是具有更好的跨平台和可读写。访问 http://localhost:9090/metrics,可以看到 Exporter 收集的数据值转化成文本内容展示。prometheus 基于文本的格式是面向行的。以 # 开头的,通常是注释内容。这些样本数据说明如下:1.以 # HELP 开头的行,表示 mitric 的帮助与说明注释,可以包含当前监控指标名称和对应的说明信息2.以 # TYPE 开始的行,表示定义 metric 类型,可以包含当前监控指标名称和类型,类型有 Counter,Gauge,Histogram,Summary和 Untyped。3.其他非 # 开头的行,即监控样本数据4.其他一般性注释,方便阅读使用,会被 prometheus 忽略每一行的样本需要满足一下格式:metric_name [ label_name = "label_value", ... ] value [timestamp]3.1.3 获取Exporter https://prometheus.io/docs/instrumenting/exporters/https://github.com/prometheus/3.2 主机监控 对于主机中各项性能指标的监控,不同的内核会展示不同的监控指标(metric)。3.2.1 Linux主机监控 1.下载部署git clone https://github.com/prometheus/node_exporter.gitcd node_exportermake./node_exporter <flags>2.与 Prometheus 集成可以在 prometheus 主机目录中,找到主配置文件,使用其中的静态配置功能 static_configs 采集 node_exporter 提供的数据。prometheus.yml 配置说明:   1.global在prometheus安装后,官方会提供一个默认的prometheus.yml文件,其中包含global的默认配置内容,主要有以下4个参数:a) scrape_interval,每次数据采集的时间间隔,默认为1sb) scrape_timeout,采集请求超时时间,默认为10sc) evaluation_interval,执行rules的频率,默认为1sd) external_labels,与外部系统通信时添加到任意时间序列或警告用的外部标签2.scrape_configsscrape_configs 主要用于配置被采集数据节点操作,每一个采集配置主要有以下几个参数:1.job_name2.scrape_interval3.scrape_timeout4.metrics_path5.honor_labels6.scheme7.params8.relabel_configs9.metric_relabel_configs10.sample_limit3.node_exporter 任务添加内容如下:vim prometheus.ymlscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['192.168.24.17:9090']- job_name: 'node_exporter'static_configs:- targets: ['192.168.24.17:9100']配置后,重启 prometheus 或者进行动态热加载操作。在浏览器中输入 http://192.168.24.17:9090,点击 "Status"中的"Targets"。//自定义配置文件docker run --name prometheus -p 9090:9090 -v /Users/weijianhua/Sites/config_file/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus3.metrics 查看Node exporter 服务正常运行的时候,访问 http://192.168.24.17:9100/metrics,可以直接查看当前被监控主机的样本信息。1.cpu数据采集对cpu数据进行采集的主要监控指标是 node_cpu_seconds_total。可以用如下 PromQL 表达式进行查询:avg without(cpu,mode) (rate(node_cpu_seconds_total {mode="idle"} [1m] ))表达式计算每核cpu每秒的空闲时间,然后对主机上的所有cpu求平均值。2.内存信息采集   node_memory_xxx 开始3.磁盘数据采集node_disk_xxx 开始4.文件系统采集node_filesystem_xxx 开始5.网络采集node_network_xxx 开始3.2.2 Windows主机监控 3.3 数据库监控 3.3.1 MySQL Server exporter 由于mysql 不提供任何端点。其工作原理是使用底层应用程序理解的语言,从目标应用程序中提取监控指标,然后通过rest公开这些指标。1.下载 mysqld_exporter https://prometheus.io/download/#mysqld_exporter2.创建mysql授权用户连接到mysql服务器,创建一个用户,例如 "mysqld_expoter"。该用户需要拥有 process,select,replication client 授权,且为了避免有些高负载mysql 服务器过载,为用户设置最大连接数设置。create user 'mysqld_exporter'@'localhost' identified by '123456';grant PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'mysqld_exporter'@'localhost';flush PRIVILEGES;select Host,User from mysql.user; //核查用户是否已经创建完成3.配置数据库认证  mysqld_exporter 需要连接数据库服务器的用户名和密码,这里可以通过2种方式进行:1.使用环境变量   。创建一个名为"DATA_SOURCE_NAME"的环境变量,格式如下:export DATA_SOURCE_NAME = 'user:password@(hostname:3306)/'2.使用配置文件。创建一个名为 '.mysqld_exporter.cnf',并在该文件中输入用户名和密码。格式如下:user=用户名password=密码我们选第二种:vim .mysqld_exporter.cnfuser=用户名password=密码4.启动 mysqld_exporter./mysqld_exporter --config.my-conf=".mysqld_exporter.conf" 默认监听 9104 端口。访问 http://localhost:9104/metrics5.与 prometheus 集成vim prometheus.yml - job_name : 'mysqld_exporter'scrape_interval: 10sstatic_configs:-targets:['192.168.24.61:9104']6.metrics 查看mysql数据库的性能状态监控内容非常多,但至少应该关注4个选项:吞吐量,执行性能,连接情况和缓冲池使用情况。1.查询吞吐量show global status like 'Questions';2.查询执行性能show global status like 'Slow_queries';3.连接情况show variables like 'max_connections';show global status like 'Threads_connected';4.缓冲池使用情况show global status like 'Innodb_buffer_pool_reads';3.3.2 Redis exporter 1.下载redis_exporterhttps://github.com/oliver006/redis_exporter/releases/tag/v1.24.0查看http://192.168.31.139:9121/metrics2.与 prometheus 集成vim prometheus.yml- job_name: 'redis_exporter'static_configs:- targets: ['192.168.31.139:9121']3.3.4 Nginx监控 prometheus 官方提供了2个nginx使用的第三方 Exporter: Nginx metric library 和 nginx-vts-exporter。1.下载https://github.com/vozlt/nginx-module-vts/releaseshttps://github.com/hnlq715/nginx-vts-exporter/releases2.启动./nginx-vts-exporter -nginx.scrape_uri http://localhost/status/format/json3.与 prometheus 集成vim prometheus.yml- job_name: 'nginx_exporter'static_configs:- targets: ['192.168.31.139:9913']3.5 Prometheus之黑盒监控 前面我们对 Exporter 的使用称为 "白盒监控",即需要把对应的 Exporter 程序安装到被监控的目标主机上,从而实现对主机各种资源极其状态的数据采集工作。但是由于
某些情况下,不是所有的 exporter 都能部署到被监控的主机环境中,最典型的就是监控全国网络质量的稳定性,通常用Ping操作,对选取的节点进行icmp操作,此时不可能在他人
应用环境中部署exporter程序。针对这样的场景,prometheus 社区提供了黑盒解决方案,Black Exporter 无需安装在被监控的目标环境中,用户只需要将其安装在与prometheus
和被监控目标互通的环境中,通过http,https,dns,tcp,icmp等方式对网络进行探测和监控,还可以探测 ssl 证书过期时间。3.5.1 软件安装与部署 1.下载 blackbox_exporter :https://prometheus.io/download/#blackbox_exporter默认监听 9115 端口。访问 http://192.168.31.139:91153.5.2 配置文件 默认配置文件为 blackbox.ymlmodules:http_2xx:       #定义模块名称: http_2xxprober:http #定义探测类型: httphttp_post_2xx:  #模块为 http post 功能探测prober:http http:method:POSTtcp_connect:    #模块为 tcp 功能探测prober:tcp ...tcmp:            #模块为 icmp 功能探测prober:icmp1.http 探测检查http状态,可以使用http探测器。它可以生成http请求使用,如get或post方法,配置操作中可以定义请求超时时间,可以使用正则表达式进行相关匹配。vim blackbox.ymlmodules:http_2xx:prober:httptimeout:8shttp:valid_status_codes:[]  #留空,默认为 2xx状态码,如果想自定义 ['200','205']method:POSTproferred_ip_protocol:"ipv4"  #强制使用ipv4ip_protocol_fallback: false  #ipv4失败,不回退到 ipv6配置完成后,通过 curl -XPOST http://192.168.31.139/-/reload 热加载。2.与 prometheus 集成- job_name: 'blackbox_http'metrics_path: /probeparams:module: [http_2xx]static_configs:- targets:- www.12306.cn- www.baidu.cnrelabel_configs:- source_lables: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: localhost:9115配置文件中定义了一个名为 blackbox_http 的采集任务,通过 params 声明指定使用 blackbox.yml 文件中的模块 http_2xx,完成对指定探测目标(target)的探测。那么 prometheus 是如何与 Blackbox Exporter 进行关联集成的呢?这就用到了 relabel 机制,relabel_configs 覆盖目标的 __address__ 标签以指定导出器的主机名,进而简化了 prometheus 任务配置内容。在采集样本数据之前通过 relabel_configs 对采集任务进行动态设置过程如下:1.第一个重新标记(relabel)通过将 __address__ 标签(即当前目标的地址)写入 __param_target 标签来创建参数2.第二个 relabel 将获取 __param_target 的值,并覆写到 instance 标签中3.覆写 target 实例的 __address__ 标签值为 BlockBox Exporter 实例的访问地址,示例中向 192.168.31.139:9115 发送请求获取实例的 metrics 信息。通过curl模拟请求,可以看到输出 Metrics 信息:curl "http:///192.168.31.139:9115/probe?module=http_2xx&target=www.12306.cn"url地址中使用的探针是通过其中的 module 参数来指定的,而target 参数用来指定探测目标,探针所探测的结果通过 Metrics 的形式返回。从样本返回中,用户可以获取站点dns解析耗时,响应时间,响应状态码,probe_http_ssl 指示最终冲重定向是否使用ssl和指标 probe_success 为1的成功状态等相关监控指标。可以通过 http://localhost:9090/targets 查看。如监控目标过多,都写在 prometheus.yml 中,就显得过于臃肿。可以用下面的方法:mkdir -p /data/prometheus/targets/probes #创建存放json文件的目录vim /data/prometheus/targets/probes/http_probes.json #创建json文件,内容如下:
[{"targets":["www.baidu.com","www.12306.com","www.qq.com"]}
]vim prometheus.yml- job_name: 'blackbox_http'metrics_path: /probeparams:module: [http_2xx]file_sd_configs:- files:- '/targets/probes/http_probes.json'refresh_interval: 5mrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.31.139:9115curl -X POST http://loclahost:9090/-/reload # 热加载配置

3.Prometheus 监控技术与实践 --- Exporter相关推荐

  1. Prometheus监控的最佳实践——关于监控的3项关键指标

    本文来自Weaveworks的工程师Anita Burhrle在Rancher Labs与Weaveworks联合举办的Online Meetup上的技术分享.在此次分享中,嘉宾们讨论了如何使用Ran ...

  2. 云计算监控—Prometheus监控系统(文末赠书)

    陈金窗 刘政委 张其栋 郑少斌 读完需要 20 分钟 速读仅需 7 分钟 本文摘自于<Prometheus 监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战, ...

  3. 【第7期】云计算监控——Prometheus监控系统

    本文摘自于<Prometheus监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战,梳理了云资源监控的范围及监控系统实现的一般方式.接着从开源监控软件的演进出发 ...

  4. 2021 大促 AntMonitor 总结 - 云原生 Prometheus 监控实践

    文|陈岸琦(花名:敖清 ) 蚂蚁集团高级开发工程师 负责蚂蚁 Prometheus 监控原生功能 在蚂蚁集团的落地与产品化建设 本文 6566 字 阅读 15 分钟 前 言 日志和指标是监控不可或缺的 ...

  5. Prometheus 监控系统入门与实践

    原文地址:https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practi ...

  6. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

    简介:SpringBoot 微服务的开发.发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重.而运维过程中,监控工作更是占据重要位置.那么,为了对系统的状态进行持续地观测,面向Spring ...

  7. 监控工具—Prometheus—监控Java程序

    原文作者:青蛙小白 原文地址:Prometheus监控实践:使用Prometheus监控Java应用 目录 1.Prometheus JVM Client 2.Prometheus的服务发现 3.Gr ...

  8. 基于 eBPF 的 prometheus 监控方案

    基于 eBPF 的 prometheus 监控方案 1. 前言 2. ebpf_exporter 环境搭建 3. Prometheus 与 Grafana 配置 4. ebpf_exporter 代码 ...

  9. 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库

    使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库 原文:使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库 一.背 ...

  10. GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践

    2020年8月14日-15日,GIAC 2020 全球互联网架构大会于上周五正式在深圳开幕. GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)是长期关注互联网 ...

最新文章

  1. 英伟达新核弹GPU:4nm制程800亿晶体管,20张即可承载全球互联网流量,全新Hopper架构太炸了...
  2. python爬虫有什么用处-Python爬虫的作用与地位(附爬虫技术路线图)
  3. 轻松一下——高考笑句
  4. qpython执行手机脚本精灵使用教程_Android上执行python脚本-QPython
  5. makefile通用版本
  6. 微信支付商业版 结算周期_了解商业周期
  7. WEB超链分析算法纵览
  8. 不思议迷宫c语言基础,不思议迷宫——新手入门所学
  9. 我做的第二个正则转换工具
  10. 情感分析︱网络公开的免费文本语料训练数据集汇总
  11. SQL*Plus环境下创建PLUSTRACE角色
  12. 新手指南: 手把手教你安装 Ubuntu 和 Fedora
  13. 【C语言】数组 - 冒泡排序法
  14. iPhoneXs iPhoneXs Max iPhoneXr 界面适配问题
  15. 家庭无线网络桥接扩展方案
  16. 关闭Postman v5.0自动更新
  17. nginx ajax 错误500,聊聊nginx报错499问题
  18. 深入理解java虚拟机(zz)
  19. 基于递归回溯算法实现八皇后游戏问题
  20. GraphQL(四):GraphQL工程化实践

热门文章

  1. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查...
  2. BZOJ1367 [Baltic2004]sequence 【左偏树】
  3. mybatis批量操作
  4. 性能调试工具——oprofile
  5. 第三十 访问财富进退自如 —Spring交易管理
  6. 百度贴吧 “只看某人” 小工具
  7. visreg:带你玩遍模型可视化
  8. html ul标签宽度,css - ul中每个li的不同宽度 - SO中文参考 - www.soinside.com
  9. vue axios配置 发起请求加载loading请求结束关闭loading
  10. c# json转换实例