牛逼了| 从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版进行数据可视化展示与分析。
    相关文章
    |
    4月前
    |
    数据采集 机器学习/深度学习 数据可视化
    【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
    本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
    185 2
    |
    1月前
    |
    存储 消息中间件 缓存
    构建互联网高性能WEB系统经验总结
    构建互联网高性能WEB系统经验总结
    56 16
    |
    2月前
    |
    机器学习/深度学习 数据处理 数据库
    基于Django的深度学习视频分类Web系统
    基于Django的深度学习视频分类Web系统
    56 4
    基于Django的深度学习视频分类Web系统
    |
    1月前
    |
    负载均衡 监控 算法
    论负载均衡技术在Web系统中的应用
    【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
    57 2
    |
    2月前
    |
    机器学习/深度学习 监控 数据挖掘
    基于Django和百度飞桨模型的情感识别Web系统
    基于Django和百度飞桨模型的情感识别Web系统
    43 5
    |
    3月前
    |
    网络协议 Windows
    [收藏]优化基于Win 2000系统的Web服务器性能
    [收藏]优化基于Win 2000系统的Web服务器性能
    |
    4月前
    |
    API 数据库 开发者
    解锁Web2py新境界!揭秘如何利用神秘插件系统,让你的Web项目瞬间起飞?
    【8月更文挑战第31天】Web2py是一款轻量级且功能全面的Python Web框架,其插件系统允许开发者在不修改核心代码的情况下扩展框架功能,提升项目灵活性和可扩展性。本文介绍如何利用Web2py插件系统增强Web项目,包括插件的优势、选择与安装方法,并通过集成身份认证插件的具体示例展示其应用过程。通过合理利用插件,可以显著提高开发效率和用户体验。
    60 1
    |
    4月前
    |
    缓存 NoSQL 数据库
    Web服务器与数据库优化:提升系统性能的最佳实践
    【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
    183 1
    |
    4月前
    |
    前端开发 开发者 容器
    【Web布局的革命】探索CSS Grid栅格系统,打造未来网页设计!
    【8月更文挑战第25天】在网页设计领域,布局至关重要。传统的布局方法难以满足复杂需求,CSS Grid 栅格系统因此诞生。它是一种二维布局模式,能直接控制行和列,简化复杂网格的设计。通过定义 `display: grid;` 创建网格容器,并利用 `grid-template-columns` 和 `grid-template-rows` 设置行列尺寸,轻松实现响应式布局。此外,CSS Grid 支持高级功能,如网格区域划分和对齐设置,极大提升了布局的灵活性和创意空间。随着浏览器兼容性的增强,CSS Grid 必将成为未来网页设计的关键技术之一。
    72 1
    |
    4月前
    |
    关系型数据库 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