博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理
阅读量:5299 次
发布时间:2019-06-14

本文共 2583 字,大约阅读时间需要 8 分钟。

本文将介绍使用、结合ElasticSearch实现分布式日志管理。

一、ElasticSearch简介

是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于接口。
Elasticsearch是用Java开发的,并作为许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,
能够达到实时搜索,稳定,可靠,快速,安装使用方便。 建立一个网站或应用程序,并要添加搜索功能,令我们受打击的
是:搜索工作是很难的。希望我们的搜索解决方案要快,希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单
地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们
要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。
ElasticSearch的Schema与其它DB比较:
 
ElasticSearch三方访问方式:
 
 
环境是CentOS6.4,安装方法有好几种,在这儿我们直接从, 1.71版解压后,进入目录执行:
bin/elasticsearch
检查服务是否正常工作
curl -X GET
elasticsearch默认是9200端口,返回一个JSON数据,有版本说明运行正常。
elasticsearch的伸缩性很高,如下示例数据分片:
 
安装前端

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

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

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

$ ./bin/plugin -install lukas-vlcek/bigdesk/
之后UI是这样的:
 

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

 

二、ElasticSearch与Asp.net应用程序集成

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

PM> Install-Package Elmah.Elasticsearch

在web.config中配置节,我们配置index名称:elmahCurrent

连接字符串增加

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

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

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

PM> Install-Package NLog.Targets.ElasticSearch

对应的NLog.config文件是这样的,看加粗字体:

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

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

搜索:

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

http://localhost:9200/<index>/<type>/<id>.

如:

还有一些搜索示例如下:

//索引 $ 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中,以便于我们查询与分析。

今天先这儿,希望对您有软件开发帮助。


来资料收集与整合,希望对您软件开发与企业信息化有帮助。 其它您可能感兴趣的文章:

 

如有想了解更多软件研发 , 系统 IT集成 , 企业信息化 等资讯,请关注我的微信订阅号:

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-。

转载于:https://www.cnblogs.com/wintersun/p/4753145.html

你可能感兴趣的文章
实用拜占庭容错算法PBFT
查看>>
笔试题资源整理(1)
查看>>
ubuntu16.04 anaconda3安装
查看>>
css 外边距,内边距的使用
查看>>
关于窗口Y坐标的小问题
查看>>
php gd 图像翻转,php(gd库)输出中文图像的转换函数
查看>>
java 表头添加复选框,表头带有CheckBox可以实现全选的jtable
查看>>
java b组 小计算器,简单计算器..
查看>>
php server port,$_SERVER[‘SERVER_PORT’]关于php5.2一个bug
查看>>
php 类 init,PHP内核探索:类的定义
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
meep php,麻省理工时域差分软件 MEEP windows 下编译开发(一)——准备工作
查看>>
matlab的清除0,matlab中的平均值clear %清除变量dx=0.01*2*pi; %间隔x=0:dx:2*pi; %自变量向量y=...
查看>>
php 循环套 重复,php 循环套循环 出现重复数据
查看>>
mysql distince,MySQL学习(未完待续)
查看>>
php libevent 定时器,PHP 使用pcntl和libevent实现Timer功能
查看>>
对数字进行 混淆 php,解密混淆的PHP程序
查看>>
zencart不支持php7的原因,Zen Cart1.3.8产品页报错提示:Deprecated: Function ereg_replace() is deprecated...
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
matlab fis编辑器在哪,基本FIS编辑器
查看>>