前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0859-7.1.6-如何对Ranger审计日志进行调优

0859-7.1.6-如何对Ranger审计日志进行调优

作者头像
Fayson
发布2021-07-28 15:33:52
2K0
发布2021-07-28 15:33:52
举报
文章被收录于专栏:Hadoop实操Hadoop实操

作者:唐辉

1.文档编写目的

什么是Ranger Audit?Ranger 审计功能 ,审计功能模块可以帮助我们更好的管理集群组件,例如 HDFS、HBase、Hive 等数据资源的访问,更快的定位权限导致的应用问题。并且使用 Ranger 控制权限的同时也可以很好地监控、查询用户的历史操作,做到有证可查,有理可依。

而在CDP目前的使用存在着部分问题需要处理,Ranger 的审计日志信息存储在Solr,出现如Solr数据目录空间占用过高,Solr shard连接超时亦或者如下数据量过大时,会导致Ranger Audit 界面加载缓慢,甚至如下图无法加载出来情况。

本文主要通过从Solr 存储目录、数据保留时长和调整ranger_audits 的shard 数量3个方面来进行Ranger Audit调优。

  • 测试环境

1.CDP7.1.6 、启用Kerberos

2.操作步骤

2.1修改Solr存储目录

在CDP7.1.5之前的版本中,集群中Solr 的索引数据文件存储在HDFS中。虽然能够有效的解决索引文件快速增长的问题,但是同样因为存在HDFS中的缘故,并且需要频繁的更新,导致了性能上的问题(比如Ranger Audit 日志很久的加载不出来的情况)。当集群中的Ranger审计信息比较大时,会导致因为写入延迟的问题而造成spool 目录中日志(目录在/var/log/[service]/audit/solr/spool)的堆积。

因此在CDP7.1.5以后,CDH中已将Solr 的数据目录修改为本地目录,默认在/var/lib/solr-infra 目录,建议在安装的时候修改/var/lib/solr-infra 到存储更大数据目录中。如果集群以及安装好,并且数据目录不在本地或者未修改存储路径,修改步骤如下,参考文档[1]:

情况1:修改本地目录(建议将Solr 数据放在本地)

如下图中,当前我们CDP7.1.6 的本地数据目录在/var/lib/solr-infra,并且已有部分数据,建议先进行备份,然后将本地的数据目录/var/lib/solr-infra 拷贝到/data3 目录下,然后重启生效即可

代码语言:javascript
复制
cp -rp /var/lib/solr-infra /var/lib/solr-infra-bak

情况2:将本地存储目录修改到HDFS上 (从HDFS到本地只有step2 步骤配置文件有差异,其余步骤一致。)

如果我们想把本地的数据目录迁移到HDFS上,操作步骤如下:

step 1、创建HDFS备份数据目录

代码语言:javascript
复制
hdfs dfs -mkdir /solr-backups 
hdfs dfs -chown solr:solr /solr-backups

step 2、导出ranger_audits 配置,并修改/tmp/ranger_audits/conf下的solrconfig.xml

代码语言:javascript
复制
solrctl instancedir --get ranger_audits /tmp/ranger_audits
#如果有使用Atlas 参考ranger_audits,本文只讲述Ranger Audit,示例如下,具体可参考连接[1]
#如下是本地数据目录找到如下配置文件,如果是HDFS到本地则配置相反,如图片中圈出的注释部分
  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">
  <lockType>${solr.lock.type:native}</lockType>
修改为:
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:org.apache.solr.core.HdfsDirectoryFactory}">
<lockType>${solr.lock.type:hdfs}</lockType>

如果配置与下图中的配置不一致,请添加以下属性,参考[1]

step 3、然后进行配置更新(此处只修改了ranger_audits 集合信息到HDFS上):

代码语言:javascript
复制
cd /var/run/cloudera-scm-agent/process/`ls -lrt /var/run/cloudera-scm-agent/process/ | awk '{print $9}' |grep SOLR_SERVER | tail -1`/

solrctl --jaas jaas.conf instancedir --update ranger_audits /tmp/ranger_audits

注意:重启之前建议进行数据备份:

step 4、备份数据到HDFS 目录上

代码语言:javascript
复制
curl -k --negotiate -u : "http://cdh02.fayson.com:8993/solr/admin/collections?action=BACKUP&name=ranger_audits_backup2&collection=ranger_audits&location=hdfs://cdh01.fayson.com:8020/solr-backups"

如果需要备份其他collection 也类似如下:

并重启Solr Server 后发现有hdfs 中ranger_audits信息了,但是数据量目前对不上,需要先进行删掉ranger_audits,然后从备份中恢复

step5、从备份的数据中进行恢复:

代码语言:javascript
复制
#恢复数据方法1(推荐):使用如下命令,参数解释如下
# --restore <collection name>
# -l <location path>
# -b <backup name>
# -i <request id, 自行填,勿重复>
solrctl collection --restore ranger_audits -l hdfs://cdh01.fayson.com:8020/solr-backups -b ranger_audits_backup2 -i 1234
#恢复数据方法2:
#或者如下也可以执行恢复:
curl -k --negotiate -u : "http://cdh02.fayson.com:8993/solr/admin/collections?action=RESTORE&name=ranger_audits_backup2&location=hdfs://cdh01.fayson.com:8020/solr-backups&collection=ranger_audits"

方式1如下(推荐):执行后需要等待数据恢复

方式2如下图:

