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