.NetCore快速搭建ELK分布式日志中心
懒人必备:.NetCore快速搭建ELK分布式日志中心
该篇内容由个人博客点击跳转同步更新!转载请注明出处!
前言
ELK是什么
它是一个分布式日志解决方案,是Logstash、Elastaicsearch、Kibana的缩写,可用于从不同的服务中收集日志后进行处理和分析,通过Kibana可以全方面的展示收集后的信息,比如通过图表或者表格形式。
能用来做什么
(一)ELK组件在海量日志系统的运维中,可用于解决:
- 分布式日志数据集中式查询和管理
- 系统监控,包含系统硬件和应用各个组件的监控
- 故障排查
- 安全信息和事件管理
- 报表功能
(二)ELK组件在大数据运维系统中,主要可解决的问题如下: - 日志查询,问题排查,上线检查
- 服务器监控,应用监控,错误报警,Bug管理
性能分析,用户行为分析,安全漏洞分析,时间管理
安装前准备
我的系统环境是CentOS Linux release 7.6.1810 (Core)
- 安装GIT(用于下载下文提到的GITHUB项目,你也可以用curl,但项目更新比较快用GIT方便更新)
- 安装Docker(下面项目将部署到Docker中)
安装Docker-Compose(文章会用DC进行服务构建)
好了,万事具备,只欠东风。懒人安装
ELK的安装比较繁琐,网上的教程也基本都是一个个下载之后再进行安装和配置。逛了一圈gayhub找到了docker安装部署的懒人方式这是项目地址
首先在你的根目录新建一个文件夹就叫elk,然后通过GIT命令下载项目到该目录下,进入到该目录下你可以看到这样的目录结构
[root@localhost docker-elk]# ls
docker-compose.yml docker-stack.yml elasticsearch extensions filebeat kibana LICENSE logstash README.md
运行命令进行服务构建,记住一定要加个d,不然退出终端服务就停了,这个过程有点漫长,毕竟装的东西有点多
[root@localhost docker-elk]# docker-compose up -d
装完后他会默认打开以下这些端口
5000: Logstash TCP input(Logstash数据的接收通道)
9200: Elasticsearch HTTP(ES的http通道)
9300: Elasticsearch TCP transport(ES的TCP通道)
5601: Kibana(UI管理界面)
这几个服务对应的关系如下图,应用程序将日志推送给Logstash,然后放到ES进行存储,最后通过Kibana进行数据展示
当然了logstash也有很多对应的插件beats用来收集不同的日志,在高并发的情况下你也可以通过使用redis或者kafka作为中间件进行过渡,就像下面的架构图一样
在安装完成后我们用浏览器打开下面两个地址,这里会提示你输入用户名和密码:
user: elastic
password: changeme
这是默认的稍后和大家说下如何修改密码
- http://127.0.0.1:9200/ 打开可以看到ES的一些版本信息等
http://127.0.0.1:5601/ 打开后就是Kibana的界面,如果ES没有启动完成的话会提示你未找到ES数据源
好了,安装运行已经全部结束,是不是非常简单,比起网上那些长篇大论讲安装的,这里其实就两步:下载和运行dc文件.NetCore使用Nlog进行日志收集
首先在你的项目中用Nuget安装以下两个类库
NLog.Extensions.Logging和NLog.Web.AspNetCore
然后新建NLog的配置文件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"
internalLogLevel="Warn"
internalLogFile="internal-nlog.txt">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions >
<variable name="logDirectory" value="${basedir}\logs\"/>
<!--define various log targets-->
<targets>
<!--write logs to file-->
<!--address 填写Logstash数据的接收通道-->
<target xsi:type="Network"
name="elastic"
keepConnection="false"
address ="tcp://127.0.0.1:5000"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
/>
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="elastic" />
</rules>
</nlog>
然后在Startup>Configure中引入Nlog
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
LogManager.LoadConfiguration("Nlog.config");//引入配置文件
loggerFactory.AddNLog();//注入Nlog
}
接下来在自己项目是进行一个简单的测试
Logger log = NLog.LogManager.GetCurrentClassLogger();
log.Debug("测试日志内容");
Kibana中配置对刚才的日志进行分析
Kibana必须要先有数据后才能对数据进行展示,所以我们必须要有上面的测试数据,然后配置索引进行数据查看
登录进来后左边随机点一个菜单来到如下界面
点击Create index pattern来到如下界面,这里就是配置你要展现ES中哪个索引下的内容,这里nci-bids-log-2019xxx这是logstash生成的,你们的可能叫logstash-2019xxxx,我的索引在配置中被我重命名了一下方便区分项目
通过名称来进行模糊匹配,匹配规则貌似就是正则,匹配成功会提示如下信息,然后点击 Next-Step
这里让你选择一个时间字段,就选择@timestamp然后下一步结束创建,然后点击左边第一个菜单就能看到图表和详细信息了
其它的功能自己摸索吧
配置
ELK的配置文件都是以Volume的方式来挂载的,对应每个文件夹下面的Configs里面。
比如logstash的配置文件cd logstash/config
下面的logstash.yml就是他的配置文件。
对了这里使用的版本需要密码是因为es使用了一个商业版,有效期是30天,如果不想使用这个的话可以去es的配置目录把xpack的配置改成如下就可以:
xpack.license.self_generated.type: basic
xpack.security.enabled: false
xpack.monitoring.collection.enabled: false
后面有空和大家再分享下通过kafka作为中间件的方式以及具体的一些配置内容
.NetCore快速搭建ELK分布式日志中心的更多相关文章
- 懒人必备:.NetCore快速搭建ELK分布式日志中心
该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaicsearch.Kibana的缩写,可用于从不同的服务中收集日志 ...
- ELK分布式日志收集搭建和使用
大型系统分布式日志采集系统ELK全框架 SpringBootSecurity1.传统系统日志收集的问题2.Logstash操作工作原理3.分布式日志收集ELK原理4.Elasticsearch+Log ...
- 使用Docker快速搭建ELK环境
今天由于Win系统的笔记本没带回家,其次Docker在非Linux系统下都需要安装额外的软件去镜像才行 所以感觉没有差别,先直接用Mac搭建一遍呢, 本篇部分命令和配置内容为摘抄 Mac下使用Dock ...
- ELK 分布式日志实战
一. ELK 分布式日志实战介绍 此实战方案以 Elk 5.5.2 版本为准,分布式日志将以下图分布进行安装部署以及配置. 当Elk需监控应用日志时,需在应用部署所在的服务器中,安装Filebeat ...
- 手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...
- 快速搭建ELK集中化日志管理平台
由于我们的项目是分布式,服务分布于多个服务器上,每次查看日志都要登录不同服务器查看,而且查看起来还比较麻烦,老大让搭一个集中化日志管理的东西,然后就在网上找到了这个东西ELK ELK就是elastic ...
- ELK分布式日志+NLog在.NetCore中的应用
一.ELK简介 ELK是Elasticsearch.Logstash和Kibana首字母的缩写.这三者均是开源软件,这三套开源工具组合起来形成了一套强大的集中式日志管理平台 Elasticsearch ...
- ELK+Kafka学习笔记之搭建ELK+Kafka日志收集系统集群
0x00 概述 关于如何搭建ELK部分,请参考这篇文章,https://www.cnblogs.com/JetpropelledSnake/p/9893566.html. 该篇用户为非root,使用用 ...
- asp.net core结合NLog搭建ELK实时日志分析平台
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...
随机推荐
- saltstack的简单搭建
环境; centos 7 192.168.10.10 master centos 7 192.168.10.129 minion 1.为了方便关闭防火墙 [root@local ...
- 如何提高你的移动开发中AS3/AIR性能
Shawn Blais 让我了解到如何在移动平台上对AS3代码进行优化.他的博客(http://esdot.ca/site/category/blog)只有十来篇文章,但都是些很意思的信息,尤其适合我 ...
- sigprocmask阻塞信号
有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数 1. 信号阻塞和忽略信号的区别 操作系统在信号被进程解除阻塞之前不会将信号传递出去, ...
- Android源码分析(十三)----SystemUI下拉状态栏如何添加快捷开关
一:如何添加快捷开关 源码路径:frameworks/base/packages/SystemUI/res/values/config.xml 添加headset快捷开关,参考如下修改. Index: ...
- Linux搭建邮件服务器Postfix+Dovecot+MySQL+PHP
用于搭建的服务器信息 阿里云 Centos 6.5 32位 安装过程1.安装Postfix 版本(2:2.6.6-8.el6) yum -y install postfix 安装完成还需要替换系统自带 ...
- apache2.4
介绍 Apache HTTP server是Apache软件基金会的一个开源的网页服务器,可以运行在几乎所有广泛使用的计算机平台上,由于跨平台和安全性被广泛使用,是目前最流行的web服务器软件之一,目 ...
- ansible自动化运维03
ansible自动化运维常用模块 常用模块实现的功能:安装软件包:修改配置文件:创建程序用户组:创建目录,并修改所属和权限:挂载:启动服务:测试. command模块: shell模块: 注意:com ...
- angular-依赖注入 显示注入/隐式注入
1.隐式注入:不需要开发人员干预,angularJS自动根据参数的名称识别和注入数据 app.controller("myCtrl".function($scope) { $sco ...
- 重复的DNA序列[哈希表] LeetCode.187
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助. 编写一个函数 ...
- django 权限设置 左侧菜单点击显示,面包屑
1.左侧菜单点击显示 就是在点击的时候保留点击的功能 方法. 1.加入新的字段,pid来判断 class Permission(models.Model): """ 权限 ...