您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

如何快速采集分析平台日志,并进行展示监控?

时间:2019-10-29 16:08:45  来源:  作者:

作者介绍

小火牛,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验。管理过多个上千节点集群,擅长对外多租户平台的维护开发。信科院大数据性能测试、功能测试主力,大厂PK获得双项第一。

前言

某业务导致NameNode RPC通信频繁,后来观察监控发现,是由于该业务获取HDFS列表文件的频率过于频繁。检查代码后,优化由20s获取一次目录列表改为5分钟获取一次,获取列表的RPC操作次数下降了约1.5倍,平均每秒减少了2~3w次的RPC操作。

如何快速采集分析平台日志,并进行展示监控?

还有很多业务场景,通过分析观察RPC画像,都发现了其不合理性,这里就不一一列举了。本文主要记录如何通过ELK快速分析NameNode RPC操作并对接Grafana展示。

通过ELK快速分析NameNode RPC操作

ELK是当前比较主流的分布式日志收集处理工具。这里采用Filebeat→Kafka集群→Logstash→ES→Kibana。

采用原因:

1)Filebeat是基于原先logstash-forwarder的源码改造出来的。换句话说:Filebeat就是新版的logstash-forwarder,也会是Elastic Stack在shipper端的第一选择。

2)小贴士:虽然LogStash::Inputs::TCP用Ruby的Socket和OpenSSL库实现了高级的SSL功能,但Logstash本身只能在SizedQueue中缓存20个事件。这就是我们建议在生产环境中换用其他消息队列的原因。

redis服务器是Logstash官方推荐的Broker选择,Broker角色也就意味着会同时存在输入和输出两个插件。

Kafka是一个高吞吐量的分布式发布订阅日志服务,具有高可用、高性能、分布式、高扩展、持久性等特性。目前已经在各大公司中广泛使用。和之前采用Redis做轻量级消息队列不同,Kafka利用磁盘作队列,所以也就无所谓消息缓冲时的磁盘问题。此外,如果公司内部已有Kafka服务在运行,Logstash也可以快速接入,免去重复建设的麻烦。

3)目前Logstash1.5版本已自带支持Kafka插件,所以只需要学会如何书写Logstash规则,并且Kafka消费使用high-level消费。

4)Filebeat部署在应用服务器上(只负责Logstash的读取和转发,降低CPU负载消耗,确保不会抢占应用资源),Logstash、ES、Kibana在一台服务器上(此处的Logstash负责日志的过滤,会消耗一定的CPU负载,可以考虑如何优化过滤的语法步骤来达到降低负载)。

具体搭建步骤:Filebeat安装使用(思考后决定Filebeat使用Zip安装或者tar.gz方便修改配置打包分发。)→Logstash插件配置。

以下是架构图:

如何快速采集分析平台日志,并进行展示监控?

1、Filebeat采集hdfs-audit.log日志传输给Kafka或者Logstash

[hadoop@lf319-m3-002 filebeat]$ vi dynamically.config/audit-logstash.yml

filebeat.prospectors:

- input_type: log

paths:

- "/var/log/hadoop-hdfs/hdfs-audit.log"

harvester_buffer_size: 32768

scan_frequency: 1s

backoff: 10ms

#backoff <= max_backoff <= scan_frequency

processors:

- drop_fields:

fields: ["beat", "beat.name", "beat.hostname","beat.version","input_type","offset","@timestamp","type","source"]

output.logstash:

hosts: ["logstash-host:5044"," logstash-host:5045"]

loadbalance: true

worker: 4

bulk_max_size: 4096

#output.console:

# pretty: true

xpack.monitoring:

enabled: true

elasticsearch:

hosts: ["https://es-host1:9200", "https:// es-host2:9200"]

username: beats_system

password: beat@123

2、Logstash进一步分解日志,格式化日志数据

这里需要我们先查看下日志的格式,然后选择方便的日志格式化方式来解析日志。

日志格式案例:

2019-08-25 13:11:58,630 INFO FSNamesystem.audit: allowed=trueugi=lf_zh_pro (auth:SIMPLE)ip=/dn-ipcmd=getfileinfosrc=/user/lf_zh_pro/test/CommonFilter/sync/biz_id=B43/day_id=20190825/prov_id=089/part-00019-1566675749932.gzdst=perm=proto=rpc

