ELK集成.Net8部署在Docker中

news/2025/1/5 8:18:39/文章来源:https://www.cnblogs.com/mingcore/p/18648971

ELK介绍

ELK,是Elastaicsearch、Logstash、Kibana三个软件的简称。

Elastaicsearch是一个开源的全文搜索引擎,基于Lucene的封装,它提供了REST API 的操作接口;

Logstach是一个开源的数据收集引擎,具有实时的管道,它可以动态地将不同的数据源的数据统一起来。

Kibana是一个日志可视化分析的平台,它提供了一系列日志分析的Web接口,可以使用它对日志进行高效地搜索、分析和可视化操作。

ELK的作用

  1. 分布式日志数据集中式查询和管理
  2. 系统监控,譬如对系统硬件和应用各个组件的监控。
  3. 故障排查。
  4. 报表功能。
  5. 日志查询,问题排查、上线检查。
  6. 服务器监控、应用监控、错误报警。
  7. 性能分析、用户行为分析、时间管理等等。

下面将演示如何让.Net8与ELK集成并在Docker中部署。

创建.Net8项目

  1. 创建WebApi项目。
  2. 安装三个Nuget包,分别是<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Serilog(4.2.0)</font><font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Serilog.Extensions.Logging(9.0.0)</font><font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Serilog.Sinks.ElasticSearch(9.0.3)</font>
  3. 打开appsettings.json配置文件,配置elk url地址。
"ELK": {"ElasticSearchUrl": "http://192.168.12.138:9200"
}
  1. 打开program.cs文件,添加如下配置
var app = builder.Build();string elkUrl = app.Configuration["ELK:ElasticSearchUrl"];Log.Logger = new LoggerConfiguration().Enrich.FromLogContext().MinimumLevel.Debug().WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elkUrl)){MinimumLogEventLevel = LogEventLevel.Verbose,AutoRegisterTemplate = true}).CreateLogger();
  1. 注册ILogger实例。
builder.Services.AddLogging(logginingBuilder=>logginingBuilder.AddSerilog(dispose:true));
  1. 添加日志,打开WeatherForecastController控制器文件,在Get方法中添加以下代码。
 _logger.LogInformation("调用WeatherForecastController控制器中的Get方法");

Docker中安装ELK

  1. 拉取ELK镜像

注意:若因网络问题下载失败,则需要配置镜像加速器。

docker pull sebp/elk

  1. 基于ELK镜像创建并运行容器。
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 --name elk sebp/elk 

报错:提示“ Native controller process has stopped - no new native processes can be started”

此时容器虽然创建了,但是运行失败,虽然通过docker start <container_id>命令可以重启容器,但是访问9200端口依旧会失败。

错误原因:ES的安全机制问题。

解决办法:

第一步:打开并编辑limits.conf文件。

vim /etc/security/limits.conf

在文件末尾添加如下内容,然后保存并退出。

elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 409

注意:看到网上一种说法是elasticsearch内容要换成非root账户,最后以非root账户运行docker run命令,但最后发现不需要切换到非root账户执行docker run命令也能运行,访问也能正常访问,暂时不清楚原因。

账户名称可以自定义,不一定非要叫elasticsearch。

第二步:打开20-nproc.conf文件,将*改为elasticsearch,然后保存并退出。

vim /etc/security/limits.d/20-nproc.conf

修改前

修改后

第三步:打开sysctl.conf文件

vi /etc/sysctl.conf 

在末尾添加如下内容,然后保存并退出。

vm.max_map_count = 655360

第四步:root账户执行以下命令

sysctl -p

第五步:使用docker ps -a命令查看所有1创建的容器,然后使用docker rm 命令删除容器。

docker ps -a
docker rm <container-id>

第六步:重新创建并运行elk容器。若要停止,则手动按ctrl+c。

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 --name elk sebp/elk 

访问ELK

主机浏览器中输入centos 的IP+9200端口号。

主机浏览器中输入centos 的IP+5601端口号

访问日志信息

  1. 在kibana界面中点击左侧图标,如图所示,将会显示菜单栏。

  1. 找到“Management”并点击该区域,此时界面会跳转

  1. 点击左侧区域的“Data”下的“Index Management”,此时界面右边将会显示相关信息,如图所示,可以看到目前列表是空的,因为还没有产生日志数据,需要调用WebApi接口产生数据。

  1. 运行WebApi项目,调用接口产生日志数据。

  1. 刷新kibana界面,可以看到列表已经产生1条数据。

点击进入详情界面

