
前言服务器CPU、内存和进程状态全部正常并不代表用户一定能够访问服务。DNS解析失败、网络丢包、端口被防火墙拦截、HTTPS证书异常或反向代理返回错误都可能导致网站和API从外部不可用但这些问题未必会体现在应用内部指标中。Blackbox Exporter提供了另一种监控视角。它不读取服务内部状态而是模拟外部用户主动发起HTTP、TCP、ICMP或DNS探测检查目标是否可达、响应是否成功以及耗时是否异常。Prometheus负责定时执行探测并保存结果再根据成功率、响应时间和丢包情况触发告警。这套组合适合网站、API、服务器端口、网络链路和第三方接口的可用性监控。结合cpolar后还可以在异地打开内网Prometheus面板查看探测结果和告警状态。公网开放监控页面时应增加登录认证或访问限制避免直接暴露内部目标地址和运行信息。本文将带你快速上手 Blackbox Exporter教你如何用 Prometheus 实现对网站、API、端口乃至整个链路的主动可用性监控真正做到服务是否在线数据说了算而不是用户投诉说了算。1.ubuntu安装Blackbox_Exporter监控数据通过以下命令创建一个用于存放Blackbox_Exporter的目录 /appmkdir/app进入到/app目录下cd/app从prometheus官网下载压缩文件https://prometheus.io/download/下载适用于Linux系统的文件。下载完成后记住下载路径。手动上传到/app下载好的Blackbox_Exporter文件。上传成功后解压tar-zxvfblackbox_exporter-0.27.0.linux-arm64.tar.gz改名方便记忆mvblackbox_exporter-0.27.0.linux-arm64 blackbox_exporter将Altermanager配置为系统服务:cd/usr/lib/systemd/systemvimblackbox_exporter.service[Unit]Descriptionhttps://prometheus.io[Service]Restarton-failureExecStart/app/alertmanager--config.file/app/alertmanager.yml[Install]WantedBymulti-user.target加载system文件启动alertmanager这个服务并设置开机启动systemctl daemon-reload systemctl start blackbox_exporter.service systemctlenableblackbox_exporter.service启动成功后访问blackbox_exporterip9115默认端口为 9115。2.配置prometheus监控Blackbox_Exporter指标服务进程正常用户却连不上问题可能出在网络层。通过 Prometheus Blackbox Exporter 的 ping 探测我们可以实时监控丢包率——一旦超过 50%立即告警提前发现链路异常防患于未然。跟我一起操作吧~以防万一怕操作错误先把原来的配置文件先备份之后配置配置文件mvblackbox.yml blackbox.ymlviblackbox.ymlmodules: http_2xx: prober: http http_post_2xx: prober: http http: method: POST tcp_connect: prober: tcp pop3s_banner: prober: tcp tcp: query_response: - expect:^OKtls:truetls_config: insecure_skip_verify:falsessh_banner: prober: tcp tcp: query_response: - expect:^SSH-2.0-irc_banner: prober: tcp tcp: query_response: - send:NICK prober- send:USER prober prober prober :prober- expect:PING :([^ ])send:PONG${1}- expect:^:[^ ] 001icmp: prober: icmp icmp: prober: icmp timeout: 5s icmp: preferred_ip_protocol:ip4重新启动black_exporter服务systemctl restart blackbox_exporter.service修改prometheus配置文件viprometheus.yml添加告警配置添加自己想监控的地址- job_name:httpmetrics_path: /probe scrape_interval: 60s params: module:[http_2xx]static_configs: - targets: - http://192.168.50.134:9100/ relabel_configs: - source_labels:[__address__]target_label: __param_target - source_labels:[__param_target]target_label: instance - target_label: __address replacement:192.168.50.134:9115 - job_name:ping_monitormetrics_path: /probe params: module:[icmp]static_configs: - targets: - www.baidu.com - www.google.com relabel_configs: - source_labels:[__address__]target_label: __param_target - source_labels:[__param_target]target_label: instance - target_label: __address__ replacement:192.168.50.134:9115重启prometheus服务后可以查看到我们添加的指标;配置告警规则groups: - name: icmp-loss-alerts rules: - alert: HighPingLossRate expr:|1- avg_over_time(probe_success{jobping_monitor}[5m])0.5for: 2m labels: severity: warning annotations: summary:高 Ping 丢包率 (实例: {{$labels.instance }})description:目标 {{$labels.instance }} 在过去 5 分钟内的 Ping 丢包率超过 50%当前丢包率: {{$value| printf\%.2f\}}重启prometheus服务systemctl restart prometheus重启后就可以看到我们配置好的告警啦想随时随地查看监控数据只要给 Prometheus 配一个公网地址在家也能轻松访问接下来跟我一起用cpolar快速实现内网穿透几条命令搞定远程监控3.安装cpolar实现随时随地开发cpolar 可以将你本地电脑中的服务如 SSH、Web、数据库映射到公网。即使你在家里或外出时也可以通过公网地址连接回本地运行的开发环境。❤️以下是安装cpolar步骤使用一键脚本安装命令sudocurlhttps://get.cpolar.sh|sh安装完成后执行下方命令查看cpolar服务状态如图所示即为正常启动sudosystemctl status cpolarCpolar安装和成功启动服务后在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可4.配置公网地址打开浏览器访问本地9200端口使用cpolar账户密码登录即可,登录后即可对隧道进行管理。登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道隧道名称可自定义本例使用了:prometheus注意不要与已有的隧道名称重复协议http本地地址9090域名类型随机域名地区选择China Top点击创建创建成功后打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址接下来就可以在其他电脑或者移动端设备异地上使用地址访问。访问成功。5.保留固定公网地址使用cpolar为其配置二级子域名该地址为固定地址不会随机变化。点击左侧的预留选择保留二级子域名地区选择china top然后设置一个二级子域名名称我这里演示使用的是prometheus大家可以自定义。填写备注信息点击保留。登录cpolar web UI管理界面点击左侧仪表盘的隧道管理——隧道列表找到所要配置的隧道prometheus点击右侧的编辑。修改隧道信息将保留成功的二级子域名配置到隧道中域名类型选择二级子域名Sub Domain填写保留成功的二级子域名地区: China Top点击更新更新完成后打开在线隧道列表此时可以看到随机的公网地址已经发生变化地址名称也变成了保留和固定的二级子域名名称。最后我们使用固定的公网地址在任意设备的浏览器中访问可以看到成功访问本地部署的prometheus页面这样一个永久不会变化的二级子域名公网网址即设置好了。这样我们就可以随时随地监控不用担心在家无法监控设备总结Prometheus与Blackbox Exporter补足了传统主机监控的外部视角。内部指标回答的是服务器和进程是否正常黑盒探测回答的则是网站、端口和网络链路是否真的能够被访问两类监控结合后才能更完整地判断服务状态。cpolar可以解决Prometheus面板的异地访问问题但不需要将Blackbox Exporter本身无保护地暴露到公网。长期使用时应根据业务设置合理的探测频率、超时时间和告警阈值减少网络波动带来的误报。