最近火的不能再火的日志框架就是ELK,其中E(Elasticsearch)表示日志存储,L(Logstash)表示日志收集,K(kibana)表示日志的UI界面,用来查询和分析,而其中的L可以使用Fluentd来代替,并且以上架构都可以通过docker来进行快速的部署。

它们的工作流程

fluentd系统有输入和输出,输入对应我们的应用程序,输出对应咱们的ES存储系统,在.net平台上,如果希望把日志发到fluentd,有三种方式,下面分别简单说一下:

  1. http方式
  2. tcp方式
  3. 客户端c/s方式

一 http方式

构建一个共享的httpclient对象,然后声明为keep-alive,使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。

fluentd配置:

<source>@type httpport 24224bind 0.0.0.0</source>

C#代码:

                    var json = JsonConvert.SerializeObject(new{target_index = projectName,timestamp = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),Level = level.ToString(),Message = message,StackTrace = ex?.StackTrace});json = json.Replace("target_index", "@target_index").Replace("timestamp", "@timestamp");var httpContent = new StringContent(json, Encoding.UTF8);httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");httpClient.PostAsync(apiLoggerUrl, httpContent).Wait();

二 tcp方式

tcp方式比http要复杂一些,在fluentd配置时也需要注册,在性能上优于http,目前NLog.Targets.Fluentd这个框架对它进行了集成,但说明文档不是很清楚,大叔经过测试也已经成功实现了tcp的日志记录,需要注意的地方就是fluentd在接受tcp时,需要有一个结果标示,默认是\n,在客户端发送请求时需要在数据包结尾添加它。

NLog.Targets.Fluentd在github上的地址:

https://github.com/fluent/NLog.Targets.Fluentd

fluentd配置:

  <source>@type tcptag pilipaformat /^(?<field1>\d+):(?<field2>\w+)$/port 24224bind 0.0.0.0</source><match **>@type stdout</match>

客户端调用

          var fluentdTarget = new NLog.Targets.Fluentd(){Host = "192.168.200.214",Port = 24224,Tag = "pilipa",LingerEnabled = false,NoDelay = true,EmitStackTraceWhenAvailable = false,};LoggingConfiguration config = new LoggingConfiguration();config.AddRuleForOneLevel(LogLevel.Info, "fluentd");LogManager.Configuration = config;Logger logger = LogManager.GetLogger("Example");logger.Info(json + "\n"); //这是必须的,看到\n表示数据包结束Console.Read();

然后在我们的fluentd上就可以看到日志了。

三 客户端c/s方式

目前正在研究,客户端驱动地址:https://docs.fluentd.org/v0.12/articles/windows#set-up-nxlog-on-windows

转载于:https://www.cnblogs.com/lori/p/7716093.html

ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd相关推荐

  1. ELK系列~对fluentd参数的理解

    这段时候一直在研究ELK框架,主要集成在对fluentd和nxlog的研究上,国内文章不多,主要看了一下官方的API,配合自己的理解,总结了一下,希望可以帮到刚入行的朋友们! Fluentd(日志收集 ...

  2. 从零学ELK系列(一):为什么要跟我学从零学ELK系列

    [前言] 网上写ELK日志收集系统,项目集成ELK,Docker,本地安装虚拟机这些孤立技术点文章汗牛充栋:但是很少有文章能即生动又能结合场景的从零一步一步搭建一套生产级日志收集系统并将生产项目集成日 ...

  3. 从零学ELK系列(十一):SpringBoot项目接入ELK超级版(超详细图文教程)

    前言 之前在<从零学ELK系列(十):SpringBoot项目接入ELK升级版(超详细图文教程)>中演示了SpringBoot项目接入ELK请求记录及优化,本次针对于未知异常通过拦截进行记 ...

  4. ELK系列(四)、Logstash读取nginx日志写入ES中

    前面讲了ELK的部署以及Logstash的插件的安装方式,本篇就介绍一下如何使用Logstash读取nginx的日志,并写入ES中,通过Kibana分析. ELK系列(一).安装ElasticSear ...

  5. 从零学ELK系列(十):SpringBoot项目接入ELK升级版(超详细图文教程)

    前言 之前在<从零学ELK系列(八):SpringBoot项目接入ELK(超详细图文教程)>中演示了SpringBoot项目接入ELK,后来项目中对这部分进行了优化,之前博文中也有读者问到 ...

  6. ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载

    简介 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包: 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件:从 3.0 版本开始 ...

  7. ELK系列(十五)、Elasticsearch核心原理一篇全搞定

    目录 Lucene 介绍 核心术语 如何理解倒排索引? 检索方式 分段存储 段合并策略 Elasticsearch 核心概念 节点类型 集群状态 3C和脑裂 1.共识性(Consensus) 2.并发 ...

  8. Java学习系列(十六)Java面向对象之基于TCP协议的网络通信

    TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...

  9. CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)

    CSDN博客地址(关注,点赞) 人工智能推荐 GitHub(Star,Fork,Watch) [前言] 为了更加真实的模拟生产部署环境,不仅需要Linux环境支持,而且ELK需要在不同的机器上部署:再 ...

  10. elk系列1之入门安装与基本操作

    preface 我们每天都要查看服务器的日志,一方面是为了开发的同事翻找日志,另一方面是巡检服务器查看日志,而随着服务器数量以及越来越多的业务上线,日志越来越多,人肉运维相当痛苦了,此时,参考现在非常 ...

最新文章

  1. Android初学者教程
  2. Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法
  3. 在CentOS上禁用IPv6
  4. linux C++怎么转java?从云计算切入容易么?
  5. [BUUCTF-pwn]——picoctf_2018_buffer overflow 2
  6. python——学习笔记2
  7. 二分图的最大匹配问题
  8. CV+医疗领域实践项目!适合入门的图像分类领域新赛事
  9. 使用 Proteus 仿真 STM32
  10. (数据科学学习手札05)Python与R数据读入存出方式的总结与比较
  11. php 联接sq sever,步骤 4:使用 PHP 弹性连接到 SQL
  12. IntelliJ IDEA激活破解有效方法
  13. 算法基础部分3-动态规划
  14. Thinkpad笔记本没有声音的解决办法参考
  15. 注塑机结构及辅助设备详解
  16. 能否用计算机发短信,电脑发手机短信要怎么操作 用电脑发短信是免费的吗
  17. AutoLayout(Ⅱ):遇到的几个小问题(Keng)
  18. 曲面积分的投影法_在家学|第一类曲面积分与第二类曲面积分的计算
  19. perl(Time::HiRes) is needed mysql5.7
  20. abs和pc混在一起怎么解决_PC/ABS常见问题及解决方案

热门文章

  1. (转)悟透javascript
  2. 创建型模式专题总结:Creational Pattern(转自Terrylee)
  3. 复杂车间调度问题三维析取图建模系列预告
  4. 【OpenCV学习笔记】【函数学习】十三(剔除检测到的不符合要求的对象)
  5. 智能优化算法:阴阳对优化算法-附代码
  6. Java 单向链表翻转
  7. 技术人真的能做一辈子技术么?
  8. android多个单选按钮互斥使用,在GUI设计中,单选按钮用来实现用户在多个选项中的互斥选择,在同一组内多个选项中只能选择一个,当...
  9. python清空list_python怎么清空list
  10. vsan 一台主机磁盘组全报错_分享VSAN磁盘无法识别的故障解决方法