恢复数据前需要先删掉ranger_audits 集合,如果已存在ranger_audits会提示如下异常

通过监控图表也可以看到数据已恢复

进入Ranger Audit检查,到此ranger_audits从本地目录迁移到HDFS已完成

2.2修改Solr 的中ranger_audits 数据保留时长

CDP中Ranger 的审计日志数据默认存储在Solr 的ranger_audits 中,默认的保留时长为90天,对于一个操作频繁的集群90天的保留时长的数据量会相当的大,并且数据量一大也会导致在Ranger 中查看审计信息日志变慢,建议在缩短数据保留时长,比如7天。具体修改操作步骤如下, 参考文档[2]:

1. 在Solr Server或者Solr Gateway主机上运行以下命令,将 Ranger 审计配置下载到 SolrServer 或 Solr Gateway主机:

代码语言:javascript
复制
 solrctl instancedir --get ranger_audits /tmp/ranger_audits

2. 在文本编辑器中打开以下文件:

代码语言:javascript
复制
 vim /tmp/ranger_audits/conf/solrconfig.xml

找到如下配置,将保留数据时长修改为7天

代码语言:javascript
复制
<str name="fieldName">_ttl_</str> 
<str name="value">+7DAYS</str>

注意:此处还有一个配置需要修改,Ranger Audits集合的 Solr 文档中没有_ttl_字段和_expire_at_字段,在solrconfig.xml ranger_audits config 中设置的 updateRequestProcessorChain 中的处理器顺序不正确时,会出现设置的保留 。该问题是请求处理器的顺序引起的。TTL 默认逻辑放置应在runUpdateProcessorFactory 之后,它才会实际执行更新。

修改如下配置的的顺序,将如下配置文件移动到到下图中的位置

代码语言:javascript
复制
<processor class="solr.LogUpdateProcessorFactory"/> 
<processor class="solr.DistributedUpdateProcessorFactory"/> 
<processor class="solr.RunUpdateProcessorFactory"/>

然后执行如下命令更新,注意:更新需要在Solr Server 的process 目录下执行:

代码语言:javascript
复制
#进入最新的Solr Server process 目录
cd /var/run/cloudera-scm-agent/process/`ls -lrt /var/run/cloudera-scm-agent/process/ | awk '{print $9}' |grep SOLR_SERVER | tail -1`/
#执行更新
solrctl --jaas jaas.conf instancedir --update ranger_audits /tmp/ranger_audits

使用 Solr 凭据(启用了kerberos 需要进行认证,否则执行会如下报错401)重新加载 Ranger_audits 集合,以便该集合可以通过运行以下命令来获取修改后的配置:

代码语言:javascript
复制
  solrctl collection --reload ranger_audits

然后重启Solr Server 生效,可以通过命令get 下来配置文件,查看是否已生效

代码语言:javascript
复制
solrctl instancedir --get ranger_audits /tmp/ranger_audits

注意:更改配置和重新加载集合后新添加的文档将被自动删除。但是对于修改配置以前的数据文件需要通过命令手动删除,如下

代码语言:javascript
复制
curl -v --negotiate -u : "http://cdh02.fayson.com:8993/solr/ranger_audits/update?commit=true" -H "Content-Type: text/xml" --data-binary "<delete><query>evtTime:[* TO NOW-7DAYS]</query></delete>"

也可以通过CM的监控页面看到数据的减少

当我们清理完部分历史数据重启完成后,可以很快速的打开Ranger 的Audit 界面

并且更早之前的数据都已清理

2.3修改ranger_audits 中的shard 的数量

该步骤强烈建议在集群安装时配置,在CDP最新版本CDP7.1.6中,ranger_audits 的shards 数量为1,这种情况下容易因硬件故障或者其他因素导致数据丢失的数量,因此建议配置最少配置为2,同时Solr Server 服务也必须存在2个。

操作之前建议按照文章2.1中的step 1,进行使用HDFS备份数据,ranger_audits 的shards 数量修改需要删除已有的ranger_audits集合。然后通过CM 重启Ranger 自动创建ranger_audits 集合,再通过备份数据恢复。

Infra Solr中应该有2个实例,按照以下属性设定,就可以让 Ranger Audit collection,在2个Solr node中都各有2个 shard,互为主备。在 CM>Ranger>配置中搜索solr 进行修改,并重启Ranger 生效

代码语言:javascript
复制
- ranger.audit.solr.no.shards: 2
- ranger.audit.solr.max.shards.per.node: 2
- ranger.audit.solr.no.replica: 2

3.文档总结

在CDP集群中使用中,相信大部分人在HBase 或者Hive 服务日志中都遇到Solr ranger_audits集合的告警信息,严重的甚至导致默认存放数据目录 /var/lib/solr-infra或者/var/log/[service]/audit/solr/spool 被写满。或者在CDP 7.1.5之前的版本中HDFS 的/solr 目录占用空间大的情况。另外也强烈建议以上的配置在集群安装时就规划好,通过上述文档的调优,相信可以得到有效的解决。

参考文档:

代码语言:javascript
复制
[1] https://my.cloudera.com/knowledge/Solr-Data-Migration-from-local-FS-to-HDFS-and-vice-versa-for?id=316420
[2] https://my.cloudera.com/knowledge/ERROR-Time-to-live-configuration-for-Ranger-Audits-not-Working?id=315204
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.文档编写目的
  • 2.操作步骤
  • 3.文档总结
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档