前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus Operator中探针的使用

Prometheus Operator中探针的使用

作者头像
云原生小白
发布2023-01-11 19:42:53
1.1K0
发布2023-01-11 19:42:53
举报
文章被收录于专栏:LokiLoki

最近小白需要对服务器和线上业务进行一些探针来定时拨测,用于对服务的存活性进行监控与告警。很早以前就知道prometheus社区提供了 blackbox 的探针方案,但一直没有关注,正好趁这次机会了解一下。

Blackbox Exporter 是 Prometheus 社区提供的官方黑盒监控解决方案,其允许用户通过:HTTP, HTTPS, DNS, TCP, ICMP 和 gRPC.的方式对网络进行探测。目前 proemtheus operator 中的 probe 资源已实现对 blackbox-exporter 的支持,本文的介绍的所有探针也均在 probe中实现。

环境准备

在使用之前,须确保你的 k8s集群内已经部署了 prometheus operator和prometheus-blackbox-exporter,如果没有安装,可使用 helm命令直接部署。

代码语言:javascript
复制
# 添加 promethues 社区 helm 源 并更新
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update prometheus-community

# 安装 prometheus
helm install prometheus-community/prometheus-operator

# 安装 blackbox-exporter
helm install prometheus-community/prometheus-blackbox-exporter

安装成功后,需手动配置 black-exporter的 configmpa,引入探针模块。

提示:可以在prometheus-blackbox-exporter的 helm values 中配置。文章为了直观,所以直接修改 configmap

代码语言:javascript
复制
  blackbox.yaml: |
    modules:
      dns:
        dns:
          preferred_ip_protocol: ip4
          query_name: kubernetes.default.svc.cluster.local
          transport_protocol: tcp
        prober: dns
      grpc:
        grpc:
          preferred_ip_protocol: ip4
          tls: true
        prober: grpc
      grpc_plain:
        grpc:
          service: service1
          tls: false
        prober: grpc
      http_2xx:
        http:
          follow_redirects: true
          preferred_ip_protocol: ip4
          valid_http_versions:
          - HTTP/1.1
          - HTTP/2.0
        prober: http
        timeout: 5s
      http_post_2xx:
        http:
          method: POST
          preferred_ip_protocol: ip4
          valid_http_versions:
          - HTTP/1.1
          - HTTP/2
        prober: http
        headers:
          content-type: application/json
        body: '{"k": "v"}'   //自定义的 body 数据
        timeout: 5s
      ping:
        icmp:
          preferred_ip_protocol: ip4
        prober: icmp
        timeout: 5s
      tcp_connect:
        prober: tcp
        timeout: 5s

以上配置,让 blackbox-exporter 加载了完整的网络探针模块。

拨测

probe实现了对 blackbox-exporter 的配置管理,极大的简化配置。

1. 拨测 ICMP

代码语言:javascript
复制
kind: Probe
apiVersion: monitoring.coreos.com/v1
metadata:
  name: icmp-probe
  namespace: kubegems-monitoring
spec:
  interval: 60s
  module: ping
  prober:
    url: prometheus-blackbox-exporter.kubegems-monitoring.svc.cluster.local:9115
  targets:
    staticConfig:
      static:
      - 114.114.114.114
      - baidu.com

通过查询PromQL count by (__name__) ({job="probe/kubegems-monitoring/icmp-probe"}),我们可以得到如下指标

代码语言:javascript
复制
probe_dns_lookup_time_seconds{}  // icmp中域名解析耗时
probe_duration_seconds{}  // 拨测耗时
probe_icmp_duration_seconds{}  // icmp 的耗时      
probe_success{}  //拨测结果

拨测 DNS

代码语言:javascript
复制
kind: Probe
apiVersion: monitoring.coreos.com/v1
metadata:
  name: dns-probe
  namespace: kubegems-monitoring
