使用statsd+graphite+grafana构建业务及性能监控模块

近些年随着DevOps概念越来越收到重视,除了传统的Splunk,Zabbix外在开源领域也有越来越多的软件可供使用.从数据收集,时序数据库,图形展示等主要方面有各类可扩展的软件用于搭建一个数据监控平台(详细列表),Logstash+elasticsearch+kibana算是被写的比较多的,本文将偏重于业务数据及性能的监控而不是传统的机器参数的监控,所以本文以statsd+graphite+grafana在centos6上的安装配置为例。

三个组件的说明(https://blog.pkhamre.com/understanding-statsd-and-graphite/):

Statsd:一个nodejs的客户端,用于向graphite的收集器发送数据,使用各类编程语言的客户端响起发送timer,counter等统计数据后,其通过udp定时向graphite发送数据。c#客户端

Graphite:分为监听器carbon+时序数据库whisper+图形展示django-webapp。由于安装是要配置数据库等建议对django有一定了解

Grafana:一个图形展示器,相对graphite自带的展示功能更加强大灵活。配置grafana时添加新的dashbord时要注意绿色的小条是可以点击的,点击后出现配置项设置显示等。

前两者在centos上的安装请参考(安装),该文章还附带说明了安装collectd收集系统性能数据的过程,对于graphana的安装请参考官方文档。需要说明的是本人按文章配置后使用django-admin 启动程序能正常访问,但是通过apache前端登陆后在graphite的管理界面无法看到Metrics的展示最终使用了docker的方式。docker版本说明请参考github说明

客户端主要发送counter和timer两类数据进行监控和分析,counter主要用于实时展示重点业务的量是否运行正常。timer主要用于展示应用程序的调用性能等方面是否正常。

counter的集成主要是开发人员写代码发送计数信息(异常信息计数以及正常计数):

 Metrics.Configure(new MetricsConfig
{
    StatsdServerName = "X.X.X.X",
    Prefix = "MallOrderCmd"
});

Metrics.Counter("SyncOrderInfo.Error");

timer的跟踪可以考虑使用PostSharp或者Fody插件进行实现

[Serializable]
public sealed class GraphiteTimingAttribute : OnMethodBoundaryAspect
{
    [NonSerialized]
    private Stopwatch _stopwatch;

    public override void OnEntry(MethodExecutionArgs args)
    {
        _stopwatch = Stopwatch.StartNew();
        base.OnEntry(args);
    }

    public override void OnExit(MethodExecutionArgs args)
    {
            StatsdClient.Metrics.Timer(
                string.Format("{0}.{1}.{2}.{3}",
                "ApplicationName",
                System.Environment.MachineName,
                args.Method.DeclaringType.Name,
                args.Method.Name),
                (int)_stopwatch.Elapsed.TotalMilliseconds
            );
        base.OnExit(args);
    }

    public override void OnException(MethodExecutionArgs args)
    {
        StatsdClient.Metrics.Counter(
            string.Format("{0}.{1}.error",
            args.Method.DeclaringType.Name,
            args.Method.Name),
            (int)_stopwatch.Elapsed.TotalMilliseconds);
        base.OnException(args);
    }
}

时间: 2024-10-11 04:07:38

使用statsd+graphite+grafana构建业务及性能监控模块的相关文章

#研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案

郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词:监控.dashboard.PHP.graphite.statsd.whisper.carbon.grafana.influxdb.Python 本文档适用人员:研发和运维员工 提纲: 监控平台要做到什么程度?为什么要自己做? 几个通用技术问题 绘图所依赖的数据如何收集?如何加工?如何存储? 图形如何绘制,各种指标如何叠加? 拓扑关系如何绘制? 技术选型哲学 最终选了statsd+graphite 数据的采集 数据存储的粒度 天机的技术

高并发下linux系统、业务结构性能优化——index(不断更新)

工作中零零散散写了些博客,总结了些知识,当然是从运维的角度.东西一多就乱,闲时突发奇想,这些东西能不能打在一个点上,如果能有一个东西把所有内容串起来并且有一个主题岂不妙哉,也方便查阅和阅读,就像一个网站有了内容后需要一个index主页一样,哈哈,然后就有了这篇置顶博文. 对于主题,我喜欢研究业务架构和大并发相关知识,就定为"高并发下linux系统.业务结构性能优化"了,现有目录结构是根据工作经验进行的梳理,以后会动态修改.我的知识非常有限,不乏有些错误认识,不管怎样抛砖引玉分享出来,希

Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台

完成一套精准,漂亮图形化监控系统从这里开始第一步 Telegraf是收集和报告指标和数据的代理 它是TICK堆栈的一部分,是一个用于收集和报告指标的插件驱动的服务器代理.Telegraf拥有插件或集成功能,可直接从运行的系统获取各种指标,从第三方API获取指标,甚至通过StatsD和Kafka消费者服务来收听指标.它还具有输出插件,可将指标发送到各种其他数据存储,服务和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ

平台中构建业务表时报sql语法错误

今天在构建一个只读业务表时,保存的时候报了下图中的这个错误:  一开始还以为自己代码写错了,于是将代码复制到平台中sql执行界面运行:发现是运行成功的: 那这是怎么回事呢? 初步分析是代码中空格打的不对,可能存在用tab键打的空格. 排查方法:将写好的sql代码一层一层的写入业务表,通过平台业务表编辑界面中的校验代码功能,校验写入的代码:遇到报图一中错误时,重点排查代码中的空格 原文地址:http://bbs.delit.cn/thread-1057-1-1.html 转载请注明出处: 撰写人:

利用K2和Microsoft Dynamics CRM构建业务App的5大理由

Microsoft Dynamics CRM提供了一个绝佳的客户关系管理平台,使您能够创建各种以客户为中心的解决方案.然而,通过将K2的企业业务流程功能与Microsoft Dynamics CRM相结合,您有机会构建为企业量身定制的业务应用程序.以下仅列举K2与Microsoft Dynamics CRM结合可为您带来的五大优势. 一.企业流程 Microsoft Dynamics CRM包含了一些流程功能,这些功能对于短暂的(几秒钟)实体操作流程来说至关重要,比如发布新信息时创建电话跟进流程

Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台之应用数据分析

本节将引入完美的granafa仪表板,在上节的基础上,并提出自己的一些监控数据的总结和看法 你可以有一个类似于这个的Dashboard,会引入监控Zimbra协作 本节环境采用的是centos7系统,配置跟上节介绍的一样,但是Telegraf是企业级监控加入很多可靠的监控插件,非常有用的一些参数,随之也给自 己的监控数据分析带来了复杂度. Telegraf:它负责收集我们通过配置文件传递的所有数据,Telegraf收集我们配置的输出结果,例如CPU / RAM / LOAD或Nginx,Mari

Grafana+Prometheus监控mysql性能

#cmd /usr/local 今天讲一下如何监控服务器中的mysql数据库的性能 一.数据库操作 1.mysql启动 #service mysqld start #启动数据库 #service mysqld stop #关闭数据库 #service mysqld restart #重启数据库 2.进入 mysql mysql -u root -p 3.新增监控 mysql 账号 #use mysql #GRANT ALL PRIVILEGES ON *.* TO '帐号'@'localhost

用Nginx+Telegraf+Influxb+Grafana构建高逼格Nginx集群监控系统

日常生产环境搭建了Nginx集群后,就需要继续深入研究的就是日常Nginx监控. Nginx如何监控?相信百度就可以找到:nginx-status 通过Nginx-status,实时获取到Nginx监控数据后,如何和现有监控系统集成?一个很好的解决方案: Nginx+Telegraf+Influxdb+Grafana 即通过Telegraf监控插件定时收集Nginx的监控状态,存储到时序数据库Influxdb中,然后通过Grafana展现即可. 一.Nginx启用nginx-status功能 源

prometheus statsd 监控

Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作.google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus.现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控. 介绍 http://www.cnblogs.com/vovlie/p/Prometh