近些年随着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);
}
}

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

  1. 第三十三章 metrics(1) - graphite搭建 + whisper存储模式 + 高精度向低精度聚合方式 + 集成StatsD + 集成grafana

    组件介绍: carbon:Carbon实际上是一系列守护进程,组成一个Graphite安装的存储后端.这些守护进程用一个名为Twisted的事件驱动网络引擎监听时间序列数据.Twisted框架让Car ...

  2. AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控 (无心打造文字不喜勿喷谢谢!)

    概述 Prometheus的主要特点 组件 结构图 适用场景 不适用场景 安装node_exporter,系统性能指数收集(收集系统性能情况) 下载文件 解压并复制node_exporter应用程序到 ...

  3. statsd+graphite

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

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

    郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词:监控.dashboard.PHP.graphite.statsd.whisper.carbon.grafana.influxdb.Pyth ...

  5. Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警

    前言 这次主要分享通过Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警方案.通过执行耗时,定位哪些接口拖累了服务的性能:通过请求频次,设置适当的限流 ...

  6. 【jmeter】基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...

  7. 使用 Prometheus + Grafana 对 Kubernetes 进行性能监控的实践

    1 什么是 Kubernetes? Kubernetes 是 Google 开源的容器集群管理系统,其管理操作包括部署,调度和节点集群间扩展等. 如下图所示为目前 Kubernetes 的架构图,由 ...

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

    完成一套精准,漂亮图形化监控系统从这里开始第一步 Telegraf是收集和报告指标和数据的代理 它是TICK堆栈的一部分,是一个用于收集和报告指标的插件驱动的服务器代理.Telegraf拥有插件或集成 ...

  9. jmeter --- 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示

    转自:https://blog.csdn.net/RickyOne_RR/article/details/50637839 本文主要讲述如何利用JMeter监听器Backend Listener,配合 ...

随机推荐

  1. sql报句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))

    是由于数据库连接资源被耗尽或者用完没被释放导致的. 我在字符串中加了启用连接池好了. 如果错误信息为:sql 无效操作.连接被关闭 也是这个问题导致的.

  2. 为什么我坚持学习C语言?

    c语言令无数人头疼,有意躲避! linux操作系统有c: glibc的c运行时库有c: mysql有c: php的底层有c: nosql层有c: 甚至其他的curl.nginx等等都有c: 每当问题追 ...

  3. js基础知识点总结

    如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避免全局变量和方法(命 ...

  4. iOS 清除web cookies

    NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; ...

  5. innodb的存储结构

    如下所示,innodb的存储结构包含:表空间,段,区,页(块),行 innodb存储结构优化的标准是:一个页里面存放的行数越多,其性能越高 表空间:零散页+段 独立表空间存放的是:数据.索引.插入缓冲 ...

  6. VMware克隆虚拟机,克隆机网卡启动不了解决方案

    Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interfac ...

  7. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  8. C# 部分语法总结(入门经典)

    class Program { static void Main(string[] args) { init(); System.Console.ReadKey(); } #region 接口 /// ...

  9. XML解析工具类

    public class XmlUtil { /* * 利用dom4j解析xml文件内容,并返回map数据形式 * path是.xml文件所在的路径 */ public static Map<S ...

  10. Github 新的项目管理模式——Projects

    Github 新的项目管理模式--Projects Issues Github 中传统的项目管理是使用 issue 和 pull request 进行的,这部分内容不是本文重点,不再赘述. 但有一些功 ...