spec:
  interval: 60s
  module: dns
  prober:
    url: prometheus-blackbox-exporter.kubegems-monitoring.svc.cluster.local:9115
  targets:
    staticConfig:
      static:
      - kubegems.io

通过查询PromQL count by (__name__) ({job="probe/kubegems-monitoring/dns-probe"}),我们可以得到如下指标

代码语言:javascript
复制
probe_dns_additional_rrs{}           // 附加记录列表中的条目数量
probe_dns_answer_rrs{}                // 响应记录列表中的条目数量
probe_dns_authority_rrs{}             // 权威记录列表中的条目数量
probe_dns_duration_seconds{}     // dns解析耗时

拨测 TCP

代码语言:javascript
复制
kind: Probe
apiVersion: monitoring.coreos.com/v1
metadata:
  name: tcp-probe
  namespace: kubegems-monitoring
spec:
  interval: 60s
  module: tcp_connect
  prober:
    url: prometheus-blackbox-exporter.kubegems-monitoring.svc.cluster.local:9115
  targets:
    staticConfig:
      static:
      - kubegems.io:443

通过查询PromQL count by (__name__) ({job="probe/kubegems-monitoring/tcp-probe"}),我们可以得到如下指标

代码语言:javascript
复制
probe_dns_lookup_time_seconds{}
probe_duration_seconds{}
probe_failed_due_to_regex{}
probe_ip_addr_hash{}
probe_ip_protocol{}
probe_success{}

拨测 HTTP GET

代码语言:javascript
复制
kind: Probe
apiVersion: monitoring.coreos.com/v1
metadata:
  name: http-probe
  namespace: kubegems-monitoring
spec:
  interval: 60s
  module: http_2xx
  prober:
    path: /probe
    url: prometheus-blackbox-exporter.kubegems-monitoring.svc.cluster.local:9115
  targets:
    staticConfig:
      static:
      - https://kubegems.io

通过查询PromQL count by (__name__) ({job="probe/kubegems-monitoring/http-probe"}),我们可以得到如下指标

代码语言:javascript
复制
probe_dns_lookup_time_seconds{}  // http拨测中的 dns 查询耗时
probe_duration_seconds{}
probe_failed_due_to_regex{}
probe_http_content_length{}
probe_http_duration_seconds{}    // http handler 各阶段处理耗时
probe_http_last_modified_timestamp_seconds{}
probe_http_redirects{}
probe_http_ssl{}    // 是否启用 https
probe_http_status_code{}   // http 状态码
probe_http_uncompressed_body_length{}
probe_http_version{}
probe_ssl_earliest_cert_expiry{}  // ssl证书过期时间
probe_ssl_last_chain_expiry_timestamp_seconds{}
probe_ssl_last_chain_info{}
probe_success{}
probe_tls_version_info{}   // tls版本

拨测 GRPC

代码语言:javascript
复制
kind: Probe
apiVersion: monitoring.coreos.com/v1
metadata:
  name: grpc-probe
  namespace: kubegems-monitoring
spec:
  interval: 60s
  module: grpc_plain
  prober:
    url: prometheus-blackbox-exporter.kubegems-monitoring.svc.cluster.local:9115
  targets:
    staticConfig:
      static:
      - 172.16.23.86:30590

通过查询PromQL count by (__name__) ({job="probe/kubegems-monitoring/grpc-probe"}),我们可以得到如下指标

代码语言:javascript
复制
probe_dns_lookup_time_seconds{}
probe_duration_seconds{}
probe_grpc_duration_seconds{}
probe_grpc_healthcheck_response{}
probe_grpc_ssl{}
probe_grpc_status_code{}
probe_ssl_earliest_cert_expiry{}
probe_success{}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生小白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境准备
  • 拨测
    • 1. 拨测 ICMP
      • 拨测 DNS
        • 拨测 TCP
          • 拨测 HTTP GET
            • 拨测 GRPC
            相关产品与服务
            Prometheus 监控服务
            Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档