上期回顾

上一期:NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

上次介绍了NanoProfiler的大数据分析理念,一晃已经时隔一年多了,真是罪过! 有朋友问到何时开源的问题,这里先简单说明一下。因为是单位的项目,虽然单位的目标肯定是要开源的,但是,毕竟不像个人项目那么自由。一方面要保证代码本身的质量,另一方面也要剥离对单位其他框架类库的依赖,一忙起来就拖延日久了,我只能说尽力尽快推动这个事情!不过,Nuget package一直在Nuget.org,可以免费使用的。想尝试的朋友无需太多顾虑。另外,单位的项目中已经大面积使用已经有近两年了,所以,性能和稳定性是有保障的。

这一期,我们就来结合elasticsearch,logstash,kibana手把手实践一把。

示例代码

附件包含完整的示例代码和logstash配置文件:http://files.cnblogs.com/files/teddyma/nanoprofiler_demo.zip

此示例代码演示了之前几期介绍中提到的NanoProfiler的绝大多数功能,包括DB和WCF profiling的演示和基于Unity的AOP。示例中包含了两个简单的HTTP Handler,分别演示了在同步和异步情形下,NanoProfiler一致的使用体验。

示例代码可以使用VS2012,2013或2015打开,并且直接编译和运行。直接运行默认会在浏览器访问AsyncHandler.ashx,可以看到简单的demo数据输出。点击View Profiling Results,或者直接访问/nanoprofiler/view,可以看到最近的100个请求的profiling结果。NanoProfiler的Profiling Storage默认是基于slf4net写profiling结果的,本示例中通过slf4net.log4net,将profiling结果记录到App_Data目录中的文本文件。

示例代码用到了SQL Express 2012 LocalDB,如果运行时报SQL connection错误,请确保安装了LocalDB:http://www.microsoft.com/en-US/download/details.aspx?id=29062

关于NanoProfiler基本功能的使用请参见之前几期博客文章的介绍,这里重点介绍一下实践中结合数据的收集和分析工具elasticsearch,logstash,kibana如何对profiling的结果进行分析。

下载和安装 elasticsearch,logstash,kibana

最新版本的elasticsearch,logstash对windows已经有了很好的支持,只需要JRE7+,下载后的默认配置,即使在windows下都可直接运行。比起两年前可幸福多了,记得以前在虚拟机的ubuntu里安装鼓捣半天。

首先,安装elasticsearch,从官网下载zip包:https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.zip

解压到某个本地目录。执行bin\elasticsearch.bat,elasticsearch就已经运行了。太简单了,不是?

接着,安装logstash,同样从官网下载zip包:https://download.elastic.co/logstash/logstash/logstash-1.5.4.zip

解压到某个本地目录。这就已经算安装完了,不是逗你!

最后,从官网下载kibana(这里使用kibana v3,因为v3是纯静态页面的,随便一个web服务器就能运行,另外,真的对kibana4的新UI无爱,还是喜欢3的UI):https://download.elastic.co/kibana/kibana/kibana-3.1.2.zip

解压到某个本地目录,host到IIS里,例如:我用的URL是:http://localhost:8080/k3/

在浏览器中访问http://localhost:8080/k3/,因为没有使用80端口,它可能会显示一个Connection Failed错误信息,提示你该怎么fix。如果你没看到错误信息,可以跳过本节下面的内容。

要fix这个问题,我们只需要在elasticsearch安装目录的config/elasticsearch.yml文件结尾添加一行:

http.cors.enabled: true

然后,停掉elasticsearch,再重新运行bin/elasticsearch.bat

在浏览器中重新访问http://localhost:8080/k3/,可以看到,这次没有错误信息了!(注意,不要直接按F5,要去掉刚才有错误信息页面地址里的#connectionFailed部分)

至此,elasticsearch,logstash,kibana全部安装完毕了!

使用logstash导入profiling结果到elasticsearch

回到我们的示例程序,在浏览器中再刷新几次对AsyncHandler.ashx的访问(只是为了多点profiling数据),然后,在App_Data目录,应该能看到profiling log文件。打开log文件,我们看到,里面的每一行是一个json。这一节,我们的目的是,将log文件里的json,通过logstash导入elasticsearch。

我们需要定义一个logstash的conf文件,别忘了改里面的路径到你本机的正确目录,关于logstash的具体使用帮助,可以参考官方文档:https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

profiling.conf

input {
file {
codec => "json"
path => [ "C:/Users/teddy/git/nanoprofiler_demo/Demos/NanoProfiler.Demos.SimpleDemo/App_Data/*.log" ]
sincedb_path => "C:/Users/teddy/git/nanoprofiler_demo/Demos/NanoProfiler.Demos.SimpleDemo/App_Data/sincedb.profiling-logs"
sincedb_write_interval => 5
start_position => "beginning"
discover_interval => 5
}
} filter
{
# Use started as @timestamp field
date {
match => [ "started", "ISO8601" ]
timezone => "UTC"
target => "@timestamp"
}
} output {
elasticsearch {
protocol => "http"
host => "localhost"
document_id => "%{id}"
index => "logstash-profiling-log-%{+YYYY.MM.dd}"
workers => 1
}
}

接下来就可以让logstash执行了,在cmd里cd到logstash的安装目录,执行:bin/logstash -f profiling.conf

