热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Prometheus监控web站点及证书过期

文章目录配置详情安装配置black_expoter配置Prometheus支持black_expoter配置告警规则配置grafana 本文所指的web监控是指对某些访问地址或者说是接口进行监控。我们




文章目录



  • 配置详情



    • 安装配置black_expoter

    • 配置Prometheus支持black_expoter

    • 配置告警规则

    • 配置grafana




本文所指的web监控是指对某些访问地址或者说是接口进行监控。我们将通过一些实例,来介绍如何配置Prometheus 、black_exporter、grafana来监控站点的以下几个方面:



  1. 状态码

  2. 响应时间

  3. 证书过期时间

最终的效果图如下(图片建议在电脑端看):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



单个站点监控详情图

在这里插入图片描述



企业微信告警样图

Prometheus的web监控需要借助 blackbox_exporter

当然black_exporter 的功能远不止于监控web站点,它还能监控端口(TCP),DNS、UDP等,以下是官方给出的介绍


The blackbox exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP and ICMP.


我们这里只专注于web监控,其他监控不在本文介绍范围。


配置详情

配置大概分为以下几步:



  1. 安装black_exporter

  2. 配置监控目标地址

  3. 配置告警规则

  4. 配置grafana面板


安装配置black_expoter

我这里使用docker-compose进行部署(我的Prometheus、grafana、alertmanager等都定义在一个compose文件中,这里只列出black_exporter)

version: '3.7'
services:
blackbox_exporter:
container_name: blackbox_exporter
image: prom/blackbox-exporter:master
volumes:
- /data/monitor/blackbox_exporter/config/config.yml:/etc/blackbox_exporter/config.yml
ports:
- 9115:9115

配置文件/data/monitor/blackbox_exporter/config/config.yml 内容如下:

modules:
http_2xx: # 给模块取名,后面在Prometheus的配置文件中会用到该名称
prober: http # 探针类型,探针有多种类型如http、tcp、icmp、dns,不同的探针具有不同的功能
timeout: 5s # 探针检测超时时间
http:
valid_status_codes: [] # 有效的状态码,默认为200,也可以自己定义,比如你的站点304也可能是正常的
method: GET # http使用get请求
fail_if_body_not_matches_regexp: [] # 对返回结果进行正则匹配,如果未匹配成功则认为失败
tls_config:
insecure_skip_verify: true # 不安全的https跳过确认,如某些证书不合法或者过期,如果你在浏览器访问,那浏览器会让你确认是否继续,这里也是类似的意思。

配置Prometheus支持black_expoter

在prometheus.yml配置文件中加入以下内容:

- job_name: 'http_status' # 配置job名
metrics_path: /probe # 定义metric获取的路径
params:
module: [http_2xx] # 这里就是我们在black_exporter中定义的模块名
file_sd_configs: # 因需要监控的地址很多,我们这里将所有地址独立出来,后面会介绍该文件
- files:
- '/etc/prometheus/etc.d/job_web.yaml'
refresh_interval: 30s # 30秒刷新一次,当有新的监控地址时,会自动加载进来不需要重启
relabel_configs:
- source_labels: [__address__] # 当前target的访问地址,比如监控百度则为 https://baidu.com
target_label: __param_target # __param是默认参数前缀,target为参数,这里可以理解为把__address__ 的值赋给__param_target,若监控百度,则target=https://baidu.com
- source_labels: [__param_target]
target_label: instance # 可以理解为把__param_target的值赋给instance标签
- target_label: __address__
replacement: 172.33.0.33:9115 # web监控原本的target为站点的地址,但Prometheus不是直接去请求该地址,而是去请求black_exporter,故需要把目标地址替换为black_exporter的地址

job_web.yaml 样例

---
- targets:
- https://www.baidu.com/
labels:
env: pro
app: web
project: 百度
desc: 百度生产
- targets:
- https://blog.csdn.net/
labels:
env: test
app: web
project: CSDN
desc: 测试一下啦
not_200: yes # 这个自定义标签是为了标识某些地址在正常情况下不是返回200状态码

配置完成后,将在你的Prometheus看到类似以下的目标

在这里插入图片描述

我们找一个点击进去,可以看到最终跳转的地址类似如下:

http://172.33.0.33:9115/probe?module=http_2xx&target=https%3A%2F%2Fwww.baidu.com

在这里插入图片描述



指标信息截图


配置告警规则

告警规则文件

groups:
- name: web
rules:
- alert: Web访问异常
expr: probe_http_status_code{not_200 != "yes" } != 200
for: 30s
annotations:
summary: Web 访问异常{{ $labels.instance }}
labels:
Severity: '严重'
- alert: Web访问响应响应时间>3s
expr: probe_duration_seconds >= 3
for: 30s
annotations:
summary: Web 响应异常{{ $labels.instance }}
labels:
Severity: '警告'
- alert: 证书过期时间<30天
expr: probe_ssl_earliest_cert_expiry-time()<3600*24*30
annotations:
summary: Web 证书将在30天后过期 {{ $labels.instance }}
labels:
Severity: '提醒'
- alert: 证书过期时间<7天
expr: probe_ssl_earliest_cert_expiry-time()<3600*24*7
annotations:
summary: Web 证书将在30天后过期 {{ $labels.instance }}
labels:
Severity: '严重'
- alert: 证书过期时间<1天
expr: probe_ssl_earliest_cert_expiry-time()<3600*24*1
annotations:
summary: Web 证书将在30天后过期 {{ $labels.instance }}
labels:
Severity: '灾难'

配置grafana

grafana web监控我制作了2个面板,如上文中的截图。



  • 站点可用性观测中心

  • 站点可用性-单个站点

一个是所有站点的概览,另一个是单个站点的详情。

通过概览点击可以跳转到详情页。
在这里插入图片描述

grafana的配置较为繁琐,文中的面板已经开源,可以在grafana官网下载该面板 Web Monitor Center dashboard for Grafana | Grafana Labs

注意: 在笔者实际使用过程中,发现grafana的兼容性不是很好,从grafana下载下来的面板有很多不兼容,故此也可能出现兼容性问题,目前笔者grafana的版本为: v7.5.3

如果你觉得有收获,可以关注公众号。
https://segmentfault.com/img/bVbAYdT/view



推荐阅读
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
author-avatar
北干吴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有