昨天的文章<免费开源分布式系统日志收集框架 Exceptionless>反响很大,今天推的一篇是续集,文章来自于宝岛台湾的MVP, 让 Exceptionless 建置 Log Server,性能不用担心,用的是大名点点的ELK组合.
前言
痾...久违的新文章,让我的眼角流下了蛋蛋忧伤的泪珠....
今天来介绍一下一款 Open Source 的项目「Exceptionless」
Exceptionless 是什么? 在 Exceptionless 的团队对这个名称的定义意义是无例外,当然...谁不想~不要有例外错误发生呢? (泪...),但是当发生例外时你要怎么知道!? 就可以通过 Exceptionless 的服务来取得必要信息啦(要钱的~)
当然,这个团队也是很佛心的提供了 Open Source 让你可以自己架设你的 Log Server 啦! 整个 Exceptionless 包含了 Server 与 Client 两部分,Server指的是一个 Web Api 的项目与 Dashboard 检视,提供Client 端将系统信息写入,Clinet 指的是客户端通过所提供的 Lib 就能够简单的呼叫提供的方法写入 Log 信息。
目前有提供的客户端支持有 ASP.NET, MVC, Web API, WPF, WinForms, and Console,JavaScript, Node.js,另外也支持了NLog扩充,为了我们的荷包着想,接来下我将介绍一下怎么自行安装 Exceptionless 给你的系统使用,本文章使用 Exceptionless v 3.0.0 为范例。
准备动作
首先,请先准备以下几个项目
§ 安装 .Net Framework 4.5.1+
§ 安装 Java 1.8+
§ 安装 IIS 8+
§ 安装 ElasticSearch 1.7.0+
§ 下载 Exceptionless 3.0.0
§ 下载 Exceptionless.UI 2.1.1
针对 Java 的部分,需要至环境变量设定 JAVA_HOME,指向你的 Java 安装目录,如下
针对 Elasticsearch,Exceptionless 使用 Elasticsearch 作为数据库储存你的 Log,
下载后解压缩至 C:\Program Files\Elasticsearch\content\ 路径底下,
另外需要使用 Exceptionless 配置好的配置文件,直接覆盖掉在 C:\Program Files\Elasticsearch\content\elasticsearch-1.7.2\config里面的 elasticsearch.yml
接着,我们通过 Window Service 将 Elasticsearch 启动 (参考),
开启命令提示字符,切换到 C:\ProgramFiles\Elasticsearch\content\elasticsearch-1.7.2\bin 目录下
输入: service.bat install elasticsearch-service-x64
看到以下画面就成功了,再去服务里面启动。
另外,还要通过浏览器去检查一下服务是否启动,开启浏览器输入网址: http://localhost:9200
架设 Server 与 Dashboard
架设的部分,最简单的方法可以使用 GitHub 上所提供的 Release 档案进行架设,
解压缩准备步骤中,所下载的两个档案 Exceptionless 与 Exceptionless.UI,
1.开启Exceptionless 解压缩后的 wwwroot 目录里面的 web.confg 档案,
修改里面的内容:
RedisConnectionString: 支持 Redis,如果有的话就可以使用
ElasticSearchConnectionString: 刚刚所安装的 ElasticSearch 的网址: http://localhost:9200
BASE_URL: 更改为 Exceptionless.UI Dashboard 网站的网址,例如:http://ui.localexceptionless.com/#
EnableSSL: 是否要使用 SSL,当然有 SSL 的话是建议启用的
WebsiteMode: 如果为在线环境改使用 Production
Exceptionless:ServerUrl: 更改为 Exceptionless Api 网站的网址,例如: http://api.localexceptionless.com
剩下还有一些设定,例如 Mail 通知等等,可以视需求进行设定。
2.开启 Exceptionless.UI解压缩后目录里面的 app.config.3869d2f297f52e30ccaa12dc361cdd01.js档案,
修改里面的内容:
BASE_URL: 更改为 Exceptionless Api 网站的网址,例如: http://api.localexceptionless.com
USE_SSL: 是否要使用 SSL,当然有 SSL 的话是建议启用的
在 IIS 中建立两个站台,分别指到 Exceptionless 的 wwwroot 目录与 Exceptionless.UI 的根目录。
之后执行网站,就会看到以下两张图 (在这步骤因为我没有IIS8...所以我使用 VS 2015 开启项目档执行 Api 项目)
建立 Exceptionless 项目
当网站架设完成后,你需要点选 Signup注册一个账号进入 Exceptionless,登入后画面如下
在这个页面你要建立一个 Project ,当 Project 建立完成后会产生一组 Api Key,这组 Api Key 将会在Client 端使用到,如下图
安装 Client Exceptionless 套件
到这个步骤就是要来使用我们所建置完成的 Log Server,
首先我建立了一个测试网站,由于一般开发我们都会使用 NLog 作为纪录 Log 的第三方套件使用,而 Exceptionless 也扩展了 NLog,让我们可以直接通过呼叫 NLog 的方法,将 Log 写入到 Exceptionless 的 Target。
接下来通过 NuGet 安装 NLog 与 Exceptionless.NLog,如下图
再来,建立一个 NLog.config 档案,内容为设定 Exceptionless 的 Target,如下
<?xml version="1.0" encoding="utf-8" ?>
<nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<extensions>
<addassembly="Exceptionless.NLog" />
</extensions>
<targetsasync="true">
<targetname="exceptionless"xsi:type="Exceptionless"
apiKey="eIH5SgZcaluHIfMRzCg0OW5FUZQQMqmfUDsYSOG0"
serverUrl="http://localhost:50000/">
<fieldname="host"layout="${machinename}" />
<fieldname="identity"layout="${identity}" />
<fieldname="windows-identity"
layout="${windows-identity:userName=True:domain=False}" />
<fieldname="process"layout="${processname}" />
</target>
</targets>
<rules>
<loggername="*"minlevel="Info"writeTo="exceptionless" />
</rules>
</nlog>
然后执行我的测试网站,就可以看到以下的结果:
结语
以上就是用 Exceptionless 建置 Log Server 的教学,Exceptionless 的 Dashboard 操作起来还蛮好使用的,也可以依据条件进行塞选,又整合了 NLog,使用上其实可以很简易的加入项目,效能方面的话,Exceptionless我测试过写入 1 千多万笔的 Log 信息,通过 Dashboard 来查询的时候速度都还OK,如果想的话,也可以自己介接他的 API,做自己的 Dashboard,更多的功能就要你自己去探索了喔!!
相关文章:
免费开源分布式系统日志收集框架 Exceptionless
使用Elasticsearch 与 NEST 库 构建 .NET 企业级搜索
为elasticsearch集成一些实用插件以及配置的开箱即用的版本
原文地址:https://dotblogs.com.tw/joysdw12/2015/10/01/exceptionle
ss_nlog_log_server
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注