ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示
环境说明
1. windows server 2012 R2 64位
2. log4net.ElasticSearch
3. kibana-5.5.0-windows-x86.zip
架构说明
数据采集有两种方案Beats或Logstash,Logstash支持很多种数据源,有log4j但没有log4net,本想使用log4net.redis+redis+logstash的方式实现日志收集。无意间发现了log4net.ElasticSearch可以直接写日志到ES,经过测试非常好用、方便。
log4net.ElasticSearch is a module for the log4net library to log messages to the ElasticSearch document database. ElasticSearch offers robust full-text searching an analyzation so that errors and messages can be indexed quickly and searched easily.
Features:
- Supports .NET 4.0+
- Easy installation and setup via Nuget
- Full support for the Elasticsearch _bulk API for buffered logging
安装kibana
1.下载kibana
首先下载windows版本的kibana文件,地址:https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-windows-x86.zip,解压到E:\elk\kibana目录
2.配置Kibana
打开配置文件E:\elk\kibana\config\kibana.yml,修改server.host和server.host,如下:
server.host: "192.168.5.175" elasticsearch.url: "http://192.168.5.175:9200"
3.运行Kibana
命令行下执行E:\elk\kibana\bin\kibana.bat文件
使用log4net.ElasticSearch
1.安装log4net.ElasticSearch
log4net.ElasticSearch可以通过Nuget安装,要注意保持和正在使用的log4net版本一致
Install-Package log4net.ElasticSearch -Version 2.3.
log4net.ES.Example是一个测试Demo,修改配置后就能使用。
2.配置log4net.config文件
<!-- Default style appender. You can change the name but make sure you reference it corectly. Change the type if you're using .NET 4.0 -->
<appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4net.ElasticSearch">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout> <!-- You can also use scheme, user, password here if you need https and http authentication, see the docs -->
<connectionString value="Server=192.168.5.175;Index=log;Port=9200;rolling=true"/> <!-- false means do not eject older messages when the buffer is full, try to keep them all. -->
<lossy value="false" /> <!-- Any buffer > 1 will use the Elasticsearch _bulk API. Tune as needed depending on how high volume your app is and how fast you want messages to show up in ES -->
<bufferSize value="1" /> <!-- When an event comes in that matches or is above the treshold, the buffer will flush. I don't reccommend setting to "ALL" or it will defeat the purpose of having a buffer -->
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ALL"/>
</evaluator>
</appender>
Index=log:索引的名字
rolling=true:每天生成一个索引,比如log-2017.07.13
bufferSize :批量提交到ES,这里为了演示设置成1
<!-- Common to all log4net configs. See log4net docs for more details -->
<root>
<level value="ALL"/>
<appender-ref ref="ElasticSearchAppender" />
</root>
2.写入日志
运行测试程序,即可写入几条日志到ES中。
--查询索引列表
http://192.168.5.175:9200/_cat/indices
返回值:
yellow open log-2017.07.13 UBT3YG2qQpWkfJKRNw-XCQ 5 1 1 0 16.5kb 16.5kb
yellow open log-2017.07.07 pMXjGKkiRRSsrBdl5qNlNw 5 1 4 0 62.6kb 62.6kb --查询索引内容
http://192.168.5.175:9200/log-2017.07.13/_search?q=*
返回值:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "log-2017.07.13",
"_type": "logEvent",
"_id": "AV05k9nbXp-PycfFP2XN",
"_score": 1,
"_source": {
"timeStamp": "2017-07-13T01:32:53.9948595Z",
"message": "System Error",
"messageObject": {},
"exception": {
"Type": "System.Exception",
"Message": "Something terrible happened.",
"HelpLink": null,
"Source": null,
"HResult": -2146233088,
"StackTrace": null,
"Data": {},
"InnerException": null
},
"loggerName": "log4net.ES.Example.Program",
"domain": "log4net.ES.Example.exe",
"identity": "",
"level": "ERROR",
"className": "log4net.ES.Example.Program",
"fileName": "F:\\soft\\elk\\log4net.ES.Example-master\\log4net.ES.Example\\Program.cs",
"lineNumber": "18",
"fullInfo": "log4net.ES.Example.Program.Main(F:\\soft\\elk\\log4net.ES.Example-master\\log4net.ES.Example\\Program.cs:18)",
"methodName": "Main",
"fix": "LocationInfo, UserName, Identity, Partial",
"properties": {
"log4net:Identity": "",
"log4net:UserName": "BJ-BL\\Administrator",
"log4net:HostName": "BJ-BL",
"@timestamp": "2017-07-13T01:32:53.9948595Z"
},
"userName": "BJ-BL\\Administrator",
"threadName": "1",
"hostName": "BJ-BL"
}
}
]
}
}
日志字段非常全。。。。很赞
配置kibana
1.创建索引模式
打开kibana,http://192.168.5.175:5601。
点击Management=>Index Patterns=>Create Index Pattern,输入log-*就可以匹配上log-yyyy.mm.dd的索引了。
2.查询日志
点击Discover,选中log-*索引,就可以查询日志了。
总结
ELK日志框架已经搭建完成,这里的L变成了Log4net,ES和Kibana的熟练使用还需要时间去积累。Logstash的插件功能真是强大,也写了几个简单的配置文件实现输入输出的转化,如下:
input {
redis {
host => "192.168.5.175"
port => 6379
data_type => "list"
key => "logstash"
codec=> json
} }
output {
elasticsearch {
hosts => ["192.168.5.175:9200"]
}
stdout { codec => rubydebug }
}
logstash-redis2es.conf
input { stdin { } }
output {
elasticsearch { hosts => ["192.168.5.175:9200"] }
stdout { codec => rubydebug }
}
logstash-simple.conf
input { stdin { } }
output {
elasticsearch { hosts => ["192.168.5.175:9200"] }
file{path=>[
"stdin-log.txt"
]}
stdout { codec => rubydebug }
}
logstash-stdin2file.conf
input { stdin { } }
output {
redis {
host => "192.168.5.175"
port => 6379
data_type => "channel"
key => "logstash_list_0"
} stdout { codec => rubydebug }
}
logstash-stdin2redis.conf
用到的参考资料如下:
2.https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html#_description_30\
3.https://www.elastic.co/products/kibana,需要一行一行仔细看
4.ELK部署详解,CentOS7环境
6.转:ElasticSearch 索引查询使用指南——详细版
ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示的更多相关文章
- 快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana)
快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana) 概要说明 需求场景,系统环境是CentOS,多个应用部署在多台服务器上,平时查看应用日志及排查问题十 ...
- 日志框架之2 slf4j+logback实现日志架构 · 远观钱途
如何从缤纷复杂的日志系统世界筛选出适合自己的日志框架以及slf4j+logback的组合美妙之处?此文可能有帮助 logback介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网 ...
- syslog+rsyslog+logstash+elasticsearch+kibana搭建日志收集
最近rancher平台上docker日志收集捣腾挺久的,尤其在配置上,特写下记录 Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的.syslog是一种标准的协议,分 ...
- elasticsearch+kibana+fluentd 日志搜集集群搭建
使用fluentd来搜集Nginx日志,准备3台服务器,列表如下 node1 elasticsearch/kibana/td-agent node2 td-agent/nginx node3 td-a ...
- Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器
一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...
- springboot的日志框架slf4j (使用logback输出日志以及使用)
1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...
- 基于logstash+elasticsearch+kibana的日志收集分析方案(Windows)
一 方案背景 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.开源实时日志分析ELK平台能够完美的 ...
- logstash+elasticsearch+kibana搭建日志收集分析系统
来源: http://blog.csdn.net/xifeijian/article/details/50829617 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散 ...
- logstash+elasticsearch+kibana管理日志(安装)
logstash1.先安装jdk2.wget https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gz tar -xzvf ...
随机推荐
- kafka 0.8.2 消息生产者 KafkaProducer
package com.hashleaf.kafka; import java.util.Properties; import java.util.concurrent.ExecutorService ...
- opencv基础到进阶(1)
Opencv是一个用户基础非常多的视觉开发库,可以用来实现人脸识别等功能,由于涉及到大量的调用与计算,所以对硬件的条件要求很高,并且还需要时时刻刻注意内存溢出这个问题,怎么样?很刺激吧. 从这篇文章开 ...
- 建造者模式—设计角度重温DNF中的角色
应用场景 假设现在我们要设计DNF中的人物角色(鬼剑士.神枪手.魔法师.圣骑士.格斗家).然而,利用面对对象的思想,必须先从实体入手,每一个角色都包含各种装备.武器.配饰,这些就当做要建造的零件,然后 ...
- Swoole笔记(一)
简介 Swoole是一个PHP扩展,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读 ...
- JavaSE教程-02Java基本语法-思维导图
思维导图看不清楚时: 1)可以将图片另存为图片,保存在本地来查看 2)右击在新标签中打开放大查看 1.注释 定义:用于解释说明程序作用的文字 注释类别 单行注释 格式: //注释文字 多行注释 格式: ...
- mongo查询系统
首先,我们先向集合(collections)中添加测试文档(documents).如下: > for(i=1;i<=5;i++) db.test.insert({x:i,y:i*i,z:6 ...
- 百度导航试用 vs 高德导航
听说百度导航免费了,下载试用了一下: HUD模式不错,但是需要一个手机支架或挂钩.尤其是HUD景象模式,夜间把手机平放,通过前挡风玻璃反射看.这个功能有点乔布斯的感觉了. 不过路径规划还差一点,和凯立 ...
- 邪恶改装:TPYBoard制作廉价WIFI干扰器
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 0X01 引言 想不想搞个WIFI干扰器?网上搜集了一下资料,发现用esp8266可以实现简单的干扰功能,包括断网. ...
- Log POST Data in Nginx
先编译Nginx的echo module: ./configure --add-module=./echo-nginx-module-0.54 make make install 可以在github上 ...
- DDD理论学习系列(7)-- 值对象
DDD理论学习系列--案例及目录 1.引言 提到值对象,我们可能立马就想到值类型和引用类型.而在C#中,值类型的代表是strut和enum,引用类型的代表是class.interface.delega ...