ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点
经验与实践
前两篇文章里我们介绍了nxlog的日志收集和转发《ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)》,今天我们主要总结一下,在与log4和fluentd及elasticsearch配合工作时需要注意的几个点,这几个点也是我们经常遇到的坑,希望可以帮到大家!我们从日志产生端log4开始说。
- log4需要注意的,编码与时间戳格式
- nxlog需要注意output里对内容处理
- fluentd需要注意类型和format的规定
1 log4产生日志,格式必须是utf-8,ansi编码对中文解析时有问题,主要表示在fluentd到elasticsearch写数据时
<datePattern value="yyyyMMdd"Error.log"" />
<encoding value="utf-8" />
<layout type="log4net.Layout.PatternLayout">
</layout>
</appender>
2 log4日志里,时间戳@timestamp,需要是UTC时间,格式为yyyy-MM-ddTHH:mm:ss.fff+0800
private static string FormatStr(string level, string message, Exception ex)
{
var json = JsonConvert.SerializeObject(new
{
target_index = projectName,
timestamp = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff+0800"),
Level = level.ToString(),
Message = message,
StackTrace = ex?.StackTrace
});
json = json.Replace("target_index", "@target_index").Replace("timestamp", "@timestamp");
return json;
}
3 nxlog日志收集时,由于log4产生的数据都是\r符号,所以在nxlog.conf里需要对output进行过滤,当然\n,使它变成两条消息,这样主体消息里就没有\r了,json解析时就不会有问题
<Output out>
Module om_tcp
Host 192.168.200.214
Port Exec $raw_event =$raw_event + "\n";
</Output>
4 fluentd的配置里,类型需要是tcp,格式format需要是none
<source>
@type tcp
tag windows.log
format none
port
bind 0.0.0.0
</source>
<filter docker.**>
type parser
format json
time_format %Y-%m-%dT%H:%M:%S.%L%Z
key_name log
reserve_data true
</filter>
<match **>
@type stdout
</match>
5 最后就是成功写入elasticsearch,通过kibana就可以查看日志了

请把学习作为一种习惯!
请把积累和总结变成一种学习的方式!
感谢各位的阅读!
ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点的更多相关文章
- ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd
最近火的不能再火的日志框架就是ELK,其中E(Elasticsearch)表示日志存储,L(Logstash)表示日志收集,K(kibana)表示日志的UI界面,用来查询和分析,而其中的L可以使用Fl ...
- Logstash学习之路(二)Elasticsearch导入json数据文件
一.数据从文件导入elasticsearch 1.数据准备: 1.数据文件:test.json 2.索引名称:index 3.数据类型:doc 4.批量操作API:bulk {"index& ...
- ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)
本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...
- ELK系列~nxlog实现多位置文件的收集
前几天我写了几篇关于ELK日志收集,存储和分析的文章: ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd ELK系列~Nxlog日志收集加转发(解决log4日志 ...
- 2. 妈呀,Jackson原来是这样写JSON的
没有人永远18岁,但永远有人18岁.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众 ...
- ELK系列~Fluentd对大日志的处理过程~16K
Fluentd是一个日志收集工具,有输入端和输出端的概念,前者主要是日志的来源,你可以走多种来源方式,http,forward,tcp都可以,后者输出端主要指把日志进行持久化的过程,你可以直接把它持久 ...
- elk系列3之通过json格式采集Nginx日志【转】
转自 elk系列3之通过json格式采集Nginx日志 - 温柔易淡 - 博客园http://www.cnblogs.com/liaojiafa/p/6158245.html preface 公司采用 ...
- ELK系列七:Elasticsearch的集群配置和监控以及在部署ELK中踩的坑
1.基本下载安装 #按照ELK系列一博客安装启动即可,没有大坑,注意一下权限即可 chmod -R 777 ./elasticsearch #此外没有java的,注意安装下JDK,我这次部署的环境是C ...
- ELK系列三:Elasticsearch的简单使用和配置文件简介
1.定义模板创建索引: 首先定义好一个模板的例子 { "order":14, "template":"ids-1", "state ...
随机推荐
- 201521123026 《Java程序设计》第一周学习总结
1. 本章学习总结 1.简要了解JAVA的发展史以及其特点(面向对象.跨平台性,健壮性,安全性,可移植性,多线程性,动态性等) 2.认识JAVA三大平台(Java SE,Java EE,JavaME) ...
- 201521123081《java程序设计》 第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 参考资料:XMind ============================================== ...
- 201521123065《java程序设计》第13周学习总结
1. 本周学习总结 1.协议是端口之间进行网络通信的一种语言规则语法: 2.套接字Socket用于实现客户端与服务器端的连接,实现网络通信,进行数据交换: 3.LocalHost可以用来获取主机地址: ...
- 201521123062《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中fin ...
- 多线程:head first Thread.join()
不使用Thread.join() 测试线程 先上代码: /** * Created by Zero on 2017/8/23. */ public class TestJoin implements ...
- 关于Java中数组的常用操作方法
1. 声明一个数组 String[] arr1 = new String[5]; String[] arr2 = {"a","b","c", ...
- 解决Maven管理的项目下"Missing artifact xxx bundle"问题
例如使用maven编译使用了mina的包的工程,出现如下提示: [INFO] Scanning for projects... [INFO] ...
- 微信小程序--图片相关问题合辑
图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.preview ...
- openEntityForm时候如何给关于(regardingobjectid)类型查找字段赋值?
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170924可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- appium 原理解析
Appium是 c/s模式的appium是基于 webdriver 协议添加对移动设备自化api扩展而成的webdriver 是基于 http协议的,第一连接会建立个 session 会话,并通过 p ...