当前位置: 首页 > 科技观察

实用|从0到1搭建一个web性能监控系统

时间:2023-03-17 19:43:11 科技观察

之前给研发团队做了一个简单的技术分享,主要讲了为什么要自己做监控,监控的指标维度,监控的基本流程监控和常用监控工具的介绍,最后是如何从零开始快速搭建一套监控工具。工具介绍1.Statsd是一个使用Node.js开发的网络守护进程。它的特点是通过UDP(性能好,及时挂掉不会影响主服务)或TCP监听各种数据信息,然后将聚合后的数据发送给后端服务。处理。常用的支持“Graphite”、“ElasticaSearch”、“InfluxDB”等,集成了各种语言的客户端API,这里我们使用jsocol/pystatsd:APythonclientforstatsd进行数据采集。2.Graphite是一套用Python编写的开源编程接口,主要用于收集服务器的实时状态,这里主要用作statsd的数据后端。它分为三个子项目——carbondaemon,它接收StatsD发送的原始统计数据。-Whisper是一个用于存储统计数据的时间序列数据库。-graphitewebapp是一个用于以图形方式显示统计数据的网络项目。3.Grafana是使用Go开发的。您可以在界面上设计和调整自己的统计图表,支持多种报警,可自定义。安装这里我使用了[synthesize(https://github.com/obfuscurity/synthesize)]来快速安装Graphite和Statsd包。需要注意的是,安装数据在**/opt/graphite**目录下。这里我们安装并启动了servicecarbon-cachestart#statsd数据处理会进入中转servicememcachedstart#cachingservicecollectdstart#collection服务加载optionalserviceapache2start#这个可以用nginxservicestatsitestart代替#statsd的后端服务,需要单独启动graphite-webApplication,portstart:0.0.0.0:8080,后面配置数据源需要用到。cd/opt/graphite/sudo./run-graphite-devel-server.py/opt/graphite/Grafana数据包可以手动下载安装,也可以通过apt-get安装。sudoapt-getinstallgrafana启动,访问3000端口,可以看到这样一个页面,默认账号密码:admin,admin可以通过配置github或者google登录。在登录数据采集Python端,我们使用statsd统一管理数据到监控服务器进行采集>>>importstatsd>>>c=statsd.StatsClient('localhost',8125)>>>c.incr('foo')#Increment'foo'计数器。>>>c.timing('stats.timed',320)#Recorda320ms'stats.timed'。这里我们通过Python采集数据到statsite,通过GraphiteWeb服务展示出来。配置Graphite进入Grafana后台,配置点击“DataSources”配置Graphite数据(从前端statsd采集)。data_source接下来配置对应的数据展示:add-graph至此基本的数据配置就结束了。恭喜你,你有了一个完整的监控系统。为了方便理解,补充一下,数据是从应用程序添加的,添加了agent,通过statsd采集应用程序的时间性能数据发送给服务器。通过carbonstatistics,whisperstorage最终在graphite中展现出来,这里我们使用grafana代替。Graphite原生UI展示就是我们标题图的效果。