Prometheus(八)-网络嗅探-黑盒监控_blackbox_exporter-0

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 0.011633673
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.117332275
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0
# HELP probe_http_content_length Length of http content response
# TYPE probe_http_content_length gauge
probe_http_content_length 81
# HELP probe_http_duration_seconds Duration of http request by phase, summed over all redirects
# TYPE probe_http_duration_seconds gauge
probe_http_duration_seconds{phase="connect"} 0.055551141
probe_http_duration_seconds{phase="processing"} 0.049736019
probe_http_duration_seconds{phase="resolve"} 0.011633673
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 3.8919e-05
# HELP probe_http_redirects The number of redirects
# TYPE probe_http_redirects gauge
probe_http_redirects 0
# HELP probe_http_ssl Indicates if SSL was used for the final redirect
# TYPE probe_http_ssl gauge
probe_http_ssl 0
# HELP probe_http_status_code Response HTTP status code
# TYPE probe_http_status_code gauge
probe_http_status_code 200
# HELP probe_http_version Returns the version of HTTP of the probe response
# TYPE probe_http_version gauge
probe_http_version 1.1
# HELP probe_ip_protocol Specifies whether probe ip protocol is IP4 or IP6
# TYPE probe_ip_protocol gauge
probe_ip_protocol 4
# HELP probe_success Displays whether or not the probe was a success
# TYPE probe_success gauge
probe_success 1

从返回的样本中,用户可以获取站点的DNS解析耗时、站点响应时间、HTTP响应状态码等等和站点访问质量相关的监控指标,从而帮助管理员主动的发现故障和问题。

与Prometheus集成

接下来,只需要在Prometheus下配置对Blockbox Exporter实例的采集任务即可。最直观的配置方式

- job\_name: baidu_http2xx_probe
  params:
    module:
    - http_2xx
    target:  
    - baidu.com
  metrics\_path: /probe
  static\_configs:
  - targets:
    - 127.0.0.1:9115
- job\_name: prometheus_http2xx_probe
  params:
    module:
    - http_2xx
    target:
    - prometheus.io
  metrics\_path: /probe
  static\_configs:
  - targets:
    - 127.0.0.1:9115

假如我们有N个目标站点且都需要M种探测方式,那么Prometheus中将包含N * M个采集任务,从配置管理的角度来说显然是不可接受的。

这里我们也可以采用Relabling的方式对这些配置进行简化,配置方式如下:

scrape\_configs:
  - job\_name: 'blackbox'
    metrics\_path: /probe
    params:
      module: [http_2xx]
    static\_configs:
      - targets:
        - http://prometheus.io    # Target to probe with http.
        - https://prometheus.io   # Target to probe with https.
        - http://example.com:8080 # Target to probe with http on port 8080.
    relabel\_configs:
      - source\_labels: [__address__]
        target\_label: __param_target
      - source\_labels: [__param_target]
        target\_label: instance
      - target\_label: __address__
        replacement: 127.0.0.1:9115 

http://127.0.0.1:9115/probe?module=http_2xx&target=baidu.com

  • 第1步,根据 static_configs.targets 实例的地址,写入 __param_target 标签中。__param_<name> 形式的标签表示,采集任务时会在请求目标地址中添加<name>参数的值,等同于params的设置;
  • 第2步,获取 __param_target的值,并覆写到 instance 标签中;
  • 第3步,覆写Target实例的__address__标签值为BlockBox Exporter实例的访问地址。

blackbox.yml

modules:
  http_2xx:
    prober: http
  http_post_2xx:
    prober: http
    http:
      method: POST
      preferred_ip_protocol: "ip4"
  tcp_connect:
    prober: tcp
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  grpc:
    prober: grpc
    grpc:
      tls: true
      preferred_ip_protocol: "ip4"
  grpc_plain:
    prober: grpc
    grpc:
      tls: false
      service: "service1"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
      - send: "SSH-2.0-blackbox-ssh-check"
  irc_banner:
    prober: tcp
    tcp:
      query_response:
      - send: "NICK prober"
      - send: "USER prober prober prober :prober"
      - expect: "PING :([^ ]+)"
        send: "PONG ${1}"
      - expect: "^:[^ ]+ 001" 
  icmp:
    prober: icmp
  icmp_ttl5:
    prober: icmp
    timeout: 5s
    icmp:
      ttl: 5

example.yml

