牛逼了| 从0到1 搭建Web性能监控系统

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 牛逼了| 从0到1 搭建Web性能监控系统

image.png


本文原文2017年首发在我的个人博客www.ipengtao.com,今天想到后续文章可能会提及,提前给大家分享一下,方便提及的时候大家有印象。




之前给研发团队简单做了一次技术分享,主要讲了为什么我们要自己做监控,监控的指标维度,监控基本流程及常见监控工具介绍,最后如何从零快速开始搭建一套自己的监控工具,更多请在「涛哥聊Python」后台回复「PPT」。


工具介绍

image.png

1. Statsd 是一个使用Node开发网络守护进程,它的特点是通过UDP(性能好,及时挂了也不影响主服务)或者TCP来监听各种数据信息,然后发送聚合数据到后端服务进行处理。常见支持的「Graphite」,「ElasticaSearch」,「InfluxDB」 等等 ,它集成了各种语言的客户端API,这里我们使用了jsocol/pystatsd: A Python client for statsd进行数据收集。


2. Graphite 是一套Python写的开源编程接口,主要是用来收集服务器的及时状态,在这里主要作为statsd的数据后端。分为了三个子项目

- carbon 守护进程,接收StatsD发送过来的原始统计数据。

- whisper 用来存储统计数据的时间序列数据库。

- graphite webapp 用来图形化展示统计数据的web项目


3. Grafana 使用Go开发,可以在界面上设计调整自己的统计图表,支持多重报警,可定制化。

    安装

    在这里我使用了[synthesize(https://github.com/obfuscurity/synthesize)进行快速安装Graphite和Statsd包,这里面需要注意安装数据在 **/opt/graphite ** 目录下面。这里面我们安装启动了

    service carbon-cache start # statsd数据处理后会进入中转
    service memcached start # 缓存
    service collectd start # 收集服务负载可选
    service apache2 start # 这可以通过使用nginx替换
    service statsite start # statsd的后端服务

    这里面需要单独启动graphite-web应用,端口启动:0.0.0.0:8080,后面配置数据源需要使用。

    cd /opt/graphite/
    sudo ./run-graphite-devel-server.py /opt/graphite/

    Grafana数据包可以通过手动下载安装也可以通过apt-get 安装

    • sudo apt-get install grafana

    启动之后访问3000端口就能看到这样一个页面,默认的帐号密码:admin,admin可以通过配置github或者google登录。

    image.png

    数据收集

    Python端我们使用statsd进行数据统一打点到到监控服务器收集

    >>> import statsd
    >>> c = statsd.StatsClient('localhost', 8125)
    >>> c.incr('foo') # Increment the 'foo' counter.
    >>> c.timing('stats.timed', 320) # Record a 320ms 'stats.timed'.

    这里面我们通过Python把数据收集到statsite,通过Graphite Web服务来进行展示。

    配置Graphite

    进入Grafana后台,进行配置点击 「Data Sources」进行配置Graphite的数据(来自前端statsd收集)

    image.png

    接下来配置对应的数据展示:

    image.png

    到此基本的数据配置就完了,恭喜你拥有了一个完整的监控系统。更多请在「涛哥聊Python后台回复「PPT


    为了方便理解这里我补充一下,数据从应用内,添加agent,把应用的时间性能数据通过statsd收集发送到服务端,通过carbon统计,whisper存储最后展示在graphite,其中这里面我们用grafana来替代了graphite原生的UI展示,也就是我们题图的效果。

    相关实践学习
    通过可观测可视化Grafana版进行数据可视化展示与分析
    使用可观测可视化Grafana版进行数据可视化展示与分析。
    相关文章
    |
    1月前
    |
    数据采集 机器学习/深度学习 数据可视化
    【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
    本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
    |
    1月前
    |
    JSON API 数据处理
    Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
    【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
    134 2
    |
    1月前
    |
    开发框架 缓存 前端开发
    基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
    基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
    |
    3月前
    |
    前端开发 JavaScript Java
    计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
    计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
    |
    17天前
    |
    缓存 NoSQL 数据库
    Web服务器与数据库优化:提升系统性能的最佳实践
    【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
    32 1
    |
    20天前
    |
    前端开发 开发者 容器
    【Web布局的革命】探索CSS Grid栅格系统,打造未来网页设计!
    【8月更文挑战第25天】在网页设计领域,布局至关重要。传统的布局方法难以满足复杂需求,CSS Grid 栅格系统因此诞生。它是一种二维布局模式,能直接控制行和列,简化复杂网格的设计。通过定义 `display: grid;` 创建网格容器,并利用 `grid-template-columns` 和 `grid-template-rows` 设置行列尺寸,轻松实现响应式布局。此外,CSS Grid 支持高级功能,如网格区域划分和对齐设置,极大提升了布局的灵活性和创意空间。随着浏览器兼容性的增强,CSS Grid 必将成为未来网页设计的关键技术之一。
    42 1
    |
    20天前
    |
    关系型数据库 MySQL Linux
    【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
    【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
    【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
    |
    22天前
    |
    运维 Prometheus 监控
    在Linux中,如何进行系统性能监控?
    在Linux中,如何进行系统性能监控?
    |
    25天前
    |
    Java Docker 微服务
    微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
    微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
    60 1
    |
    1月前
    |
    数据采集 数据可视化 关系型数据库
    【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
    本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。