创建Data Views

回到界面左侧菜单栏,找到“Kibana”下的“Data Views”选项并点击,然后在界面右侧右上角区域点击按钮“Create data view”

在Name和Index pattern下面的文本框输入值,然后点击下面的保存按钮。

查看日志信息

点击“Analytics”下的“Discover”选项。

选择刚刚创建的data view

此时界面将会显示相关日志数据。

在搜索框中输入日志内容,按回车,将会筛选出对应的日志数据。

参考文献

.NET Core + ELK搭建可视化日志分析平台(上)

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

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

相关文章

matlab的标定工具箱

https://blog.csdn.net/weixin_43159148/article/details/97918258 https://blog.csdn.net/qq_41372644/article/details/121089361 Camera 1 Intrinsics 相机1内参 Focal length (pixels): [ 534.3145 +/- 0.3389 534.3111 +/- 0.3287 ] Principal point (pixels):[…

【Access语法】SQL连接查询

在 Microsoft Access 中,联合查询(也称为 JOIN 查询)是用于从两个或多个相关表中检索数据的一种方法。通过使用联合查询,您可以将来自不同表的数据组合在一起,以便在一个结果集中进行查看和分析。 联合查询的类型 Access 支持几种不同类型的联合查询,包括: 内连接(Inne…

神经辐射场ReNF基础

定义 神经辐射场是一种面向三维隐式空间建模的深度学习模型,这种深度学习模型又称全连接神经网络(又称多层感知机)。NeRF 所要做的任务是 Novel View Synthesis,一般翻译为新视角合成任务,定义是:在已知视角下对场景进行一系列的捕获 (包括拍摄到的图像,以及每张图像对应…

opencv + vtk + contrib 编译

https://blog.csdn.net/qq_48034474/article/details/12041170

IntelliJ IDEA 2024.3.1.1 最新版安装教程-至2099年(适用JetBrains 全家桶)

下面演示下最新版本的永久激活方法,大家按教程就可以实现一键永久激活。该工具是全家桶,大家可以放心使用。获取地址:https://www.dmjf.top/15141.html

Webstorm v2024.3.1.1 最新版安装教程-至2099年(适用JetBrains 全家桶)

下面演示下最新版本的永久激活方法,大家按教程就可以实现一键永久激活。该工具是全家桶,大家可以放心使用。获取地址:https://www.dmjf.top/15075.html

JVM实战—8.如何分析jstat统计来定位GC

大纲 1.使用jstat了解线上系统的JVM运行状况 2.使用jmap和jhat了解线上系统的对象分布 3.如何分析JVM运行状况并合理优化 4.使用jstat分析模拟的BI系统JVM运行情况 5.使用jstat分析模拟的计算系统JVM运行情况 6.问题汇总1.使用jstat了解线上系统的JVM运行状况 (1)JVM的整体运行…

Xshell Plus v7.0.14+Xftp7 永久授权版

Xshell 是更常用的安全终端模拟器,人们可以使用它远程登录其他系统服务器,达到远程控制终端的目的。 NetSarang Xshell – 知名终端连接工具,非常强大的SSH远程终端客户端 ,非常好用的SSH终端管理器。Xshell功能超级强大,性能非常优秀,其特色功能支持多标签会话管理主机,…

【Java开发】基于AOP切面的数据脱敏

#数据安全 #AOP切面编程 #数据脱敏 #微服务架构 随着数据安全法和个人信息保护法的实施,我们都知道,保护数据是企业信息化建设中非常重要的事情。 数据的生命周期包括:采集、传输、存储、处理、交换、销毁6个阶段 DSMM定义了数据生命周期中每个阶段需要做的一些安全控制,比…

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天,p177-p177 总结,总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful primarily for operat…

Android Password Safe(密码保险箱)

password safe手机版是一款主打密码管理跟保存内容的软件,密码保险箱与管理器以加密方式存储和管理你输入的所有数据,因此你可以安全存储访问数据,你只需要记住主密码。 此密码管理器允许你管理和跟踪所有敏感数据,这些数据完全加密且安全存储。 用于保护数据保险库的加密基…

Android GKD(自定义屏幕点击) v1.9.3

GKD是一款基于无障碍、高级选择器和订阅规则的自定义屏幕点击APP,为用户提供了更加便捷和智能的交互体验。通过点击跳过任意开屏广告或关闭应用内部任意弹窗广告,用户可以迅速进入应用的核心功能,而无需被广告打断。获取地址:https://www.dmjf.top/2678.html