(19)go-micro微服务filebeat收集日志

目录
  • 一 Filebeat介绍
  • 二 FileBeat基本组成
  • 三 FileBeat工作原理
  • 四 Filebeat如何记录文件状态:
  • 五 Filebeat如何保证事件至少被输出一次
  • 六 安装Filebeat
  • 七 使用Filebeat
      • filebeat.yml编写
  • 八 最后

一 Filebeat介绍

  • filebeat是Beats中的一员。

  Beats在是一个轻量级日志采集器,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

  • Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

二 FileBeat基本组成

  • Prospector (勘测者) :负责管理Harvester并找到所有读取源。

  • Harvester (收割机) :负责读取单个文件内容,每个文件启动-个。

三 FileBeat工作原理

启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。

clipboard.png

四 Filebeat如何记录文件状态:

  • 文件状态记录在文件中 (默认在/ar/ib/filebeat/registry )

  • Filebeat 会记录发送前的最后一行,并再可以连接的时候继续发送

  • 每个 Prospector会为每个找到的文件记录一个状态

  • Filebeat 存储唯一标识符以检测文件是否先前被收集

五 Filebeat如何保证事件至少被输出一次

  • Filebeat 将每个事件的传递状态保存在文件中

  • 在未得到输出方确认时, Filebeat 会尝试-直发送,直到得到回应

  • 任何在Filebeat 关闭之前未确认的事件,都会在filebeat重启之后重新发送

  • 可确保至少发送一次,但有可能会重复

六 安装Filebeat

  • 下载链接:http://www.elastic.co/cn/downloads/past-releases/filebeat-7-9-3

  • 记住选择对版本和系统(Filebeat版本和Elasticsearch版本一致)

  • 下载后解压到项目目录下

  • 启动命令:filebeat -e -c filebeat.yml

  • filebeat.yaml 是需要编写的,接下来一起来编写一下

七 使用Filebeat

filebeat.yml编写

  • 在account目录下新建filebeat.yml ,输入以下代码:
