Go语言网络监控之路_blackbox_exporter
前言
前面我已经简单解释了Prometheus与Consul结合使用,今天分享一下blackbox_exporter.
一、Blackbox_exporter是什么?
blackbox_exporter允许通过HTTP,HTTPS,DNS,TCP和ICMP对监控目标发起黑盒测试。
这个与白盒的区别一个由内而发起,黑盒是由外而发起的探测
二、Blackbox使用步骤
1.从官网下载
blackbox_exporter下载地址
源码地址:https://github.com/prometheus/blackbox_exporter
下载之后,我们这边的启动脚本为
#!/bin/bash
nohup /data/blackbox_exporter-0.19.0/blackbox_exporter &
重启的脚本为:
#!/bin/bash
curl -X POST http://127.0.0.1:9115/-/reload
以下为官网的yaml参考配置:
modules:http_2xx_example:prober: httptimeout: 5shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]valid_status_codes: [] # Defaults to 2xxmethod: GETheaders:Host: vhost.example.comAccept-Language: en-USOrigin: example.comno_follow_redirects: falsefail_if_ssl: falsefail_if_not_ssl: falsefail_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-Cookieallow_missing: trueregexp: '.*'fail_if_header_not_matches:- header: Access-Control-Allow-Originregexp: '(\*|example\.com)'tls_config:insecure_skip_verify: falsepreferred_ip_protocol: "ip4" # defaults to "ip6"ip_protocol_fallback: false # no fallback to "ip6"http_post_2xx:prober: httptimeout: 5shttp:method: POSTheaders:Content-Type: application/jsonbody: '{}'http_basic_auth_example:prober: httptimeout: 5shttp:method: POSTheaders:Host: "login.example.com"basic_auth:username: "username"password: "mysecret"http_custom_ca_example:prober: httphttp:method: GETtls_config:ca_file: "/certs/my_cert.crt"http_gzip:prober: httphttp:method: GETcompression: gziphttp_gzip_with_accept_encoding:prober: httphttp:method: GETcompression: gzipheaders:Accept-Encoding: gziptls_connect:prober: tcptimeout: 5stcp:tls: truetcp_connect_example:prober: tcptimeout: 5simap_starttls:prober: tcptimeout: 5stcp:query_response:- expect: "OK.*STARTTLS"- send: ". STARTTLS"- expect: "OK"- starttls: true- send: ". capability"- expect: "CAPABILITY IMAP4rev1"smtp_starttls:prober: tcptimeout: 5stcp: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: tcptimeout: 5stcp:query_response:- send: "NICK prober"- send: "USER prober prober prober :prober"- expect: "PING :([^ ]+)"send: "PONG ${1}"- expect: "^:[^ ]+ 001"icmp_example:prober: icmptimeout: 5sicmp:preferred_ip_protocol: "ip4"source_ip_address: "127.0.0.1"dns_udp_example:prober: dnstimeout: 5sdns:query_name: "www.prometheus.io"query_type: "A"valid_rcodes:- NOERRORvalidate_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: dnsdns:query_name: "prometheus.io"query_type: "SOA"dns_tcp_example:prober: dnsdns:transport_protocol: "tcp" # defaults to "udp"preferred_ip_protocol: "ip4" # defaults to "ip6"query_name: "www.prometheus.io"
如果有其他需求,可以参考上面提供的实例对应的改写
2.应用
从上面的配置yaml可以写了很多东西
暂时我们只使用了我们需要的内容 blackbox.yml
modules:http_2xx:prober: httptimeout: 10shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]valid_status_codes: [] # Defaults to 2xxmethod: GET# 响应符合正则表达式就失败#fail_if_body_matches_regexp:# - "OK|SUCCESS"# 响应不符合正则表达式就失败fail_if_body_not_matches_regexp:- "OK|SUCCESS"icmp: # ping方式检测 prober: icmptimeout: 5sicmp:preferred_ip_protocol: "ip4"
我们这边主要做两个方面:
1. 进行ping检测
2. 检测写的程序是否正常。因为内部有些项目已经规范返回"OK"或者"SUCCESS"两种,所以这种规范性的还是很好写的
blackbox_exporter部署成功之后就可以访问:http://127.0.0.1:9115 去验证
访问路径为
http://127.0.0.1:9115/probe?target=prometheus.io&module=http_2xx&debug=true
target: 监控的目标
module:使用的模块
debug 是否输出日志
关注以下指标
···
#HELP probe_icmp_duration_seconds Duration of icmp request by phase
#TYPE probe_icmp_duration_seconds gauge 延迟通断 注意phase=“rtt” )
probe_icmp_duration_seconds{phase=“resolve”} 0.19693231
probe_icmp_duration_seconds{phase=“rtt”} 0.159475017
probe_icmp_duration_seconds{phase=“setup”} 7.5679e-05
#HELP probe_success Displays whether or not the probe was a success
#TYPE probe_success gauge 是否返回正常(0 不正常 1 为正常)
probe_success 1
···
注意配合前面我介绍的Prometheus与 Consul 结合使用,这样就可以做到监控自助上下线,从而提高效率
事项
- 配置blackbox_exporter,最好安装node_exporter工具
- 如果是Linux注意linux中的ulimit 连接数的大小,不宜过小
关于ping还是存在一定的不足,后续我将分享fping_exporter插件针对ping的增强
总结
以上就是我分享的内容,blackbox_exporter还是应用的场景比较多的,尤其是监控方面
Go语言网络监控之路_blackbox_exporter相关推荐
- 网络编程+go+java_GO语言的进阶之路-网络编程之socket
GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...
- GO语言的进阶之路-网络编程之socket
GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...
- 揭秘双11丝滑般剁手之路背后的网络监控技术
简介:本篇将重点介绍Hologres在阿里巴巴网络监控部门成功替换Druid的最佳实践,并助力双11实时网络监控大盘毫秒级响应. 概要:刚刚结束的2020天猫双11中,MaxCompute交互式分析( ...
- 虚拟网络监控进阶之路-DeepFlow
监控对于我们来说到底有多重要? 网络监控是企业IT运维中必不可少的重要一环,传统的监控工具以监控各个服务的健康和性能为中心.而随着数字化时代的到来,我们需要一个更加全面的监控视图,能够把不同环境下所有 ...
- 网络监控系统中如何选择工业交换机?
做网络网络监控系统工程项目的朋友应该都知道,一个中大型网络监控系统不可能单独使用一台或者几台工业交换机就能实现传输效果,这个需要进行工业交换机级联:分别选择不同的工业交换机作为接入层.汇聚层和核心层. ...
- 竣达技术丨Modbus 转SNMP网络监控终端
"Modbus 转SNMP网络监控终端",一款网络监控终端产品.该产品集网络,2路RS485于一体,通过网线连接网络,由用户自定义数据采样命令和数据名称等等设备信息,不间断的采集支 ...
- 数字网络监控系统解决方案1
真正数字网络监控系统解决方案(全动态IP,局域网或广域网) Post By:2004-9-11 12:05:00 数字网络监控系统解决方案 一.XM3216.NET系统特点近年来,网络信息业取得了 ...
- 实时内核μC/OS-II下的网络监控系统的设计
实时内核μC/OS-II下的网络监控系统的设计 [日期:2008-8-5] 来源:电子技术应用 作者:高长艳 郑喜凤 丁铁夫 [字体:大 中 小] <script src="http ...
- 网上特工网络监控系统 v5.65 官网
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
最新文章
- 一个技术总监的忠告:精通那么多技术有毛用啊,你还不是不被重用?
- 第一:做学位论文期间,不要有任何度假休息的打算;第二,导师错的时候不多;第三……...
- [Silverlight资源]处理bmp,gif及ico图像类文件
- 信息系统项目管理师-信息系统项目管理基础考点笔记
- 今日arXiv精选 | 28篇EMNLP 2021最新论文
- QT的QSplineSeries类的使用
- 【2019南昌邀请赛现场赛 - G】Winner(建图,tarjan缩点 或 贪心)
- hdoj2553(N皇后问题)
- 利用MFC进行开发的通用方法介绍
- jq写的项目如何部署到静态服务器_如何把前端项目部署到服务器
- linux qt程序崩溃_【工程师分享】在MPSoC上运行基于eglfs_kms的QT应用程序
- 2 Advanced Read/Write Splitting with PHP’s MySQLnd
- Ruby First
- 贪心算法c语言部分背包,c语言背包问题_背包问题贪心算法_背包问题 贪心算法(13)...
- vb.net 自定义progressbar
- 如何将3DMAX参数重置为默认值?
- 业务安全漏洞挖掘归纳总结
- 金蝶标准版迷你版常见问题汇总
- [Xilinx ZYNQ] #4 Petalinux 入门 [黑金资料 基础教程s1 整理]
- QT串口助手(串口的查找和打开)