• 使用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);
        }
    }
    

     

  • 相关阅读:
    Excel 相对引用与绝对引用
    SQL Update 巧用
    Delphi 多步操作产生错误,请检查每一步的状态值
    cxGrid 增加序号 (非数据库绑定模式) (测试通过)
    delphi cxgrid 使用方法
    如何使满足条件的数据显示不同的颜色
    Delphi中Format与FormatDateTime函数详解
    常用的日期时间函数
    100m和1000m网线的常见制作方法
    基于请求的分布式互斥算法
  • 原文地址:https://www.cnblogs.com/sdhjl2000/p/4925727.html
Copyright © 2020-2023  润新知