modules:
 http_2xx_example:
   prober: http
   timeout: 5s
   http:
     valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
     valid_status_codes: []  # Defaults to 2xx
     method: GET
     headers:
       Host: vhost.example.com
       Accept-Language: en-US
       Origin: example.com
     no_follow_redirects: false
     fail_if_ssl: false
     fail_if_not_ssl: false
     fail_if_body_matches_regexp:
       - "Could not connect to database"
     fail_if_body_not_matches_regexp:
       - "Download the latest version here"
     fail_if_header_matches: # Verifies that no cookies are set
       - header: Set-Cookie
         allow_missing: true
         regexp: '.*'
     fail_if_header_not_matches:
       - header: Access-Control-Allow-Origin
         regexp: '(\*|example\.com)'
     tls_config:
       insecure_skip_verify: false
     preferred_ip_protocol: "ip4" # defaults to "ip6"
     ip_protocol_fallback: false  # no fallback to "ip6"
 http_with_proxy:
   prober: http
   http:
     proxy_url: "http://127.0.0.1:3128"
     skip_resolve_phase_with_proxy: true
 http_with_proxy_and_headers:
   prober: http
   http:
     proxy_url: "http://127.0.0.1:3128"
     proxy_connect_header:
       Proxy-Authorization:
         - Bearer token
 http_post_2xx:
   prober: http
   timeout: 5s
   http:
     method: POST
     headers:
       Content-Type: application/json
     body: '{}'
 http_basic_auth_example:
   prober: http
   timeout: 5s
   http:
     method: POST
     headers:
       Host: "login.example.com"
     basic_auth:
       username: "username"
       password: "mysecret"
 http_custom_ca_example:
   prober: http
   http:
     method: GET
     tls_config:
       ca_file: "/certs/my_cert.crt"
 http_gzip:
   prober: http
   http:
     method: GET
     compression: gzip
 http_gzip_with_accept_encoding:
   prober: http
   http:
     method: GET
     compression: gzip
     headers:
       Accept-Encoding: gzip
 tls_connect:
   prober: tcp
   timeout: 5s
   tcp:
     tls: true
 tcp_connect_example:
   prober: tcp
   timeout: 5s
 imap_starttls:
   prober: tcp
   timeout: 5s
   tcp:
     query_response:
       - expect: "OK.*STARTTLS"
       - send: ". STARTTLS"
       - expect: "OK"
       - starttls: true
       - send: ". capability"
       - expect: "CAPABILITY IMAP4rev1"
 smtp_starttls:
   prober: tcp
   timeout: 5s
   tcp:
     query_response:
       - expect: "^220 ([^ ]+) ESMTP (.+)$"
       - send: "EHLO prober\r"
       - expect: "^250-STARTTLS"
       - send: "STARTTLS\r"
       - expect: "^220"
       - starttls: true
       - send: "EHLO prober\r"
       - expect: "^250-AUTH"
       - send: "QUIT\r"
 irc_banner_example:
   prober: tcp
   timeout: 5s
   tcp:
     query_response:
       - send: "NICK prober"
       - send: "USER prober prober prober :prober"
       - expect: "PING :([^ ]+)"
         send: "PONG ${1}"
       - expect: "^:[^ ]+ 001"
 icmp_example:
   prober: icmp
   timeout: 5s
   icmp:
     preferred_ip_protocol: "ip4"
     source_ip_address: "127.0.0.1"
 dns_udp_example:
   prober: dns
   timeout: 5s
   dns:
     query_name: "www.prometheus.io"
     query_type: "A"
     valid_rcodes:
       - NOERROR
     validate_answer_rrs:
       fail_if_matches_regexp:
         - ".*127.0.0.1"
       fail_if_all_match_regexp:
         - ".*127.0.0.1"
       fail_if_not_matches_regexp:
         - "www.prometheus.io.\t300\tIN\tA\t127.0.0.1"
       fail_if_none_matches_regexp:
         - "127.0.0.1"
     validate_authority_rrs:
       fail_if_matches_regexp:
         - ".*127.0.0.1"
     validate_additional_rrs:
       fail_if_matches_regexp:
         - ".*127.0.0.1"
 dns_soa:
   prober: dns
   dns:
     query_name: "prometheus.io"
     query_type: "SOA"
 dns_tcp_example:
   prober: dns
   dns:
     transport_protocol: "tcp" # defaults to "udp"
     preferred_ip_protocol: "ip4" # defaults to "ip6"
     query_name: "www.prometheus.io"

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
blackbox_exporter 是一个 Prometheus 监控工具,专门用于对黑盒系统进行监控。以下是一个使用 blackbox_exporter 监控 HTTP 服务的示例: 1. 安装 blackbox_exporter: ``` $ wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz $ tar xvfz blackbox_exporter-0.18.0.linux-amd64.tar.gz $ cd blackbox_exporter-0.18.0.linux-amd64 $ sudo mv blackbox_exporter /usr/local/bin/ ``` 2. 配置 blackbox_exporter: 创建一个配置文件,例如 `blackbox.yml`: ``` modules: http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] method: GET no_follow_redirects: false fail_if_ssl: false scrape_configs: - job_name: http metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - http://www.example.com - https://www.example.com relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: localhost:9115 ``` 3. 启动 blackbox_exporter: ``` $ blackbox_exporter --config.file=blackbox.yml ``` 4. 配置 Prometheus: 在 Prometheus 的配置文件中添加如下内容: ``` scrape_configs: - job_name: blackbox metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - http://localhost:9115 relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_module] target_label: __metrics_path__ replacement: /probe ``` 这样,Prometheus 就可以定期从 blackbox_exporter 获取监控

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值