公司业务需要将应用的日志(json格式)写入到es中,使用kafka做缓冲,logstash进行字段过滤
自己造的json格式:
{"date":"2019-07-31 10:09:16.674","level":"INFO7","userCode":"3434343","clientIp":"192.168.200.57","clientId":"12","hostName":"192.168.210.57","requestURL":"http://","logger":"Sample","msg":{"我是":"address","birthday3":"天气真好","birthda1":"2019-02-03","birthda3":"2019-03-05","birthda2":"2019-12-05","content":"<s>sdfjdki</s><sdfd>
</sdfd>
dfdfdfd"}}
json有换行,进入到kafka中时显式的是\n,实际日志中是看不到\n的,在logstash的filter中gsub 使用的\n 、\x0a等多种方式都没有成功,最后无意中发现一种方式可以解决:
logstash采用的是6.8.0
情况一: 日志中有显式的\n
filter {
mutate {
gsub => ["message","\\n",""]
# 显式的采用此种方法替换
情况二: 日志中无显式的\n 仅仅是显示换行(肉眼看不到)
filter {
mutate {
gsub => ["message","
",""]
#此处特别注意 !!! 您没有看错,这个地方不是写错了,是一个真真正正的换行符(直接在双引号中间敲了一个回车)
#替换\n ,采用\\n是不行的,需要在这里输入一个回车,因为原始log文档里没有显式的出现\n 而是看不见的回车,所以这里也要采用看不见的回车进行处理
#此处特别注意 !!! 您没有看错,这个地方不是写错了,是一个真真正正的换行符(直接在双引号中间敲了一个回车) 执行后替换成功!!
替换\n ,采用\n是不行的,需要在这里输入一个回车,因为原始log文档里没有显式的出现\n 而是看不见的回车,所以这里也要采用看不见的回车进行处理
由于logstash内存占用较大,灵活性相对没那么好,ELK正在被EFK逐步替代.其中本文所讲的EFK是Elasticsearch+Fluentd+Kfka,实际上K应该是Kibana用于日志的展示,这一块不做演示,本文只讲述数据的采集流程.
docker
docker-compose
apache kafka服务
数据采集流程
数据的产生使用cadvisor采集容器的监控数据并将数据传输到Kafka.
数据的传输链路是这样: Cadvisor->Kafka->Fluentd->elasticsearch
每一个服务都可以横向扩展,添加服务到日志系统中.
1.filebeat收集需要提取的日志文件,将日志文件转存到kafka集群中,logstash处理kafka日志,格式化处理,并将日志输出到elasticsearch中,前台页面通过kibana展示日志。
2.使用kafka集群做缓存层,而不是直接将filebeat收集到的日志信息写入logstash,让整体结构更健壮,减少网络环境,导致数据丢失。filebeat负责将收集到的数据写入kafka,logstash取出数据并处理。
kibana又如何用直观的显示我们希望看到的日志报表?
根据数据显示看板,大致三步,
第一步是设置数据源,根据我们之前推送给elasticsearch的日志数据,使用management标签创建索引模式;
第二步根据第一步创建的索引模式,使用Visualize 标签页用来设计可视化图形;
第三步根据第二步做好的可视化图形,使用Dashboard标签来配置我们的看板
一、下面我们开始做第一步,创建索引:
目前有两天的数据,我们创建一个能包含这两天数据的索引模式:
创建好索引模式后,点击“Discover”标签后就可以看到我们创建的“errinfo-scm”
Elasticsearch使用手册,使用Elasticsearch进行基础查询,高级查询,使用Python调用Elasticsearch,同步数据库中的数据到Elasticsearch中,使用第三方服务将将Elasticsearch与数据库日志关联,若数据库改变则Elastic search中数据同步变化
本次我们搭建的目标是通过ELK来收集微服务中的日志。本期主要以实操、快速搭建为主进行讲解,部分基础概念不做过多描述,后续会再单独出几期博客说明
首先我们要部署的架构如下图所示,需要收集两个微服务的日志,并且最终在kibana中可视化呈现出来。
可以看出日志的传输路线是:微服务产生日志,并将日志数据保存到磁盘中的.log文件中,filebeat监听log文件,将其数据收集并结构化后传输到logstash上,logstash将日志进行过滤收集,再传输到elasticsearch上,elast
哈喽,everybody,这是go-elastic学习系列教程第二篇文章。上一篇我们学习了ElasticSearch基础,如果还不懂基础的,可以先看一看上一篇文章,传送门。这一篇我们开始实战,写了一个小demo,带你们轻松入门ElasticSearch实战开发,再也不用担心es部分的需求开发了。代码已上传github,可自行下载学习。如果能给一个小星星就好啦。好啦,废话不多说,直接开始吧。
github地址:https://github.com/asong2020/Golang_Dream/tree
官网:https://www.elastic.co/cn
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方中文:https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
社区中文:
https://es.xiaoleilu.com/index.html
http://doc.codingdict.c
POST mall/_doc/_bulk
{ "index":{} }
{ "goods_name":"苹果","goods_price":10.0,"goods_description":"新鲜苹果,10元一斤" }
{ "index":{} }
{ "goods_name":"梨子"...