2019-08-25 13:11:58,630 INFO FSNamesystem.audit: allowed=trueugi=lf_xl_bp (auth:SIMPLE)ip=/dn-ipcmd=createsrc=/user/lf_xl_bp/lf_xl_src.db/src_d_trip_all/date_id=20190825/hour_id=13/minute_id=00/.hive-staging_hive_2019-08-25_13-10-18_301_9180087219965934496-1/_task_tmp.-ext-10002/prov_id=031/_tmp.000238_0dst=perm=lf_xl_bp:lf_xl_bp:rw-rw-r--proto=rpc

2019-08-25 13:11:58,630 INFO FSNamesystem.audit: allowed=trueugi=ubd_obx_test (auth:SIMPLE)ip=/ dn-ipcmd=rename

通过观察可以发现上面的每条日志格式都是一致的,都由时间戳、日志级别、是否开启审计、用户、来源IP、命令类型这几个字段组成。那么相较于grok来说dissect更加简明。

Dissect的使用规则:https://www.elastic.co/guide/en/logstash/current/plugins-filters-dissect.html

Logstash配置如下:

input {

beats {

port => "5045"

}

}

filter {

if "/user/if_ia_pro/output/test" in [message] {

dissect {

mApping => { "message" => "%{logd} %{drop} %{level} %{log-type}: %{?allowed}=%{&allowed}%{?ugi}=%{&ugi} (%{?authtype})%{?ip}=/%{&ip}%{?cmd}=%{&cmd}%{}=/user/if_ia_pro/output/test/%{src2}/%{src3}/%{}%{?dst}=%{&dst}%{?perm}=%{&perm}%{?proto}=%{&proto}" }

add_field => {

"srctable" => "/user/if_ia_pro/output/test/%{src2}/%{src3}"

"logdate" => "%{logd} %{drop}"

}

remove_field => ['message','src2','src3','logd','drop']

}

}

else if "/user/lf_zh_pro/lf_safedata_pro/output/" in [message] {

dissect {

mapping => { "message" => "%{logd} %{drop} %{level} %{log-type}: %{?allowed}=%{&allowed}%{?ugi}=%{&ugi} (%{?authtype})%{?ip}=/%{&ip}%{?cmd}=%{&cmd}%{}=/user/lf_zh_pro/lf_safedata_pro/output/%{src2}/%{}%{?dst}=%{&dst}%{?perm}=%{&perm}%{?proto}=%{&proto}" }

add_field => {

"srctable" => "/user/lf_zh_pro/lf_safedata_pro/output/%{src2}"

"logdate" => "%{logd} %{drop}"

}

remove_field => ['message','src2','drop']

}

}

else if "/files/" in [message] {

dissect {

mapping => { "message" => "%{logd} %{drop} %{level} %{log-type}: %{?allowed}=%{&allowed}%{?ugi}=%{&ugi} (%{?authtype})%{?ip}=/%{&ip}%{?cmd}=%{&cmd}%{}=/files/%{src2}/%{}%{?dst}=%{&dst}%{?perm}=%{&perm}%{?proto}=%{&proto}" }

add_field => {

"srctable" => "/files/%{src2}"

"logdate" => "%{logd} %{drop}"

}

remove_field => ['message','src2','drop']

}

}

else {

dissect {

mapping => { "message" => "%{logd} %{drop} %{level} %{log-type}: %{?allowed}=%{&allowed}%{?ugi}=%{&ugi} (%{?authtype})%{?ip}=/%{&ip}%{?cmd}=%{&cmd}%{}=/%{src}/%{src1}/%{src2}/%{src3}/%{}%{?dst}=%{&dst}%{?perm}=%{&perm}%{?proto}=%{&proto}" }

add_field => {

"srctable" => "/%{src}/%{src1}/%{src2}/%{src3}"

"logdate" => "%{logd} %{drop}"

}

remove_field => ['message','src','src1','src2','src3','logd','drop']

}

}

date {

match => [ "logdate","ISO8601" ]

target => "@times"

remove_field => ['logdate']

}

}

