ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

导读ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。希望我们的搜索解决方案要快,希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。

ElasticSearch的Schema与其它DB比较:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

ElasticSearch三方访问方式:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

环境是CentOS6.4,安装方法有好几种,在这儿我们直接从官网下载包, 1.71版解压后,进入目录执行:

bin/elasticsearch

检查服务是否正常工作

curl -X GET http://localhost:9200/

elasticsearch默认是9200端口,返回一个JSON数据,有版本说明运行正常。

elasticsearch的伸缩性很高,如下示例数据分片:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

安装前端elasticsearch-head

elasticsearch/bin/plugin –install  mobz/elasticsearch-head

打开 http://localhost:9200/_plugin/head/,可以看如下UI,此处我们配置IP是192.168.0.103,它多语言版,已经自动识别为中文UI

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

在这儿我们还安装一个管理结点的前端 bigdesk, 安装方式类似,也是推荐插件模式:

$ ./bin/plugin -install lukas-vlcek/bigdesk/

http://192.168.0.103:9200/_plugin/bigdesk/之后UI是这样的:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

还有其他的前端项目,在这儿我们不一 一 描述,其目的为了更好的管理ElasticSearch集群。

ElasticSearch与Asp.net应用程序集成

好了,我们在Asp.net项目中已经安装Elmah,现在我们安装 Elmah.Elasticsearch,这里是1.1.0.27

PM> Install-Package Elmah.Elasticsearch

让我们来访问一个不存在http://localhost:1960/KK webpage 故意引发异常,然后我们到前端head里可以看到:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

完整记录JSON数据,当然也可以使用查询方式。

接下来,让我们来配置NLOG的日志也输出到ElasticSearch,先安装包 NLog.Targets.ElasticSearch 1.0.14

PM> Install-Package NLog.Targets.ElasticSearch

这样我们可以把非异常的日志自由输出到ElasticSearch中,例如我们记录webapi请求的日志:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

devlogging是我们在配置文件已配置过的index名称。 我们同时使用NLOG记录了文件日志。

搜索:

ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理教程

基于REST方式请求按ID查询:

http://localhost:9200///.

如:

http://192.168.0.103:9200/devlogging/logevent/AU9a4zu6oaP7IVhrhcmO

还有一些搜索示例如下:

//索引
$ curl -XPUT http://localhost:9200/twitter/tweet/2 -d '{
    "user": "kimchy",
    "post_date": "2009-11-15T14:12:12",
    "message": "You know, for Search"
}'

//lucene语法方式的查询
$ curl -XGET http://localhost:9200/twitter/tweet/_search?q=user:kimchy

//query DSL方式查询
$ curl -XGET http://localhost:9200/twitter/tweet/_search -d '{
    "query" : {
        "term" : { "user": "kimchy" }
    }
}'

//query DSL方式查询
$ curl -XGET http://localhost:9200/twitter/_search?pretty=true -d '{
    "query" : {
        "range" : {
            "post_date" : {
                "from" : "2009-11-15T13:00:00",
                "to" : "2009-11-15T14:30:00"
            }
        }
    }
}'

我们可以配置多个应用程序的日志统一输出到ES中,以便于我们查询与分析。Linux就该这么学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值