0%

采集 hdfs-audit 分析 rpc 画像

快速采集 hdfs-audit 分析并进行展示监控


前言

本文主要是基于小火牛的《如何快速采集分析平台日志,并进行展示监控?》

HDFS 存在某业务导致NameNode RPC通信频繁,希望通过 ELK 快速分析 NameNode RPC 操作并对接 Grafana 展示

安装

ELK 这里使用是 7.5 版本,Kafka 使用是 CDH6.3 自带的,grafana 使用是 6.5

FileBeat、Kafka 搭建过程网上也很多,可以参考下我之前写的

贴一下 filebeat.yml 的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
filebeat.inputs:
- type: log
enabled: true
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: # 删除字段,不再kibana里面展示,默认情况kibana里面会自动展示这些beat字段, 前缀带@符号的好像删不掉
fields: ["input", "ecs", "agent", "host", "log"]

output.kafka:
enabled: true
hosts: ["xxxx:9092"]
topic: hdfsAudit
required_acks: 1 # ACK的可靠等级.0=无响应,1=等待本地消息,-1=等待所有副本提交.默认1
keep_alive: 10s # 连接的存活时间.如果为0,表示短连,发送完就关闭.默认为0秒

logging.level: error # 最低日志级别,建议在开发时期开启日志并把日志调整为debug或者info级别,在生产环境下调整为error级别
name: xxxx

Elasticsearch、Kibana 搭建过程网上很多,本人参考自下方链接

遇到的坑

  1. 需要普通用户启动,解压后目录最好放在普通用户家目录下,别放在 root 家目录
  2. elasticsearch.yml 中 cluster.initial_master_nodes 参数填的内容是 node.name 参数的值

logstash 搭建过程网上很多,这里是直接解压到 root 家目录下
在 config 目录下新增一个 kafka.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
input {
kafka {
bootstrap_servers => "xxxx:9092"
topics => ["hdfsAudit"]
group_id => "logstash"
}
}

filter {
mutate {
rename => ["message", "fileMessage"]
}
json {
source => "fileMessage"
}
grok {
match => {
"message" => "(?<logd>(%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY})) %{TIME:logt} %{LOGLEVEL:level}%{GREEDYDATA}ugi=(?<ugi>([\w]*)/?)%{GREEDYDATA}ip=/%{IPV4:ip}%{GREEDYDATA}cmd=(?<cmd>([\w]*)/?)%{GREEDYDATA}src=(?<src>([\w/._-]*)/?)%{GREEDYDATA}dst=%{GREEDYDATA}"
}
add_field => {
"logdate" => "%{logd} %{logt}"
}
remove_field => ["fileMessage", "logt", "logd", "message"]
}
date {
match => [ "logdate","ISO8601" ]
target => "@times"
remove_field => ['logdate']
}
}

output {
stdout {
codec => rubydebug
}
elasticsearch {
index => "logstash-hdfs-auit-%{+YYYY.MM.dd}"
hosts => ["xxxx:9200"]
}
}

这里我一开始使用小火牛推荐的dissect来解析,遇到各种问题,实在能力不够解决不了,就用回grok了

使用 bin/logstash -f config/kafka.conf 启动后观察是否有报错,或者解析不成功的。可行后就使用 nohup 后台启动

Grafana 安装网上很多,官网也有说明

Logstash、Elasticsearch、Kibana 最好找一台机器部署,因为很吃资源,尽量别影响到集群

展示

Grafana 配置 NameNode RPC 操作

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

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

操作类型每分钟计数

每分钟操作类型排行前五

饼图配置可是折腾了我一会,原来还需要安装插件,语法还不会写,orz

Grafana 默认版本中没有饼图插件,需要自行安装,安装使用参考下方

总结

这一次是采坑花了时间精力去折腾的,整出来后还是有些成就感的

RPC的监控只是监控大数据平台的一个指标,路还很长,再接再厉


参考链接