# 输入
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - ./*.log
# 输出
output.logstash:
  hosts: ["localhost:5044"]
  • 这样,filebeat.yaml就完成了

  • filebeat.exe放到account目录下

  • 启动filebeat.exe:filebeat -e -c filebeat.yml

  • 同级目录下多了一个data文件夹,里面是:

image.png

  • 至此,filebeat收集日志工作就完成啦。

八 最后

  • 至此,go-micro微服务filebeat收集日志工作就正式完成。

  • 接下来就开始Elasticsearch使用的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击 夏沫の梦学习交流

本文转载于网络 如有侵权请联系删除

相关文章

  • Docker和k8s的故障排除和监控利器 Weave-Scope服务

    Weave-Scope服务是一个用来监控docker容器、k8s等(包括宿主机)的资源使用状况的,从根本上来说,有些类似于Zabbix等监控服务,该服务式基于容器部署的,部署简单,但功能强大,美中不足的可能就是其安全方面存在一些隐患吧! 一、部署Weave-Scope主机名IP服务docker01192.168.171.151dockerdocker02192.168.171.150docker注:主机名千万别冲突 1、docker01服务器配置如下[root@docker01~]#wgethttps://github.com/weaveworks/scope/archive/v1.11.0.tar.gz#下载scope命令 [root@docker01~]#tarzxfv1.11.0.tar.gz#解压下载的源码包 [root@docker01~]#cdscope-1.11.0/ [root@docker01scope-1.11.0]#mvscope/usr/local/bin/#将该命令移到指定目录 #至此的所有操作,其实都可以通过官方给出的一条命令“curl-Lgit.io/sc

  • Python中的条件判断、循环以及循环的终止

    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/github_39655029/article/details/81211268条件判断 条件语句是用来判断给定条件是否满足,并根据判断所得结果从而决定所要执行的操作,通常的逻辑思路如下图; 单次判断形式if<判断条件>: <执行> else: <执行>复制例子age=int(input("输入你的年龄:")) ifage<18: print("未成年") else: print("已成年")复制多次判断形式if<判断条件1>: <执行1> elif<判断条件2>: <执行2> elif<判断条件3>: <执行3> else: <执行4> ...复制例子age=int(input("输入你的年龄:")) ifage>=18

  • MySQL分区表

    为什么要用分区表?为什么不是分库分表? 随着业务的发展,当然现在比较流行的微服务无非就是业务垂直拆分+功能水平拆分,应用加节点是比较简单的,但是每个业务的单库单表扛不住了;数据库分库分表相对来说更复杂一点,但是分区表可以继续支持业务发展两三年,人手有限的情况下,我觉得分布表更合适一点。架构的终极目标是用最小的人力成本来满足就构建维护系统的需求。分区表是一个独立的逻辑表,但是底层由多个物理子表组成。对于SQL层 来说是一个完全封装底层实现的黑盒子,对应用是透明的,但是从底层的 文件系统来看,每一个分区表都有一个使用#分隔命名的表文件。MySQL实现分区表的方式——对底层表的封装。索引也是按照分区的子表定义的,而没有全局索引。MySQL在创建表时使用PARTITIONBY子句定义每个分区存放的数据。在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区,只需要查找包含需要数据的分区就可以了。 一个表最多只能有1024个分区(MySQL5.6之后支持8192个分区)。在MySQL5.1中,分区表达式必须是整数,或者是返回整数的表达式。在MySQL5.

  • C++ getchar()函数

    getchar函数功能:从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。具体说明:1.从缓冲区读走一个字符(相当于清除缓冲区);2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误; 3. getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) getchar()使用不方便,解决方法:  (1)使用下面的语句清除回车:        while(getchar()!='\n');  (2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件<conio.h> 函数用法:该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。如: #i

  • Linux各目录及每个目录的详细介绍

    在Linux下,我们看到的是文件夹(目录):   在早期的UNIX系统中,各个厂家各自定义了自己的UNIX系统文件目录,比较混乱。Linux面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出FHS(FilesystemHierarchyStandard)的Linux文件系统层次结构标准。FHS标准规定了Linux根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。 无论何种版本的Linux发行版,桌面、应用是Linux的外衣,文件组织、目录结构才是Linux的内心。 FHS(英文:FilesystemHierarchyStandard 中文:文件系统层次结构标准),多数Linux版本采用这种文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。 第二层则

  • 解决方案| MongoDB PSA 架构痛点以及如何应对?

    一.背景 最近MongoDB群里面有群友遇到2次重启MongoDB后一直处于实例恢复状态(应用OPLOG),多达几天甚至更长才完成重启,通常MongoDB副本集三个实例作为标准,重启主库会发生重新选出新主节点(通常在12s内完成)重新对外服务,通常不符合官方标准化或者内部发生异常导致的。经过了解副本集采用PSA架构且存在一个数据从节点不可达的情况(甚至有的从节点宕机几个月没有发现),来分析这些情况以及如何应对。 主要包括以下内容:(WT存储引擎下版本是3.2、3.4、3.6、4.0、4.2为主,4.4、5.0也存在)。 PSA架构下从节点宕机后,重启主库为什么会这么久 PSA架构还有哪些问题 PSA架构下如何缓解内存压力以及推荐PSS方案 模拟PSA架构下重启主库实例后长时间等待的情况并通过不同方案来解决 二.PSA架构重启主库为什么会这么久 备注:有个提前是从库宕机存在一定周期且在此期间产生大量的脏数据。 2.1官方PSA架构介绍 当数据节点宕机且enableMajorityReadConcern(WT3.2版本开始默认开启),内存压力增大,这里只是说内存压力增大,没有进一步说明影响

  • django之分组,聚合,F.Q.查询

        related_name:基于双下划线的跨表查询,修改反向查询的字段     related_query_name:基于对象的跨表查询,修改反向查询字段     聚合查询:(聚合函数的使用)       fromdjango.db.modelsimportCount,Max,Min,Avg,Sum       ret=models.Book.objects.all().aggregate(aa=Avg('price'))     分组查询       groupby 谁,就以谁做基表       values在前:表示group by       values在后:取值       filter在前:表示where条件       filter在后:表示having     F和Q查询       F查询:取出数据库中某个字段的值,然后进行运算       Q查询:表述出或与非的情况,用的最多的是或的情况       

  • 谈谈混合 App Web 资源的打包与增量更新

    综述 移动App的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合App如何加载Web资源并不是一个新问题。本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包工具。本文提到的思路只是一家之言,基本没有参考现有方案,各位方家有不同意见欢迎留言。另外本文没有涉及到App内部如何加载资源的问题,这部分我会专门撰写一篇文章讨论。 需求梳理 一般来说,Hybrid-app对于Web资源下载有如下需求: 页面开启速度要快,所以资源的下载和使用不是在同一时间进行的,有一个“预下载”的过程。 资源不能重复下载,所以要有缓存,但是有更新的时候必须及时更新。鉴于WebView的缓存可控性不强,所以要有一套自定义缓存机制。 为了节省流量加快速度,如果资源以压缩包为单位整体下载,那么资源更新时要支持增量更新。同时,对于设备端资源与最新版本相隔一个版本以上的情况,要提供全量更新。 为了维持一定的健壮性,Web资源在设备本地和线上应各有一份部署,可以随时切换。尤其是当设备本地缓存被删除时,可以临时切换到线上。 资源打包方案 为了方便开发和部署,笔者设计了如下打包方

  • Android 查看PDF 部分文字无法显示 放大PDF再转图片BitMap

      这里十分感谢一位同学的帮助。   一系列百度之后的结果,得到的解决方法 AndroidPdfViewer,PDF.js...去显示PDF。 AndroidPdfViewer    AndroidPdfViewer很多博客指出他的缺点是使APK增大,其实不在我考虑范围。只要能实现┭┮﹏┭┮ (好没出息的样子) 但我是遇到了致命的问题,AndroidPdfViewer是jcenter库中的,我的Android项目不允许我使用jcenter。于是放弃了   PDF.js   参考博文:https://blog.csdn.net/taoyuxin1314/article/details/97004996   ⭐注意这里有些版本用的是PDFJS  使用这种方式我也完美的展现了PDF,但是很快我遇到了问题   PDF文件后期通过程序对PDF编辑插入的文字无法显示 于是我开始了解决问题之旅··· 1、查看未显示出来的问题与其他文字区别。(该文字通过PDF直接编辑插入) 2、通过WPS插入文件,查看是否能够正常显示。(结果:插

  • Vue.js 项目开发学习路线图

    1.思维导图   源文件:Vue路线图.xmind 参考文献 [1]. VueJs2.0建议学习路线-lavyun-博客园 [2]. Vue学习路线图-个人文章-SegmentFault思否 [3]. Vue框架-01-入门篇图文教程-肖朋伟-CSDN博客  

  • EPLAN部件库汇总贴转

    经常看到网友求EPLAN部件库,授人以鱼不如授人以渔,大可不必把所有部件装上,比如软件自带的部件库,我都弃之不用,新建一个部件库,把工作中经常要用到的部件慢慢添加进去。慢慢的你会发现:画图效率越来越高了!现在整理了一些常用品牌的部件库下载链接:西门子https://www.automation.siemens.com/bilddb/search.aspx?multipleObjectTypes=61|64|63|65|60菲尼克斯https://www.phoenixcontact.com/online/portal/cn?1dmy&urile=wcm%3apath%3a/cnzh/web/main/service_and_support/subcategory_pages/Downloads/9683598d-bfd3-4fd0-b924-2c4a737e6f4fABBhttps://new.abb.com/drives/zh/lv-ac-drive/general-purpose-drive/acs550魏德米勒https://www.weidmueller.com/int

  • [公司搭建git私服]gitLab搭建过程

    前言   我们都知道GitHub、oschina等等的存在,也是非常庞大的开源代码社区。如果公司想要使用git来管理代码,但不想所有人都来荡你的代码就需要私服了。    而GitHub的私服是花钱的,我们常常使用gitlab来搭建私服。GitHub和gitlab是分别两个公司提供的。下面记录一下搭建gitlab私服的过程已经git的学习。 环境      首先要先安装git在本地,我的是macOS,在安装xcode的时候就已经安装好git环境的,其他系统可以在官网下载git:https://www.git-scm.com/           公司的服务器是Ubuntu             git本身是一个版本控制软件git !=github      github和gitlab是一个管理版本的服务端软件,gitlab可以理解为企业内部管理的GitHub     为什么使用git   &nb

  • Windows和Ubuntu双系统时钟同步的方法。

    参考文章 https://blog.csdn.net/zyqblog/article/details/79318955     电脑安装Ubuntu和Windows双系统以后,每次Ubuntu时间和时区设了以后去Windows发现会少8个小时 原因在于两个OS对BIOS里面的时间的理解不一样。可以设置一个新时间以后再看一下BIOS。 Ubuntu认为BIOS的硬件时钟是 UTC方式,也就是格林威治时间。 Windows认为BIOS的硬件时钟是LocalTime,也就是本地时区的时间。 解决办法有3 1.不管3721,统统使用OS的同步功能,从服务器获取时间。 不过,我们不知道系统什么时候去同步,感觉变化不及时。 2.Windows让一步,把BIOS时间当成UTC时间,这就需要改注册表。 RegAddHKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation/vRealTimeIsUniversal/tREG_DWORD/d1复制 3.Ubuntu让一步,把BIOS时间当成LocalTime,根据U

  • Android多点触控技术实战,自由地对图片进行缩放和移动

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100327 在上一篇文章中我带着大家一起实现了Android瀑布流照片墙的效果,虽然这种效果很炫很酷,但其实还只能算是一个半成品,因为照片墙中所有的图片都是只能看不能点的。因此本篇文章中,我们就来对这一功能进行完善,加入点击图片就能浏览大图的功能,并且在浏览大图的时候还可以通过多点触控的方式对图片进行缩放。 如果你还没有看过 Android瀑布流照片墙实现,体验不规则排列的美感 这篇文章,请尽量先去阅读完再来看本篇文章,因为这次的代码完全是在上次的基础上进行开发的。 那我们现在就开始动手吧,首先打开上次的PhotoWallFallsDemo项目,在里面加入一个ZoomImageView类,这个类就是用于进行大图展示和多点触控缩放的,代码如下所示: publicclassZoomImageViewextendsView{ /** *初始化状态常量 */ publicstaticfinalintSTATUS_INIT=1; /** *图片放大状态

  • SQL优化

    ---恢复内容开始--- 解析   在空享池中查找相同的SQL语句 (缓冲中查找)   语法分析  (语法是否准确)   语义分析   (列名,表名是否准确)   对象加锁 (防止其他对象进行操作)   权限检查   确定执行计划   保存执行计划 (保存到高速缓冲中) 执行 提取 ① select中避免写* ② 编写SQL时使用相同的编码风格 这样容易到缓冲中查找到 ③ 使用where字句代替having字句 selectt.projectid,AVG(t.dynamiccost)fromcm_costsummarytgroupbyprojectidhavingprojectid>43440.218 优化为 selectt.projectid,AVG(t.dynamiccost)fromcm_costsummarytwhereprojectid>4344groupbyprojectid0.203复制 ④删除全部数据使用truncate代替delete ⑤确保完

  • git track remot

      echo"#test">>README.md gitinit gitaddREADME.md gitcommit-m"firstcommit" gitremoteaddoriginhttps://github.com/jiujue/wesigdemo.git gitpush-uoriginmaster 复制 …orpushanexistingrepositoryfromthecommandline   gitremoteaddoriginhttps://github.com/jiujue/wesigdemo.git gitpush-uoriginmasterig:复制 #Byte-compiled/optimized/DLLfiles __pycache__/ *.py[cod] *$py.class #Cextensions *.so #Distribution/packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ par

  • ubuntu中设置python默认版本

    看/usr/bin中的Python文件,发现该文件是python2.7的链接文件 于是直接删掉这个软链接,然后重新创建python2.6的链接文件: 1rm/usr/bin/python 2ln-s/usr/bin/ptyhon<版本号>/usr/bin/python复制 在创建了python<版本号>的链接文件之后,还要进行的一个步骤就是在命令行中导入python的环境变量。例如在此时python文件放在/usr/bin目录下,于是输入: 1PATH=/usr/bin/:$PATH复制 然后在命令行中输入python--version就可以发现python的默认版本号改成了Python<版本号>

  • C语言---指针变量详解1

    数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。现在假设有一个char类型的变量c,它存储了字符'K'(ASCII码为十进制数75),并占用了地址为0X11A的内存(地址通常用十六进制表示)。另外有一个指针变量p,它的值为0X11A,正好等于变量c的地址,这种情况我们就称p指向了c,或者说p是指向变量c的指针。 1、定义指针变量 定义指针变量与定义普通变量非常类似,不过要在变量名前面加星号*,格式为: datatype*name; 或者 datatype*name=value; *表示这是一个指针变量,datatype表示该指针变量所指向的数据的类型。例如: int*p1; p1 是一个指向int类型数据的指针变量,至于p1究竟指向哪一份数据,应该由赋予它的值决定。再如: inta=100; int*p_a=&a; 在定义指针变

  • Activiti流程 关于自定义sql查询

    由于才接触Activiti不久,对于表结构也不熟悉,甚至可以说连那些表对应的实体类都搞不清楚,又不能通过Activiti自带的链式查询实现;在这种情况下跟不知道怎么通过sql去实现自己想要的查询。上网看了些别人关于Activiti的介绍也不是很多,有的时候在自己模棱两可情况下看了别人的资料更不知道该怎么做了。 例如:我现在需要做个流程的已办事项,结果activiti的人都知道,activiti会将我们正在执行的任务复制一份在历史表中,要是这个任务完成了的话,他就会将正在执行的任务表中的数据清除使历史任务表中的数据结束时间有值,但是如果正在执行的任务没有完成的话,我们历史表就会用一条数据,如果现在将这条数据展示给用户的话,用户的体验就会很不好。 通常我们会使用链式查询出历史表中的所有数据: List<HistoricTaskInstance>tasks=historyService.createHistoricTaskInstanceQuery().taskAssignee(organid) .orderByHistoricActivityInstanceStartTime

  • Hibernate框架简述

    文章援引自:http://www.cnblogs.com/eflylab/archive/2007/01/09/615338.html Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:a)Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。b)SessionFactory接口:产生Session实例工厂。c)Session接口:用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。d)

  • 中文统计

    中文词频统计 1.下载一长篇中文小说。 2.从文件读取待分析文本。 3.安装并使用jieba进行中文分词。 ljieba.lcut(text) 4.更新词库,加入所分析对象的专业词汇。 jieba.load_userdict("D:\\dict.txt") 复制  #词库文本文件 5.生成词频统计 6.排序 xu=list(stayed_line.items()) xu.sort(key=lambdax:x[1],reverse=True)复制 7.排除语法型词汇,代词、冠词、连词 8.输出词频最大TOP20,把结果存放到文件里 xu=list(stayed_line.items()) xu.sort(key=lambdax:x[1],reverse=True)复制 importpandasaspd pd.DataFrame(data=xu).to_csv("D:\\最强全才.csv",encoding='utf-8')复制 9.生成词云。 具体代码: #-*-coding:utf-8-*- importjieba#加载停用表 stop=open("D:\\sto

相关推荐

推荐阅读