之前有项目有用过ELK做过日志架构,不过是非docker形式安装的,今天来探究一下ELK的容器化技术

Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用。

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

NLog 一个普普通通的.Net日志记录框架,类似log4net的作用。

一、Docker 安装 Elasticsearch

# 下载镜像
docker pull elasticsearch:7.1.1

# 创建容器
docker run -d --name elasticsearch -v "/home/es":/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.1.1

容器启动以后验证一下,发现容器启动失败,错误Exited(137)

于是查看一下此docker的log日志,排查问题

提示是JDK版本不够高,但是经过网上搜索答案后,发现真实原因其实是服务器内存不够,导致没有创建成功

如果用的不是docker,直接打开/usr/local/es_cluster/node03/config/jvm.options 修改配置文件中的 -Xms 内存大小

docker可以使用 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" 参数

# 创建容器
docker run -d -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" --name elasticsearch -v "/home/es":/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.10.1

查看是否正在运行

最后发现此es容器运行半分钟后就自动关闭了,查看各种原因,发现es开启之后,服务器的CPU使用率一直在100%,

此服务器是1核2G,最后借用了公司的服务器继续完成以上步骤。

二、Docker 安装 Kibana 

安装镜像

docker pull kibana:7.10.1

创建容器

docker run -d --name kibana -e ELASTICSEARCH_URL=http://localhost:9200 -p 5601:5601 kibana:7.10.1

查看容器运行状态

访问http://120.24.145.210:5601/ 出现以下图示,表示运行成功

三、Docker 安装 :Logstash 

安装镜像

docker pull logstash:7.10.1

将文件挂载在宿主机/home/logstash下,创建相关文件夹

/home/logstash 目录下创建配置文件:logstash.yml

