eagle转载自乐视大数据部高级hadoop工程师蔡华宇

来源:互联网 发布:符号软件下载 编辑:程序博客网 时间:2024/05/21 08:41
http://10.140.60.48:9099 eagle地址

http://blog.csdn.net/seohyunchyl/article/details/60758695 蔡华宇
http://blog.csdn.net/ganglia/article/details/49760183 这个也挺好
http://blog.csdn.net/u011270461/article/details/52766611
eagle服务器需提前安装npm。
1、官网下载src包 
http://eagle.apache.org/docs/download.html 
2、编译,按照官网的操作。 
这里写图片描述
 
编译成功后,在eagle-assembly/target下找到 apache-eagle-0.4.0-incubating-bin.tar.gz 
3、安装eagle 
将第二步中获得的tar包拷贝到安装路径下解压即可 
4、修改配置文件 
a 、eagle.env.sh 在bin目录下 
这里写图片描述
 
主要修改Java路径以及storm nimbus地址以及eagle服务地址和端口,其它可不做修改。 
b、eagle-scheduler.conf 在conf目录下 
这里写图片描述
 修改内容如上,包括url、nimbushost、jarFile。下面的mailHost是邮件服务器地址,当eagle全部搭建完毕后可以对监控项目告警发邮件,这里就是配置的邮件服务器地址。这里要注意下配置的邮件服务器的host要更新到storm集群的节点中去(严格的说是storm启动计算任务的节点即可,后面会提到提交拓补,提交完后在storm UI上找一个计算节点,要保证这台计算节点的/etc/hosts配置了邮件服务器,否则发不出邮件)。其它用户名密码等可以不做修改。 
c、eagle-service.conf 在conf目录下 
这里写图片描述
 
这里可以配置Hbase或者MySQL。配置hbase的话后面会有问题没解决,且不容易查看数据。所以配置成mysql。这里storage-connection-url最好配置为”jdbc:mysql://ip:port/database?autoReconnect=true”,,因为测试过程中第一天没问题,第二天来就会出现mysql断开连接的现象。 
d、eagle-topology-init.sh 在bin目录下 
这里写图片描述
 
我这里只修改了这两项。在文件开始就可以找到这两项。主要修改了hdfs的地址和hbase的zookeeper。当然,也可以不在这里设置。等环境安装完毕后,可以在页面中设置。这里涉及到namenode的HA问题,后面会提到。
5、启动服务。 
bin目录下执行 ./eagle-service.sh start 
./eagle-topoloty-init.sh 
完后已经可以从浏览器中查看,且mysql中建立了很多表。但是页面中没有内容,需要后续添加。
6、进入到apache-eagle-0.4.0-incubating下的example文件夹下 找到eagle-sandbox-starter.sh。官网中直接就执行了该shell脚本,可以看到脚本中默认认为storm程序安装在本机上,所以如果storm是集群的话,且nimbus不在这台安装eagle的机器上的话,是无法执行成功的。所以我们这里打开该脚本,运行其中部分操作即可。当然前提是storm、kafka都安装好了。 
这里写图片描述
其中有4个shell脚本。前两个已经执行过了,所以只要执行后两个就行。执行完毕后,再次刷新web页面,就会发现多了很多东西。单机右上角的admin,选择management可以看到以下页面 
这里写图片描述
 
