0、整体架构


整体架构目录:ASP.NET Core分布式项目实战-目录

一、介绍ELK


1、说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试

承接上一篇文章的内容准备部署ELK来展示asp.net core 的数据。目前此篇文章只用到单台服务器,等下一篇将会介绍如何做到集群部署ELK+filebeat+MQ,因为这个集群部署才是真正体现大项目的价值。当然如果是小项目或者是内部项目单台足以。

当然ELK只是在业界用的比较多,但是里面所用的工具是可以替换的,比如说 如下:

体现价值的解决方案就是:es+kibana+filebeat/logstash+MQ(RabbitMQ/Kfaka) 来实现日志记录等。

多介绍一下吧:

Beats包含四种工具:

  Packetbeat(搜集网络流量数据)
  Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
  Filebeat(搜集文件数据)
  Winlogbeat(搜集 Windows 事件日志数据)
  它是一个轻量级的日志收集处理工具(Agent)

自此,解决方案很多,关键在于不同的项目用不同的解决方案,关键看大家的选择啦。当然如果大家有兴趣可以加一下QQ群,可以互相探讨技术。

如果大家对NLog不会部署,请看上一篇文章:asp.net core添加全局异常处理及log4net、Nlog应用

好了接下来就要开始部署啦,请准备你们的服务器和VS吧。

2、环境说明

软件 版本
CentOS 7.4
Docker ce-18.06
Elasticsearch 5.5.0
Logstash 5.5.0
Kibana 5.5.0
VS2017 2017

介绍一下ELK实时日志分析平台。

Elasticsearch:是个开源分布式搜索引擎,提供收集、分析、存储数据三大功能,它的特点:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口、多数据源、自动搜索负载等。

Logstash:主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana:Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

二、部署ELK


目前由于我在公司部署的ELK,在使用docker下载官方的ELK镜像时,无法下载。因此我在家里的时候就把ELK所需要的镜像下载好后放在阿里云的镜像仓库中,然后在公司的电脑里面直接下载,速度比较快。

如果有碰到以上下载镜像问题的同学,可以尝试我这中办法。

0、前提需要安装JAVA环境

命令:
wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm

如果发现 下载地址失效请登录:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 这个链接找寻下载地址

安装JDK8:
rpm -ivh jdk-8u181-linux-x64.rpm

检查 JDK是否安装成功:
java -version

1、部署Elasticsearch

安装
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方网站有很多安装方式,这里采用rpm安装。

//进入local目录
cd /usr/local

//创建elasticsearch文件夹

mkdir elasticsearch

//进入elasticsearch文件夹
cd elasticsearch

//开始下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.rpm

//开始安装
rpm -ivh elasticsearch-5.5.0.rpm

配置

//查找安装目录
whereis elasticsearch

//进入安装目录
cd /etc/elasticsearch

//编辑配置文件
vi elasticsearch.yml

主要配置Network.host(本机ip)和http.port(默认9200)(目前单节点模式,其他参数请参考官方文档)

启动服务

//开启端口9200
firewall-cmd --add-port=9200/tcp --permanent

//重新加载配置
firewall-cmd --reload

//设置服务开机启动
systemctl enable elasticsearch

//启动服务
systemctl start elasticsearch

在浏览器打开http://192.168.161.191:9200/,如下图所示表示启动成功了

2、部署kibana

官网文档:https://www.elastic.co/guide/en/kibana/current/index.html

安装

//进入elasticsearch目录
cd /usr/local/elasticsearch

//下载Kibana rpm 64位包
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-x86_64.rpm

//安装Kibana
rpm -ivh kibana-5.5.0-x86_64.rpm

配置

//进入安装目录
cd /etc/kibana

//编辑配置文件
vi kibana.yml

设置端口号:5601,Host地址:"192.168.161.191" ,elasticsearch服务地址为:"http://192.168.161.191:9200"

启动服务

//开启端口5601
firewall-cmd --add-port=5601/tcp --permanent

//重新加载配置
firewall-cmd --reload

//设置服务开机启动
systemctl enable kibana

//启动服务
systemctl start kibana

在浏览器打开http://192.168.161.191:5601,将进入到Kibana管理界面

3、部署logstash

官方文档:https://www.elastic.co/guide/en/logstash/current/index.html

安装

//进入elasticsearch目录
cd /usr/local/elasticsearch

//下载logstash rpm包
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.rpm

//安装rpm包
rpm -ivh logstash-5.5.0.rpm

配置

//进入安装目录
cd /etc/logstash

//进入conf.d目录
cd conf.d

//新增配置信息
vi nlog.conf

直接在logstash.conf配置即可。

input{
tcp{
host=>"192.168.161.191"
port=>8001
}
}
filter{
grok{
match=>{
"message"=>"#%{DATA:request_time}#%{DATA:log_level}#%{DATA:log_info}#"
}
}
}
output{
elasticsearch{
hosts=>["192.168.161.191:9200"]
index=>"default"
document_type=>"logs"
}
}

  

input:采用TCP监控本机8001端口的消息
filter:使用grok 插件,自定义消息格式,推荐使用grokdebug在线进行调试
output:使用elasticsearch作为数据存储

5、重启修改配置后的logstash

如果是上面的第二种方式,采用tcp端口,则重启需要配置 8001端口
即: -p 8001:8001

docker run -d --restart always -p 8001:8001 --name logstash -v /home/logstashdata/config:/usr/share/logstash/config -v /home/logstashdata/pipeline:/usr/share/logstash/pipeline logstash:6.3.0

启动服务

//开启端口8001
firewall-cmd --add-port=8001/tcp --permanent

//重载配置
firewall-cmd --reload

//设置开机启动
systemctl enable logstash

//启动logstash
systemctl start logstash

三、asp.net core 结合NLog


