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

                

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

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

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

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

  2. 手把手教你如何快速搭建 ELK 实时日志分析平台

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

  3. Elk实时日志分析平台搭建

    一.   关于ELK实时日志分析平台 A.     Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源 ...

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

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

  5. ELK实时日志分析平台的搭建部署及使用

    一. ELK初步接触 1.1 为什么要用ELK 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以 ...

  6. 基于ELK搭建网站实时日志监控平台

    基于ELK搭建网站实时日志监控平台 1 为什么要用到ELK 早在传统的单体应用时代,查看日志大都通过SSH客户端登服务器去看,使用较多的命令就是 less 或者 tail.如果服务部署了好几台,就要分 ...

  7. 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践

    猫友会希望建立更多高质量垂直细分社群,本次是"大数据学习交流付费群"的第三期分享. "大数据学习交流付费群"由猫友会联合,斗鱼数据平台总监吴瑞诚,卷皮BI技术总 ...

  8. ELK——ElasticStack日志分析平台

    ElasticStack日志分析平台 ELK日志采集与分析系统概述 重读日志文件 使用Processors(处理器)过滤和增强数据 Logstash Logstash安装 使用Grok过滤器插件解析W ...

  9. 视频教程-【2019精品课】构建ELK海量日志分析平台-ELK

    [2019精品课]构建ELK海量日志分析平台 10年一线开发及项目管理经验,6年以上大数据项目架构.实施.开发与运维经验,骨灰级大数据玩家,对Hadoop.Storm.Spark.Flink.Kyli ...

最新文章

  1. Equifax再陷风波:一门户网站管理员密码是admin/admin
  2. c++ 查找文件夹下最新创建的文件_Linux文件查找进阶知识,find命令的用法及解读...
  3. 研究之路的秘密花园-个人经验分享-台湾朝阳科技大学陈金铃教授
  4. 电气:6机30节点经济调度(考虑负荷平衡、线路容量、斜坡约束)代码实现
  5. 关于swiper的tab(选项卡)中设置了autoHeight没有效果解决
  6. java商品列表展示_前台开发-----开发商品的列表显示
  7. mysql join越多性能_mysqljoin的原理和优化
  8. c/c++ 标准库 string
  9. bootstrap java web_JavaWEB开发05_Bootstrap
  10. 使用迅捷的WDS功能,无线中继小米路由器
  11. php牛牛发牌算法,分享一个牛牛算法
  12. 最近抖音上虚拟元宇宙项目-猜歌名,代码解析
  13. Clion解决c++源文件多个编译运行
  14. SpringCloud_Alibaba微服务学习---sentinel—流量卫兵
  15. Fragment与Activity之间的完美邂逅
  16. 取模运算性质_数学与编程——求余、取模运算及其性质 | 学步园
  17. ominipeek 发包_Sniffer pro与OmniPeek Personal发送数据包小差别
  18. 文章-自学的程序员如何找到好工作?
  19. 转:教大家如何用HBuilder将web项目打包成apk
  20. 共建 共识 共治 共享 —— “海峡链”介绍技术篇

热门文章

  1. mysql的分片系统_MySQL分片
  2. java mongodb drivers 2升级到3_JAVA从头开始一基础梳理(3-2)
  3. 计算机nit题百度云,计算机NIT应用基础试题
  4. mysql中使用HAVING 筛选分组后的数据
  5. 扩展类加载器 Extension ClassLoader
  6. commons-httpclient 和 httpclient 区别
  7. 网络布线工程师科普铜缆光纤损耗那点事!
  8. 一文总结 CPU 基本知识
  9. win8 linux分区工具,Ubuntu下挂载Win8磁盘分区
  10. 泰山服务器 oracle数据库,泰山之巅对话•Oracle数据库掌门人:领先对手10年?凭什么口气这么大?...