牛逼了| 从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展示,也就是我们题图的效果。

    相关文章
    |
    3月前
    |
    JSON JavaScript 前端开发
    实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
    WebSocket协议具有低延迟和高实时性的特性,适用于实时数据推送。但是,它也依赖于网络条件,因此,在通过WebSocket发送数据时,保证网络稳定性也是重要的。以上步骤为建立基本的WebSocket传输提供了框架,并可以根据实际需求进行调整和优化。
    231 0
    |
    8月前
    |
    监控 关系型数据库 MySQL
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    168 0
    |
    11月前
    |
    存储 消息中间件 缓存
    构建互联网高性能WEB系统经验总结
    如何构建一个优秀的高性能、高可靠的应用系统对每一个开发者至关重要
    83 2
    |
    12月前
    |
    机器学习/深度学习 数据处理 数据库
    基于Django的深度学习视频分类Web系统
    基于Django的深度学习视频分类Web系统
    159 4
    基于Django的深度学习视频分类Web系统
    |
    11月前
    |
    开发框架 JavaScript 前端开发
    TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
    TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
    217 2
    |
    11月前
    |
    存储 消息中间件 缓存
    构建互联网高性能WEB系统经验总结
    构建互联网高性能WEB系统经验总结
    120 16
    |
    11月前
    |
    负载均衡 监控 算法
    论负载均衡技术在Web系统中的应用
    【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
    340 2
    |
    12月前
    |
    机器学习/深度学习 监控 数据挖掘
    基于Django和百度飞桨模型的情感识别Web系统
    基于Django和百度飞桨模型的情感识别Web系统
    193 5
    |
    API 数据库 开发者
    解锁Web2py新境界!揭秘如何利用神秘插件系统,让你的Web项目瞬间起飞?
    【8月更文挑战第31天】Web2py是一款轻量级且功能全面的Python Web框架,其插件系统允许开发者在不修改核心代码的情况下扩展框架功能,提升项目灵活性和可扩展性。本文介绍如何利用Web2py插件系统增强Web项目,包括插件的优势、选择与安装方法,并通过集成身份认证插件的具体示例展示其应用过程。通过合理利用插件,可以显著提高开发效率和用户体验。
    140 1
    |
    缓存 NoSQL 数据库
    Web服务器与数据库优化:提升系统性能的最佳实践
    【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
    333 1