prometheus监控传统环境监控(五)SSL请求监控

为啥监控ssl请求时间

公司服务在云环境下,nginx的负载使用的是云上负载,但未配置https证书托管,而是将证书放到负载后端的每台nginx上,nginx也未做ssl证书相关优化,所以当并发达到一定量时,可能会出现某一台nginx服务器ssl请求非常慢。

每次解决需要绑定hosts去curl每一个节点,才能判断出哪台有问题。

为了快速报警哪台服务器ssl握手慢,所以采用监控方式进行探测及告警。

最开始使用了三台服务器对三台nginx进行hosts绑定,然后编写py脚本进行告警,目的能达到,但时很不方便,所以想到用docker容器进行hosts绑定,通过prometheus调用的方式采集结果。

域名:https://www.aaa.com

nginx服务器:192.168.100.1        192.168.100.2

环境:docker + python

安装模块:

pip install prometheus_client
pip install flask

探测脚本:

# cat nginx-ssl-check.py


import os
import re
import prometheus_client
from prometheus_client import Gauge
from flask import Response, Flask

app = Flask(__name__)

SSL = Gauge('SSL_handshake', 'SSL_handshake')

@app.route("/metrics")
def ssl_handshake():
    num = os.popen('curl -w "TCP handshake: %{time_connect}, SSL handshake: %{time_appconnect}\n" -so /dev/null https://www.aaa.com/').read()
    SSL_handshake = re.findall(r"SSL handshake: (.+)", num)
    f_SSL = float(SSL_handshake[0])
    SSL.set(f_SSL)
    return Response(prometheus_client.generate_latest(SSL), mimetype="text/plain")


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

启动运行后,访问

# curl http://localhost:8000/metrics

结果如下

# HELP SSL_handshake SSL_handshake

# TYPE SSL_handshake gauge

SSL_handshake 0.124363                这个就是ssl的请求时间

使用docker启动

先构建一个镜像,安装模块

# cat Dockerfile 
FROM python:3.9.13

RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip3 install prometheus_client
RUN pip3 install flask

CMD python3 /data/nginx-ssl-check.py

构建镜像

docker build -t promehtues_flask_py:v1 .

将上面的python脚本放到服务器目录中,这样是为了多个容器可以同时使用一个脚本

脚本目录:

/data/prometheus_dir/nginx_ssl_check/nginx-ssl-check.py

启动容器:

docker run -d \
-p 8000:8000 \
--name nginx-ssl-check-192.168.100.1 \
--restart=always \
--restart=on-failure:5 \
--add-host www.aaa.com:192.168.100.1 \
-v /data/prometheus_dir/nginx_ssl_check/nginx-ssl-check.py:/data/nginx-ssl-check.py \
promehtues_flask_py:v1



docker run -d \
-p 8001:8000 \
--name nginx-ssl-check-192.168.100.2 \
--restart=always \
--restart=on-failure:5 \
--add-host www.aaa.com:192.168.100.2 \
-v /data/prometheus_dir/nginx_ssl_check/nginx-ssl-check.py:/data/nginx-ssl-check.py \
promehtues_flask_py:v1

注意容器中需要绑定hosts,用于探测对应主机的ssl,而不是负载的方式探测,负载方式是无法知道当前是哪一台nginx的ssl返回慢的。

测试一下:

curl http://localhost:8000/metrics

curl http://localhost:8001/metrics

prometheus集成:

# nginx ssl 握手时间检测
  - job_name: nginx_ssl_check-192.168.100.1
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.100.200:8000']
        labels:
          instance: nginx-ssl-check-192.168.100.1

  - job_name: nginx_ssl_check-192.168.100.2
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.100.200:8001']
        labels:
          instance: nginx-ssl-check-192.168.100.2

重启prometheus

 告警:

# cat rules/nginx_ssl_check-rules.yaml 
groups:
    - name: nginx-ssl请求-监控告警
      rules:
      - alert: ssl请求告警
        expr: SSL_handshake > 3
        for: 0m
        labels:
          severity: warning
          status: 非常严重
        annotations:
          summary: "ssl请求:{{$.Labels.instance}}超过3秒"
          description: "ssl请求:{{$.Labels.instance}}---超过3秒,(当前:{{$value}})"

图形展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
源码简介:Microsoft 发布了 sscli 2.0,所谓的 sscli 就是 Shared Source CLI。基本上是 .NET Framework 2.0 的 Microsoft 实现,当然是实际发布的 .NET Framework 2.0 的一个简化版本。 sscli 2.0 中包含很多有趣的东西,包括: 01、vm - 包含了 CLI 核心实现,包括垃圾收集器、类装入器、类型系统、错误报告系统、应用程序域、配件、代理支持、反射、安全性和代码管理器。 02、csharp - 包含了使用 C++ 编写的 C# 编译器(csc.exe)和配件连接器。 03、classlibnative - 包含了公共类型和国际化例程。 04、ipcman - 包含跨进程通讯系统的源代码。 05、managedlibraries - 包含Remoting 和 SoapSerializer 的源代码。 06、utilcode - 包含被运行时、工具和 C# 编译器使用的核心例程,例如路径处理和分析、数组和散列表管理、C 运行库、字符大小写支持、库和配件载入、调试和日志支持、同步机制,还包括字符串格式化、GUID创建、错误处理、注册表以及配置访问等。 07、md - 包含元数据的读取器和编写器。 08、fjit - 包含 sscli JIT 编译器和验证器。 09、fusion - 包含配件绑定、策略检查和全局配件缓存的实现代码。 10、bcl - 包含 ECMA 基础类库的 C# 代码,包括大部分 System 名字空间下的代码。 11、debug - 包含运行时调试器的源代码。 12、ilasm - 包含 CIL 汇编器的源代码。 13、ildasm - 包含 CIL 反汇编器的源代码。 14、tools - 包含 PEVerify、clix.exe、metainfo.exe、托管调试器符号的读写器以及其它工具的源代码。 15、toolbox - 包含 caspol、strike 等其它工具的源代码。 16、dlls - 包含在构建过程中所需要的本机共享库。 17、xmlparser - 包含 XML 分析器的源代码。 18、fx - 包含主要名字空间中类的实现,包括正则表达式、XML和网络等。 19、jscript - 包含了使用 C# 编写的 JScript 编译器。 20、pal - 包含了平台适配层(PAL)的实现,包括 unix 和 win32 两个平台。 21、palrt - 包含 PAL 运行时的实现。 22、samples - 示例。 23、tests - 大量的测试用例和套件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值