asp.net core结合NLog搭建ELK实时日志分析平台

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、环境说明

软件版本
CentOS7.4
Dockerce-18.06
Elasticsearch5.5.0
Logstash5.5.0
Kibana5.5.0
VS20172017

 

介绍一下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技术交流群: 欢迎加群

                

转载于:https://www.cnblogs.com/guolianyu/p/9600659.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rhel7 设置目录权限,acl权限

Rhel7 设置目录权限&#xff0c;acl权限 改变用户和组的所属 Getfacl 取得 Setfacl设置 [rootdesktop0 tmp]# setfacl -m u:natasha:rw fstab [rootdesktop0 tmp]# setfacl -m u:harry:- fstab [rootdesktop0 tmp]# setfacl -m o::r fstab [rootdesktop0 tmp]# getfacl fstab #…

IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题

2019独角兽企业重金招聘Python工程师标准>>> Ajax是"Asynchronous JavaScript And XML"的缩写(即&#xff1a;异步的JavaScript和XML)&#xff0c;是一种实现无页面刷新获取服务器数据的混合技术,Ajax这个概念的最早提出者是Jesse James Garrett。我们知道…

echo和@echo_如何在Echo Show和Echo Spot上切换到24小时时钟

echo和echoIf you prefer the 24-hour clock format instead of the usual 12-hour format, Amazon recently (and quietly) added the ability to switch between the two on the Echo Show and Echo Spot. 如果您希望使用24小时制而不是通常的12小时制&#xff0c;那么Amazon…

生信入门-爱课程上的华中农业大学

1.生物大分子序列分析 2.主要技术 3.生物信息学的应用 4.应用2 转载于:https://www.cnblogs.com/BlueBlueSea/p/9610313.html

pc端文本_使用即将推出的Windows功能从PC发送文本

pc端文本Windows/Android/iPhone: Send and receive SMS messages on your PC, and access all the files on your phone without taking it out of your pocket. Windows / Android / iPhone&#xff1a;在PC上发送和接收SMS消息&#xff0c;并访问手机上的所有文件&#xff0…

非常详细的Exchange 功能路线图

非常详细的Exchange 功能路线图 此路线图可帮助您熟悉 Microsoft Exchange Server 2010 中的所有功能。第一部分列出了可通过 Exchange 管理控制台 (EMC) 或 Exchange 命令行管理程序管理的所有功能。该部分还说明如何在 EMC 中导航至功能&#xff0c;并提供指向相应管理主题的…

String类常用方法

定义方法类型描述public String(char[] value)构造直接将一个字符数组变为一个字符串public String(char[] value,int offset,int count)构造将一个指定范围的字符数组变为字符串public String(byte[] bytes)构造将一个byte数组全部变为字符串public String(byte[],bytes,int o…

python基础一 day6 文件操作

读写只会进行两步&#xff0c; r模式下写读 seek是按字节去找的 for line in f: for循环是一行一行的读取出来 strip默认去空格和换行符 空格、制表符、换行符、回车、换页垂直制表符和换行符称为 “空白字符” for in 一个不可变数据类型&#xff0c;比如字符串&#xff0c;先…

静态路由默认路由的配置

静态路由实验 负载均衡的一点是个人理解&#xff0c;有不正确之处欢迎批评指正。 R1配置: s0/0/0口&#xff1a;193.1.1.9/30(本地) next-hop 193.1.1.10/30 point-to-point link F0/0设置子接口&#xff1a;F0/0.1 172.17.115.1/24 VLAN1 F0/0.5 172.17.110…

r中汇率市场_如何在Word 2013表中汇总行和列

r中汇率市场If you’re working in Word and you need to total values in a table, you can do so without having to enter the data into Excel and then copy and paste it into Word. Word can do simple calculations such as summing, multiplying, and averaging. 如果…

敏捷开发

敏捷开发是1990年逐渐引起人们广泛关注的新型软件开发方式,它是具有应对快速变化需求的软件开发能力。相对于非敏捷开发&#xff0c;它是一种以客户需求为核心&#xff0c;持续迭代&#xff0c;循序渐进的开发方式&#xff0c;敏捷绝非是一种特定的开发方式&#xff0c;而是一种…

数据同步云端本地_如何从云端删除Windows 8的同步数据

数据同步云端本地The ability to sync data and settings between computers running Windows 8 is great, but it does mean that your information – possibly personal – is stored in the cloud. If you have changed your mind about syncing and want to remove your d…

前端roadmap

转载于:https://www.cnblogs.com/cleverle/p/9615061.html

国内是否可以安装alexa_Alexa可以听到您无法听到的命令,哪些黑客可以利用

国内是否可以安装alexaYour smart speaker can hear sounds that humans can’t, meaning attackers could hypothetically trigger a command without you noticing. It’s happening in labs right now. 您的智能扬声器可以听到人类听不到的声音&#xff0c;这意味着攻击者可…

ActiveMQ在windows下启动失败解决方案

activemq.xml文件中的<transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><transportConnector name"openwire" uri"tcp://0.0.0.0:61616?maximumConnections1000&amp;wireForma…

jest忽略如何添加忽略_大多数人忽略的基本家庭维护任务

jest忽略如何添加忽略Owning a home requires a lot of responsibility, most notably regular maintenance to keep everything working great. However, there are a handful of very basic home maintenance tasks that you might be forgetting about. 拥有房屋需要承担很多…

自定义常用input表单元素二:纯css实现自定义radio单选按钮

这是接着上一篇纯css自定义复选框checkbox的第二篇&#xff0c;自定义一个radio单选按钮&#xff0c;同样&#xff0c;采用css伪类和“”css选择器为思路&#xff0c;下面是预览图&#xff1a; 下面直入主题放代码&#xff1a;HTML部分 <!--两个name相同的radio--> <i…

Elasticsearch之kopf插件安装之后的浏览详解

比如&#xff0c;我的这里是http://192.168.80.200:9200/_plugin/kopf/ 1、cluster 2、nodes 3、rest 4、more 5、更多详情&#xff0c;随着深入&#xff0c;再贴写分享&#xff01; 本文转自大数据躺过的坑博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/…

邮件系统之webmail

courier-authlib 网址http://www.courier-mta.org/ flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里 虚拟用户&#xff1a;Maildir &#xff1a;/var/mailbox/Suexec apache ,httpdusergroupht…

如何将Microsoft Word文档转换为PDF

PDFs are handy for distributing documents so that they’re seen the same way by all parties. Typically, you’ll create documents using another app, and then convert them to PDF. Here’s how to do it for a Microsoft Word document. PDF易于分发文档&#xff0c…