1、在项目中的nlog/config文件中添加内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"> <!-- the targets to write to -->
<targets>
<!-- 输出到文件,这个文件记录所有的日志 -->
<target xsi:type="File" name="allfile" fileName="Log\LogAll\${shortdate}.htm"
layout="<HR COLOR=red>${longdate}<BR>${logger}<BR>${uppercase:${level}}<BR>${message} ${exception}<HR Size=1>" />
<!-- 输出到文件,这个文件记录错误日志 -->
<target xsi:type="File" name="logError" fileName="Log\LogError\${shortdate}.htm"
layout="<HR COLOR=red>【异常时间】:${date} <BR>【异常级别】:${level:uppercase=true} <BR>${message}<HR Size=1>" /> <!-- 输出到文件,这个文件记录操作日志 -->
<target xsi:type="File" name="logInfo" fileName="Log\LogInfo\${shortdate}.htm"
layout="<HR COLOR=red>【操作时间】:${date} <BR>【操作级别】:${level:uppercase=true} <BR>${message}<HR Size=1>" /> <target xsi:type="Network" name="ownLog-tcp-Info" keepConnection="false" address ="tcp://192.168.161.191:8001"
layout="#【操作时间】:${date} #【操作级别】:${level:uppercase=true} #${message}#"/> <target xsi:type="Network" name="ownLog-tcp-Error" keepConnection="false" address ="tcp://192.168.161.191:8001"
layout="#【异常时间】:${date} #【异常级别】:${level:uppercase=true} #${message}#"/>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<logger name="*" minlevel="Error" writeTo="logError" />
<logger name="*" minlevel="Info" writeTo="logInfo" />
<logger name="*" minlevel="Info" writeTo="ownLog-tcp-Info" />
<logger name="*" minlevel="Error" writeTo="ownLog-tcp-Error" />

<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxLevel="Trace" final="true" />
<!--<logger name="DotNetCore.CAP.*" maxLevel="Info" final="true" />
<logger name="IdentityServer4.*" maxLevel="Info" final="true" />--> </rules>
</nlog>

  

配置结束,运行项目。

打开kibana,添加一下索引,当然这个索引名称需要和上面在logstash中的es索引一样,因为是要根据索引名称来查找数据的。

添加索引完后,就可以查看数据啦。

等下一篇部署在Docker上。拭目以待吧。

参考文档:https://www.cnblogs.com/piscesLoveCc/p/7230426.html

asp.net core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

asp.net core结合NLog搭建ELK实时日志分析平台的更多相关文章

  1. 手把手教你搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

  2. ELK实时日志分析平台环境部署--完整记录

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  3. ELK实时日志分析平台环境部署--完整记录(转)

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  4. elk实时日志分析平台部署搭建详细实现过程

    原文:http://blog.csdn.net/mchdba/article/details/52132663 1.ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容 ...

  5. ELK实时日志分析平台环境部署,以及可视化展示

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent) ...

  6. ELK实时日志分析平台环境部署

    为什么要用到ELK一般我们需要进行日志分析场景是:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...

  7. ELK实时日志分析平台环境部署--完整记录(ElasticSearch+Logstash+Kibana )

    https://blog.csdn.net/oLevin/article/details/81020794

  8. ELK搭建实时日志分析平台之一ElasticSearch搭建

    文:铁乐与猫 系统:CentOS Linux release 7.3.1611 (Core) 注:我这里为测试和实验方便,ELK整套都装在同一台服务器环境中了,生产环境的话,可以分开搭建在不同的服务器 ...

  9. ELK搭建实时日志分析平台之二Logstash和Kibana搭建

    本文书接前回<ELK搭建实时日志分析平台之一ElasticSearch> 文:铁乐与猫 四.安装Logstash logstash是一个数据分析软件,主要目的是分析log日志. 1)下载和 ...

随机推荐

  1. 解决 hibernate cannot define positional parameter after any named parameters have been defined

    解决 hibernate  cannot define positional parameter after any named parameters have been defined 把模糊查询的 ...

  2. 利用skipList(跳表)来实现排序(待补充)

    用于排名的数据结构 一般排序为利用堆排序(二叉树)和利用skipList(跳表)的方式 redis中SortedSet利用skipList(跳表)来实现排序,复杂度为O(logn),利用空间换时间,类 ...

  3. 多个Firefox共存&&彻底关闭自动更新

    安装 0x001 下载好要安装Firefox的版本 可到Firefox官方仓库下载 https://ftp.mozilla.org/pub/firefox/releases/ 我下载的是42和56版 ...

  4. ui-sref

    angularjs中路由跳转可以在模板页面上使用ui-sref="a-state({param1: value})"; 如果想为当前state的导航按钮添加一个激活class,可以 ...

  5. python第二十三课——dict中的函数

    dic1 = {...} dic2 = {...} dic1.update(dic2) 1.update(dict):dic1调用update传入dic2,如果dic2中的内容在dic1中不存在,那么 ...

  6. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

  7. python 二维数组键盘输入

    m = int(input()) grid = [[] for i in range(m)] for i in range(m): line = input().split(' ') for j in ...

  8. 搭建高可用mysql系列(1)-- Percona XtraDB Cluster介绍

    Percona XtraDB Cluster (下文简称PXC)是一个开源的mysql 高可用解决方案.它将Percona Server和Percona XtraBackup与Galera库集成在一起 ...

  9. Day18 (二)反射

    反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java ...

  10. Cocos2d-x 3.0新引擎文件夹结构

    Cocos2d-x 3.0新引擎文件夹结构 2014年4月29日  Cocos2d-x 3.0学习 作为一个Cocos2d-x的菜鸟,我倒是挺愿意关注不同版本号之间的差别,Cocos2d-x 3.0自 ...