output {

elasticsearch {

hosts => ["es-host:9200"]

index => "logstash-hdfs-auit-%{+YYYY.MM.dd}"

user => "elastic"

password => "password"

}

stdout { }

}

3、ES上观察数据

Filebeat和Logstash配置好采集分析hdfs-audit.log之后启动进程,到ES上观察会发现创建有logstash-hdfs-auit- YYYY.MM.dd的index。

如何快速采集分析平台日志,并进行展示监控?

具体查看数据,可以看到已经具备多个需要使用到的字段。

如何快速采集分析平台日志,并进行展示监控?

Grafana配置NameNode RPC操作

最后一步就需要在Grafana上配置连接ES数据库。

如何快速采集分析平台日志,并进行展示监控?

然后创建Dashboard依次配置以下几种查询展示:

1)集群整体RPC每分钟连接次数

如何快速采集分析平台日志,并进行展示监控?如何快速采集分析平台日志,并进行展示监控?

2)HDFS路径All下All类型每分钟操作计数

如何快速采集分析平台日志,并进行展示监控?如何快速采集分析平台日志,并进行展示监控?

3)All类型操作计数最多的hdfs路径

如何快速采集分析平台日志,并进行展示监控?如何快速采集分析平台日志,并进行展示监控?

4)路径All下操作计数排行前五的类型 和All操作类型下操作计数前五的路径

如何快速采集分析平台日志,并进行展示监控?

总结

那么现在对于企业来说,不管是在物理机上还是云上,玩自己的大数据平台跑生产任务,就不可避免会有不够合理不够优化的任务,比如最简单的集群对拷任务出现异常中断时,我们通常会挂定时任务并对hadoop distcp添加-update参数,进行对比更新覆盖,这时当定时吊起的过于频繁,就会发现当对拷目录下文件数越来越多,NameNode对该目录的listStatus类型的RPC连接会激增,这时我们就需要优化对拷任务。

RPC的监控只是监控大数据平台的一个指标,这里通过这篇文章,带大家了解下如何快速地采集分析平台日志,并进行展示监控。



Tags:日志   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  Tags: 日志  点击:(8)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  Tags: 日志  点击:(19)  评论:(0)  加入收藏
小邓带您走进网络日志搜索,小功能大用处!即便是小型公司,也有可能拥有庞大的日志数据。大部分日志可能只是一些普通的例行事件,但也有很多对公司网络安全至关重要的日志数据。Ev...【详细内容】
2021-12-10  Tags: 日志  点击:(21)  评论:(0)  加入收藏
背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系统在运行时出现的问题有排查的依据。日志存储和检索...【详细内容】
2021-11-23  Tags: 日志  点击:(22)  评论:(0)  加入收藏
引言在日常的后端开发工作中,最常见的操作之一就是看日志排查问题,对于大项目一般使用类似ELK的技术栈统一搜集日志,小项目就直接把日志打印到日志文件。那不管对于大项目或者...【详细内容】
2021-11-15  Tags: 日志  点击:(41)  评论:(0)  加入收藏
服务器日志(server log)是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表简单来说,服务器的日记就是记录网站被访问的全过程,什么时间到什么时间有哪...【详细内容】
2021-11-11  Tags: 日志  点击:(42)  评论:(0)  加入收藏
最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页...【详细内容】
2021-10-09  Tags: 日志  点击:(48)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14  Tags: 日志  点击:(97)  评论:(0)  加入收藏
已经有26天没有更新了!大家是不是觉得我已经放弃了!NO,NO,NO!我家在山东,人在武汉。前些天家里孩子要小升初,所以8月2号为了孩子的事情就匆忙赶回山东,本来以为小升初是很简单的...【详细内容】
2021-08-30  Tags: 日志  点击:(38)  评论:(0)  加入收藏
Oracle日志文件是Oracle数据库存储信息的重要文件,主要用来存储数据库变化的操作信息。Oracle日志文件可以分为两种:重做日志文件(redo log file)、归档日志文件,其中重做日志文...【详细内容】
2021-08-19  Tags: 日志  点击:(101)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(7)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(39)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(40)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~&middot; 什么是 ICP 备案呢?&middot; ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(46)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议&mdash;&mdash;https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(125)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条