path.config: /homne/logstash/conf.d/*.conf
path.logs: /var/log/logstash

/home/logstash/conf.d 目录下创建启动文件:test.conf

input {
tcp {
port => 4560
mode => "server"
tags => ["tags"]
codec => json_lines
}
}
output {
elasticsearch {
hosts => "{服务器地址}:9200"
index => "boot-demo-%{+YYYY.MM.dd}"
}
}

启动Logstash,挂载目录

docker run -it -d --name=logstash -p 9600:9600 -p 4560:4560 \
-v /home/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/logstash/conf.d/conf.d/:/usr/share/logstash/conf.d/ logstash:7.10.1

查看容器,正常启动。

四、.Net Core项目中引用Nlog 

添加Nuget 包 NLog.Web.AspNetCore和NLog.Targets.ElasticSearch

新增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"
internalLogToConsole="true">
<extensions>
<add assembly="NLog.Targets.ElasticSearch"/>
</extensions> <targets>
<!--ElasticSearch保存日志信息-->
<target name="ElasticSearch" xsi:type="ElasticSearch" ConnectionStringName="ElasticSearchServerAddress"
index="userapi-${date:format=yyyy.MM.dd}" documentType="doc" includeAllProperties="true"
layout="[${date:format=yyyy-MM-dd HH\:mm\:ss}][${level}] ${logger} ${message} ${exception:format=toString}">
<field name="MachineName" layout="${machinename}" />
<field name="Time" layout="${longdate}" />
<field name="level" layout="${level:uppercase=true}" />
<field name="logger" layout=" ${logger}" />
<field name="message" layout=" ${message}" />
<field name="exception" layout=" ${exception:format=toString}" />
<field name="processid" layout=" ${processid}" />
<field name="threadname" layout=" ${threadname}" />
<field name="stacktrace" layout=" ${stacktrace}" />
<field name="Properties" layout="${machinename} ${longdate} ${level:uppercase=true} ${logger} ${message} ${exception}|${processid}|${stacktrace}|${threadname}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="INFO" writeTo="ElasticSearch" />
</rules>
</nlog>

修改appsettings.json

"ConnectionStrings": {
"ElasticSearchServerAddress": "http://{服务器地址}:9200"
}

修改Program.cs文件

public class Program
{
public static void Main(string[] args)
{
NLogBuilder.ConfigureNLog("nlog.config");
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>().UseUrls("http://*:8001;").UseNLog();
});
}

修改Startup.cs文件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddNLog();
}

注入nlog对象进行测试

去kinaba里查看结果

【Docker】.Net Core 结合Nlog集成ELK框架(Elasticsearch , Logstash, Kibana) (五)的更多相关文章

  1. ELK stack elasticsearch/logstash/kibana 关系和介绍

    ELK stack elasticsearch 后续简称ES logstack 简称LS kibana 简称K 日志分析利器 elasticsearch 是索引集群系统 logstash 是日志归集集 ...

  2. ELK( ElasticSearch+ Logstash+ Kibana)分布式日志系统部署文档

    开始在公司实施的小应用,慢慢完善之~~~~~~~~文档制作 了好作运维同事之间的前期普及.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 软件下载地址: https://www.e ...

  3. ELK(ElasticSearch+Logstash+Kibana)配置中的一些坑基于7.6版本

    三个组件都是采用Docker镜像安装,过程简单不做赘述,直接使用Docker官方镜像运行容器即可,注意三个组件版本必须一致. 运行容器时最好将三个组件的核心配置文件与主机做映射,方便直接在主机修改不用 ...

  4. Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台

    日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在各个生产服务器,且开发人员无法登陆生产服务器,这时候就需要一个集中式的日志收集装置,对日志中的关键字进行监控,触发异常 ...

  5. 开发一个二方包,优雅地为系统接入ELK(elasticsearch+logstash+kibana)

    去年公司由于不断发展,内部自研系统越来越多,所以后来搭建了一个日志收集平台,并将日志收集功能以二方包形式引入各个自研系统,避免每个自研系统都要建立一套自己的日志模块,节约了开发时间,管理起来也更加容易 ...

  6. ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例

    前言 最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录. 首先介绍下使用ELK的项目背景:在项目的数据库里有个表用来存储消息队列的消费日志,这些日志用于开 ...

  7. 【转】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    [转自]https://my.oschina.net/itblog/blog/547250 摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticS ...

  8. 【Big Data - ELK】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究 ...

  9. ELK(elasticsearch+logstash+kibana)入门到熟练-从0开始搭建日志分析系统教程

    #此文篇幅较长,涵盖了elk从搭建到运行的知识,看此文档,你需要会点linux,还要看得懂点正则表达式,还有一个聪明的大脑,如果你没有漏掉步骤的话,还搭建不起来elk,你来打我. ELK使用elast ...

  10. .net core 结合nlog使用Elasticsearch , Logstash, Kibana

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

随机推荐

  1. [转帖]Redis 最大客户端连接数,你了解吗?

    文章系转载,方便整理和归纳,源文地址:https://cloud.tencent.com/developer/article/1803944 1. 前言 上一篇文章<你的Redis集群撑得住吗? ...

  2. python+selenium+opencv验证滑块

    我们在使用selenium爬虫的时候在登录时经常会遇到滑块验证码问题,导致登录受阻,正所谓万事开头难. 登录就登录不进去更别提往后的操作的.今天以登录京东后台来演示下如何破解滑块. 一.登录 首先我们 ...

  3. 对于Vue3和Ts的心得和思考

    作者:京东物流 吴云阔 1 前言 Vue3已经正式发布了一段时间了,各种生态已经成熟.最近使用taro+vue3重构冷链的小程序,经过了一段时间的开发和使用,有了一些自己的思考. 总的来说,Vue3无 ...

  4. widows 安装docker

    1.安装docker 依次安装如下两个文件: 如启动docker报错:可以是hv没有开启,按如下方法解决 (23条消息) Windows10启动Docker报错:Hardware assisted v ...

  5. 开源即时通讯(IM)项目OpenIM源码部署流程

    由于 OpenIM 依赖的组件较多,开发者需求不一,导致 OpenIM 部署一直被人诟病,经过几次迭代优化,包括依赖的组件 compose 的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前 ...

  6. 【一】LaTeX的安装和使用、安装TeXstudio、中文界面输出设置

    安装方法一:(推荐) 下载链接·:http://tug.org/texlive/acquire-netinstall.html 下载zip,然后运行Windows批处理脚本(install-tl-wi ...

  7. 4.3 C++ Boost 日期时间操作库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  8. 最新力作,爱来自rand函数

    AWCU47EF;D5F]ET[a8a9K6G5IRHB6RS\cD8YDC:AGN<Z@6ZI3ab8D3O3La7:Sc;5_B]BS5S6Q]baWGcTE94IX7cW=9F>BJ ...

  9. Windows系统phpstudy+PbootCMS搭建网站记录

    环境 Windows 10 phpstudy v8.1           下载地址:https://www.xp.cn/download.html PbootCMS v3.2.4  下载地址:htt ...

  10. 如何在Visual Studio新C++项目中调用之前配置过的库?

      本文介绍在Visual Studio软件中调用C++各种配置.编译完毕的第三方库的方法.   在撰写C++代码时,如果需要用到他人撰写的第三方库(例如地理数据处理库GDAL.矩阵运算库Armadi ...