之前有项目有用过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. Linux 界面能够出现ip地址提示的方法

    cat <<EOF >/etc/profile.d/ip.sh if [[ `tty | grep "pts"` ]]; then export PS1='['& ...

  2. ElasticSearch集群灾难:别放弃,也许能再抢救一下 | 京东云技术团队

    ​ 1 前言 Elasticsearch作为一个分布式搜索引擎,自身是高可用的:但也架不住一些特殊情况的发生,如: 集群超过半数的master节点丢失,ES的节点无法形成一个集群,进而导致集群不可用: ...

  3. 我在京东做研发 | 京东云算法科学家解析爆火的ChatGPT

    令人惊艳的ChatGPT横空出世 背后有怎样的前沿技术支撑 走向大规模产品应用又有何局限 深耕对话式AI技术十余年 京东云算法科学家将带您一同走进技术世界 解析ChatGPT的技术亮点与局限 分享下一 ...

  4. 官宣!Python 开发者大会(PyCon US)提供在线订阅啦!

    今年一开年,我们就遇到了一个天大的"黑天鹅"事件,如今它已蔓延成为了一个全球性事件,而且似乎还要持续一段挺长的时间. 各行各业的人们都受到了牵连,各种计划和安排也要被迫作出调整.今 ...

  5. ABP 领域服务层学习记录

    在ABP框架中有一个约定,所有的领域服务都应该继承并实现IDomainService接口,在领域层Core创建某一个实体的领域服务类,继承并实现IDomainService接口.在ABP框架中,领域服 ...

  6. 在bat中切换盘符

    在bat代码中如何在不同的盘符中切换?直接输入盘符的名字,前面不要加cd,示例 cd %~dp0 d: cd D:\Python37 e: cd E:\Code\KSFramework c: cd C ...

  7. CE修改器入门:寻找指针基址

    上一步阐述了如何使用代码替换功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针,在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不 ...

  8. LeetCode刷题日记2020/8/22

    题目 24点程序 描述 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: ...

  9. blazor maui hybrid app显示本地图片

    啊... ... 一通操作下来感觉就是两个字 折磨 跨平台有跨平台的好处 但框架本身支持的有限 很多东西做起来很曲折 哎 这里总结一下笔者为了折腾本地图片显示的尝试 为什么要做本地图片展示呢 如果是做 ...

  10. 双层nn逻辑回归BP过程的另外一种解释

    双层nn逻辑回归 吴恩达的双层nn逻辑回归的一些符号说明比较复杂导致视频难以理解,这里简单做一个说明 注意:阅读下面内容需要具备基本的矩阵求导知识 下面是手推过程,有空在进行修改