在浏览器中访问http://localhost:9200/_search,可以看到,我们的profiling数据已经被成功导入elasticsearch。

用kibana显示elasticsearch里数据

下面,我们可以尝试用kibana来显示elasticsearch里的profiling结果了。

首先,在kibana3的首页,点击创建一个新的空dashboard。

点击右上角的设置按钮,在弹出的窗口点击index tab,如下图输入我们上面的profiling.conf里指定的输出到elasticsearch的index名称,然后点击save保存。

回到dashboard,选择Time Picker为最近一小时。

接下来我们要在dashboard上新建议个row,点击dashboard右下角的Add a row,然后在弹出页面点击Create a row,然后点击save保存。

这时,屏幕上或多出一个row,鼠标移动台左边的屏幕边缘,点击+按钮,选择Panel Type为Table,其他不用填,直接点击save保存。这时,我们已经能看到添加的Table Panel里面显示我们的profiling数据了,不过,这个panel窄了点,我们可以像windows窗口一样,把他拖大一点。

接下来,我们可以对profiling数据,做更多的filter,比如,我想看看所有的DB profiling结果。

当然,你也可以再点击左边的屏幕边缘的+按钮,添加kibana提供的各种其他酷酷的panel。

如果,你现在刷新几下示例代码中的AsyncHandler.ashx页面,回到dashboard,稍等2-3秒,点击页面上方的刷新按钮,就能看到,daskboard里显示的profiling数据自动增加了。因为logstash是实时监控log文件变更的。

NanoProfiler - 适合生产环境的性能监控类库 之 实践ELK篇的更多相关文章

  1. NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇

    背景 NanoProfiler是一个EF Learning Labs出品的免费性能监控类库(即将开源).它的思想和使用方式类似于MiniProfiler的.但是,设计理念有较大差异. MiniProf ...

  2. NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...

  3. Java生产环境下性能监控与调优详解视频教程 百度云 网盘

    集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...

  4. Java生产环境下性能监控与调优详解

    1:JVM字节码指令与 javapjavap <options> <classes>cd monitor_tuning/target/classes/org/alanhou/m ...

  5. Android 性能监控系列一(原理篇)

    欢迎关注微信公众号:BaronTalk,获取更多精彩好文! 一. 前言 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿.响应速度慢.发热严重.流量电 ...

  6. Solutions:应用程序性能监控/管理(APM)实践---python/flask

    本文部分内容转载自:https://blog.csdn.net/UbuntuTouch/article/details/102844900 官方文档:https://www.elastic.co/gu ...

  7. Elastic:应用程序性能监控/管理(APM)实践

    在今天的文章里,我们将介绍Elastic的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称APM.那么到底什么是AP ...

  8. 性能利器 Takin 来了!首个生产环境全链路压测平台正式开源

    6 月 25 日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为 Takin. 目前中国人寿.顺丰科技.希音.中通快递.中国移动.永辉超 ...

  9. Linux系统和性能监控之CPU篇

    Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Perfo ...

随机推荐

  1. J2EE中EL表达式

    EL全名为Expression Language. EL语法很简单,主要的语法结构是${sessionScope.user.sex}所有EL都是以${为起始.以}为结尾的. 上述EL范例的意思是:从S ...

  2. 【CMD】日常总结

    命令脚本可以提升工作效率,之前用过也写过一些脚本,但时间一长就忘记了.写篇随笔记录一下,随用随记哈. 调用程序 //切换到某个路径下 cd D:\Glodon\GDW\GDW\Release\Bin ...

  3. lua 快速排序

    function partion(arr, left, right) local tmp = arr[left] while left < right do while left < ri ...

  4. 我与solr(一)--solr的配置与安装

    感谢upxiaofeng的分享,转载自http://blog.csdn.net/zoubf/article/details/51505940 准备工作: 目前最新版本6.0.下载solr 6.0:So ...

  5. 使用小技巧,让你高效使用Eclipse

    1.自动完成--Eclipse有一个自动完成代码功能,快捷键是ctrl + space.当点击时就会弹出一个对话框,上面有与前后文相关的一些建议.只要有一个可能性,Eclipse就会替你完成. 2.快 ...

  6. 【13_263】Ugly Number

    简单题 Ugly Number My Submissions Question Total Accepted: 32635 Total Submissions: 94009 Difficulty: E ...

  7. debian下使用gitosis+gitweb搭建SSH认证的git服务器

    搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client ...

  8. 代写assignment

    集英服务社,强于形,慧于心 集英服务社,是一家致力于优质学业设计的服务机构,为大家提供优质原创的学业解决方案.多年来,为海内外学子提供了多份原创优质的学业设计解决方案. 集英服务社,代写essay/a ...

  9. 浅谈Swift集合类型

    Swift 的集合表现形式由数组和字典组成.它可以完美的存储任何呢想存储的东西. 数组是一个同类型的序列化列表集合,它用来存储相同类型的不同值.字典也是一个数组,但它的存值方式类似于Map,通过一对一 ...

  10. XStream学习笔记

    XStream 所需jar包: xstream-1.3.jar xpp3_min-1.1.4c.jar xmlpull-1.1.3.1.jar 目录: 1.注解去除,标签中带有包名的节点 2.注解修改 ...