这里有点击hdfsAuditLog前面的设置符号,就可以设置参数,与之前的eagle-topology-init.sh中的项对应,之前说的就是这里修改。我在这里是写死了defaultFs的(classification.fs.defaultFS=hdfs://test-nn1:9000),因为配置成HA的需要添加如下内容
classification.fs.defaultFS=hdfs://pin-cluster1 
classification.dfs.nameservices=pin-cluster1 
classification.dfs.ha.namenodes.pin-cluster1=testnn1,testnn2 
classification.dfs.namenode.rpc-address.pin-cluster1.testnn1=test-nn1:9000 
classification.dfs.namenode.rpc-address.pin-cluster1.testnn2=test-nn2:9000 
classification.dfs.client.failover.proxy.provider.pin-cluster1=org.apache.Hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
这里会出现问题,系统不认识”-“,所以我就写死了。
hiveQueryLog中配置: 
classification.accessType=metastoredb_jdbc 
classification.password=123456 
classification.user=root 
classification.jdbcDriverClassName=com.mysql.jdbc.Driver 
classification.jdbcUrl=jdbc:mysql://10.140.60.53:3306/Hive?createDatabaseIfNotExist=true
hbaseQueryLog中配置: 
classification.hbase.zookeeper.property.clientPort=21818 
classification.hbase.zookeeper.quorum=rm1,rm2,10-140-60-50
oozie没用到所以没配置
7、将namenode审计日志打入kafka 
可以采用修改log4j或者安装logstash的方式。网上资料大多用的安装logstash的方式来完成,我选择了使用修改log4j的方式,因为这样的话不用在namenode上新装软件并启动服务,因为新启动服务就要加一份维护和监控。修改log4j的话需要的是重启namenode。 
log4j文件在${HADOOP_HOME}/etc/hadoop下。在该文件中添加:
log4j.appender.KAFKA_HDFS_AUDIT=org.apache.eagle.log4j.kafka.KafkaLog4jAppender 
log4j.appender.KAFKA_HDFS_AUDIT.Topic=hdfslog 
log4j.appender.KAFKA_HDFS_AUDIT.BrokerList=rm1:9092,rm2:9092,test-nn1:9092,test-nn2:9092,10-140-60-50:9092 
log4j.appender.KAFKA_HDFS_AUDIT.KeyClass=org.apache.eagle.log4j.kafka.hadoop.AuditLogKeyer 
log4j.appender.KAFKA_HDFS_AUDIT.Layout=org.apache.log4j.PatternLayout 
log4j.appender.KAFKA_HDFS_AUDIT.Layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n 
log4j.appender.KAFKA_HDFS_AUDIT.ProducerType=async
其次在hadoop-env.sh中的HADOOP_NAMENODE_OPTS中加入: 
-Dhdfs.audit.logger=INFO,DRFAAUDIT,KAFKA_HDFS_AUDIT
完后重启即可。 
这里要记下Topic的名字,后面需要用到。BrokerList最好也写全部的kafka服务器。
8、进入 conf文件夹下,打开sandbox-hdfsAuditLog-application.conf文件,尤其注意topic要和之前log4j中的一致。邮箱服务器如果要配置这里也可以配置。不过这里得多加内容,即邮箱服务器认证的用户名和密码以及开启认证,系统默认的配置文件中不包含这三项项,需要自己手动添加。还有其它的添加项可以去AlertEmailSender.java类中查看。之前提到过的,再强调一下下,eagle系统中发送邮件的代码在storm计算节点执行的,而不是在搭建eagle的服务器上执行的,所以一定要在计算节点上配置/etc/hosts。 
“envContextConfig” : { 
“env” : “storm”, 
“mode” : “cluster”, 
“topologyName” : “test3-hdfsAuditLog-topology”, 
“stormConfigFile” : “storm.yaml”, 
“parallelismConfig” : { 
“kafkaMsgConsumer” : 1, 
“hdfsAuditLogAlertExecutor*” : 1 
}, 
“dataSourceConfig”: { 
“topic” : “hdfslog”, 
“zkConnection” : “rm1:21818,rm2:21818,10-140-60-50:21818/kafka-rm”, 
“brokerZkPath” : “/brokers”, 
“zkConnectionTimeoutMS” : 15000, 
“fetchSize” : 1048586, 
“deserializerClass” : “org.apache.eagle.security.auditlog.HdfsAuditLogKafkaDeserializer”, 
“transactionZKServers” : “rm1,rm2,10-140-60-50”, 
“transactionZKPort” : 21818, 
“transactionZKRoot” : “/consumers”, 
“consumerGroupId” : “eagle.hdfsaudit.consumer”, 
“transactionStateUpdateMS” : 2000 
}, 
“alertExecutorConfigs” : { 
“hdfsAuditLogAlertExecutor” : { 
“parallelism” : 1, 
“partitioner” : “org.apache.eagle.policy.DefaultPolicyPartitioner”, 
“needValidation” : “true” 
}, 
“eagleProps” : { 
“site” : “sandbox”, 
“application”: “hdfsAuditLog”, 
“dataJoinPollIntervalSec” : 30, 
“mailHost” : “mailHost.com”, 
“mailSmtpPort”:”25”, 
“mailDebug” : “true”, 
“mailSmtpAuth”: “true”, 
“mailSmtpUser”:”username”, 
“mailSmtpPassword”:”password”, 
“eagleService”: { 
“host”: “rm1”, —-eagle部署的服务器地址,不能写成Localhost 
“port”: 9099 
“username”: “admin”, 
“password”: “secret” 
}, 
“dynamicConfigSource” : { 
“enabled” : true, 
“initDelayMillis” : 0, 
“delayMillis” : 30000 
}
修改完毕后进入bin文件夹,执行./eagle-topology.sh start 该命令默认执行hdfsAuditLog拓补。 
查看storm web页面,查看kafka topic。使用 kafka-console-consumer.sh –zookeeper rm1:21818/kafka-rm –topic hdfslog命令(zookeeper需要修改成自己的zookeeper地址),发现审计日志已经打入topic。
这里写图片描述
 
storm页面中也正确。 
这里写图片描述
 
9、测试 
进入eagle的home页面,点击DAM下的HDFS,则出现hdfs相关的policy。 
这里写图片描述
 
点击policy name进入可以修改该policy,根据自己的需求完成告警任务,如: 
这里写图片描述
 
我在这里设置了cmd为open或者mkdirs,目录为/tmp/a.txt /tmp/private /aa/write sensititityType为PRIVATE
点击next出现下图设置。这里的Notification可以选择eagleStore或者邮件或者kafka。选择第一个,就会在系统中的Alerts(左侧导航栏点击Alerts)中生成记录查看,第二个会发邮件,第三个进kafka。我选择了第一个。 这里一定要选择一个,否则无法收到任何报警,会让人错认为系统未搭建成功。 
这里写图片描述
 
这样当命令行执行hadoop fs -cat /tmp/a.txt这样的命令时,就会产生告警 
在左侧导航栏的Alerts中可以查看 
这里写图片描述
 
其中sensitityType可以在页面中设置,点击左侧导航栏的Classification,会出现hdfs层面的目录,比如,进入/tmp文件夹下,可以设置文件。点击最右边的眼睛图标可以设置。 
这里写图片描述
 
10、其它 
上面写的是hdfs层面的命令操作,hive这块大体差不多。 
需要修改的conf文件变成了 sandbox-hiveQueryLog-application.conf
“envContextConfig” : { 
“env” : “storm”, 
“mode” : “cluster”, 
“topologyName” : “sandbox-hiveQueryRunning-topology”, 
“stormConfigFile” : “storm.yaml”, 
“parallelismConfig” : { 
“msgConsumer” : 2 
}, 
“dataSourceConfig”: { 
“flavor” : “stormrunning”, 
“zkQuorum” : “rm1:21818,rm2:21818,10-140-60-50:21818/kafka-rm”, 
“zkRoot” : “/jobrunning”, 
“zkSessionTimeoutMs” : 15000, 
“zkRetryTimes” : 3, 
“zkRetryInterval” : 2000, 
“RMEndPoints” : “http://rm1:50030/“, ——resourcemanager地址 
“HSEndPoint” : “http://rm2:19888/“, ——jobhistory地址 
“partitionerCls” : “org.apache.eagle.job.DefaultJobPartitionerImpl” 
}, 
“eagleProps” : { 
“site” : “sandbox”, 
“application” : “hiveQueryLog”, 
“mailHost” : “atom.xyz.com”, 
“mailSmtpPort”:”25”, 
“mailDebug” : “true”, 
“eagleService”: { 
“host”: “rm1”, 
“port”: 9099, 
“username”: “admin”, 
“password”: “secret” 
}, 
“alertExecutorConfigs” : { 
“hiveAccessAlertByRunningJob” : { 
“parallelism” : 1, 
“partitioner” : “org.apache.eagle.policy.DefaultPolicyPartitioner”, 
“needValidation” : “true” 
}, 
“dynamicConfigSource” : { 
“enabled” : true, 
“initDelayMillis” : 0, 
“delayMillis” : 30000, 
“ignoreDeleteFromSource” : true 
}
storm中建立拓补需要指定类,之前提到默认是hdfs。到bin目录下执行: 
./eagle-topology.sh –main org.apache.eagle.security.hive.jobrunning.HiveJobRunningMonitoringMain –config ${EAGLE_HOME}/conf/sandbox-hiveQueryLog-application.conf start 。
测试操作同理,进入eagle的home页面,DAM下选择hive,出现hive的policy(如果没有可以新建立),修改设置方法同hdfs policy。 
policy设置完之后,可以进入hive客户端,执行命令查看Alerts

阅读全文
0 0
原创粉丝点击