首页主机资讯CentOS Python应用如何监控

CentOS Python应用如何监控

时间2025-11-26 11:53:03发布访客分类主机资讯浏览1449
导读:监控目标与分层 建议将监控分为四层: 基础设施层:CPU、内存、磁盘 I/O、网络; 进程与应用层:Python 进程的 RSS、线程数、句柄数、GC、异常与响应时延; 业务与日志层:关键业务指标(QPS、成功率、延迟分位)与错误日志;...

监控目标与分层

  • 建议将监控分为四层:
    1. 基础设施层:CPU、内存、磁盘 I/O、网络;
    2. 进程与应用层:Python 进程的 RSS、线程数、句柄数、GC、异常与响应时延
    3. 业务与日志层:关键业务指标(QPS、成功率、延迟分位)与错误日志;
    4. 可视化与告警层:时序可视化与阈值/异常告警。

快速落地方案 Prometheus + Grafana

  • 在 CentOS 上部署 Prometheus 采集时序数据,使用 Grafana 做可视化与告警面板。
  • Python 应用侧用 prometheus_client 暴露指标端点,示例:
    • 安装:pip install prometheus-client
    • 代码示例:
      from prometheus_client import start_http_server, Counter, Histogram, Gauge
      import time, random
      
      # 启动指标服务,端口 8000
      start_http_server(8000)
      
      REQUEST_DURATION = Histogram('app_request_duration_seconds', 'Request latency', ['method', 'endpoint'])
      REQUEST_COUNT = Counter('app_requests_total', 'Total requests', ['method', 'endpoint', 'status'])
      MEM_RSS_GAUGE = Gauge('app_process_rss_bytes', 'Process RSS in bytes')
      
      def handle_request(method, endpoint):
          start = time.time()
          # 模拟业务
          time.sleep(random.uniform(0.01, 0.2))
          status = "200"
          # 记录指标
          REQUEST_DURATION.labels(method, endpoint).observe(time.time() - start)
          REQUEST_COUNT.labels(method, endpoint, status).inc()
          # 更新RSS(需在目标进程中采集)
          try:
              import psutil, os
              p = psutil.Process(os.getpid())
              MEM_RSS_GAUGE.set(p.memory_info().rss)
          except Exception:
              pass
      
    • Prometheus 抓取配置片段(prometheus.yml):
      scrape_configs:
        - job_name: 'python_app'
          static_configs:
            - targets: ['localhost:8000']
      
    • Grafana 导入官方或社区 Python/Flask/Prometheus 仪表盘,配置阈值告警(如 P95 延迟、5xx 比例、进程 RSS 超过阈值)。

系统与应用内监控工具

  • 系统资源与命令行工具
    • psutil:在应用内采集进程与系统指标(CPU%、内存、磁盘、网络)。
    • dstat / nmon:终端实时查看 CPU、内存、磁盘、网络等综合指标。
    • glances:跨平台监控,支持终端与 Web 界面,适合临时排查与值守。
    • 常用命令:top/htopvmstatfreeiostatss 等用于快速定位瓶颈。
  • 性能剖析与热点定位
    • py-spy:对运行中的 Python 进程进行低开销采样,生成火焰图/调用栈,便于定位慢函数与线程争用。
    • 示例:py-spy record -o profile.svg --pid < PID> py-spy top --pid < PID>

日志与业务指标

  • 日志可观测性
    • 使用 Python 标准库 logging 输出结构化日志(JSON 便于检索),配合 tail -fgrep 实时查看错误:
      import logging
      logging.basicConfig(
          filename='app.log', level=logging.INFO,
          format='%(asctime)s %(levelname)s %(name)s %(message)s'
      )
      logging.error("业务异常", extra={
      "trace_id": "abc-123"}
          )
      
    • 实时查看错误:tail -f app.log | grep "ERROR"
  • 业务与探针指标
    • 在代码中埋点关键路径的 Counter/Gauge/Histogram(如请求数、错误数、延迟分位、队列长度、缓存命中率)。
    • 暴露 /health/metrics 端点:健康检查用于服务发现与就绪探针,/metrics 供 Prometheus 抓取。

告警与可视化最佳实践

  • 建议按“主机/容器层—进程层—应用层—业务层”建立指标树,Grafana 面板按层级组织;
  • 告警规则聚焦可行动作:
    • 基础设施:节点 CPU> 80% 持续5分钟可用内存< 10%磁盘使用率> 85%
    • 进程:Python 进程 RSS 持续增长线程数异常句柄泄漏
    • 应用:P95/P99 延迟升高、5xx 比例上升、关键依赖超时;
  • 运行方式:
    • systemd 托管应用与 Prometheus Node Exporter,确保进程崩溃自动拉起;
    • py-spy 采集与 Prometheus 抓取配置合适的 scrape_interval(如 15s),避免频繁开销;
    • 定期回归火焰图与慢查询,结合错误日志做根因分析。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Python应用如何监控
本文地址: https://pptw.com/jishu/756543.html
如何检查CentOS上Python是否安装成功 Python脚本在CentOS上怎么运行

游客 回复需填写必要信息