Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 11-25-2015 11:58 AM
Where can I find an audit trail of every changes done via Ambari ? I would like something similar to the configuration diff that we can do using the UI with the addition of the username.
Eg Olivier has changed umask to 077 in hdfs-site on Monday 5th of December 2014 at 2:20:21.123
I've found /var/log/ambari-server/ambari-config-changes.log but it doesn't show the specific change which has happened. I understand that I've got the version and i can diff w/ the previous version but i was wondering if we were recording it somewhere else.
Created 11-25-2015 10:54 PM
@Olivier Renault I don't think we have a separate audit tool or recording of the changes available, however a short Python script should solve this problem.
I just created a short example (quick and dirty solution, needs some tweaking! :P), take a look at this https://github.com/mr-jstraub/ambari-audit-config
The repo contains an audit.py script that you can use as follows:
Example (audit hive-site to shell):
python audit.py --target horton01.myhost.com:8080 --cluster bigdata --user admin --config hive-site
Example (audit hive-site to hive-site_audit.log)
python audit.py --target horton01.myhost.com:8080 --cluster bigdata --user admin --config hive-site --output hive-site_audit.log
Result:
hive-site: version 1 - ADDED - javax.jdo.option.ConnectionDriverName - com.mysql.jdbc.Driver hive-site: version 1 - ADDED - hive.fetch.task.aggr - false hive-site: version 1 - ADDED - hive.execution.engine - tez hive-site: version 1 - ADDED - hive.tez.java.opts - -server -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseG1GC -XX:+ResizeTLAB -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps hive-site: version 1 - ADDED - hive.vectorized.groupby.maxentries - 100000 hive-site: version 1 - ADDED - hive.server2.table.type.mapping - CLASSIC ... ... ... hive-site: version 1 - ADDED - hive.compactor.check.interval - 300L hive-site: version 1 - ADDED - hive.compactor.delta.pct.threshold - 0.1f hive-site: version 2 - CHANGED - javax.jdo.option.ConnectionURL - jdbc:mysql://horton03.myhost.com/hive?createDatabaseIfNotExist=true => jdbc:mysql://horton03.myhost.com:3306/hive?createDatabaseIfNotExist=true hive-site: version 2 - CHANGED - hive.zookeeper.quorum - horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 => horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 2 - CHANGED - hive.cluster.delegation.token.store.zookeeper.connectString - horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 => horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 3 - CHANGED - javax.jdo.option.ConnectionURL - jdbc:mysql://horton03.myhost.com:3306/hive?createDatabaseIfNotExist=true => jdbc:mysql://horton03.myhost.com/hive?createDatabaseIfNotExist=true hive-site: version 4 - ADDED - atlas.cluster.name - default hive-site: version 4 - CHANGED - hive.exec.post.hooks - org.apache.hadoop.hive.ql.hooks.ATSHook => org.apache.hadoop.hive.ql.hooks.ATSHook,org.apache.atlas.hive.hook.HiveHook hive-site: version 4 - CHANGED - hive.metastore.sasl.enabled - false => true hive-site: version 4 - CHANGED - hive.server2.authentication.spnego.principal - /etc/security/keytabs/spnego.service.keytab => HTTP/[email protected] hive-site: version 4 - CHANGED - hive.server2.authentication.spnego.keytab - HTTP/[email protected] => /etc/security/keytabs/spnego.service.keytab hive-site: version 4 - ADDED - hive.server2.authentication.kerberos.keytab - /etc/security/keytabs/hive.service.keytab hive-site: version 4 - CHANGED - hive.zookeeper.quorum - horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 => horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 4 - ADDED - hive.server2.authentication.kerberos.principal - hive/[email protected] hive-site: version 4 - ADDED - atlas.rest.address - http://horton03.myhost.com:21000 hive-site: version 4 - CHANGED - hive.cluster.delegation.token.store.zookeeper.connectString - horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 => horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 4 - CHANGED - hive.server2.authentication - NONE => KERBEROS hive-site: version 5 - CHANGED - atlas.cluster.name - default => bigdata hive-site: version 6 - ADDED - my.prop.test - blub
I still need to add the username, however I haven't found it for every config version. Does anyone know if I can retrieve the username of the person that changed the configuration?
Hope that helps 🙂
Update: Found the usernames, but I need to map config type (hive-site, hive-env,...) to service name (HIVE).....bit tricky.....
Created 11-25-2015 10:54 PM
@Olivier Renault I don't think we have a separate audit tool or recording of the changes available, however a short Python script should solve this problem.
I just created a short example (quick and dirty solution, needs some tweaking! :P), take a look at this https://github.com/mr-jstraub/ambari-audit-config
The repo contains an audit.py script that you can use as follows:
Example (audit hive-site to shell):
python audit.py --target horton01.myhost.com:8080 --cluster bigdata --user admin --config hive-site
Example (audit hive-site to hive-site_audit.log)
python audit.py --target horton01.myhost.com:8080 --cluster bigdata --user admin --config hive-site --output hive-site_audit.log
Result:
hive-site: version 1 - ADDED - javax.jdo.option.ConnectionDriverName - com.mysql.jdbc.Driver hive-site: version 1 - ADDED - hive.fetch.task.aggr - false hive-site: version 1 - ADDED - hive.execution.engine - tez hive-site: version 1 - ADDED - hive.tez.java.opts - -server -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseG1GC -XX:+ResizeTLAB -XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps hive-site: version 1 - ADDED - hive.vectorized.groupby.maxentries - 100000 hive-site: version 1 - ADDED - hive.server2.table.type.mapping - CLASSIC ... ... ... hive-site: version 1 - ADDED - hive.compactor.check.interval - 300L hive-site: version 1 - ADDED - hive.compactor.delta.pct.threshold - 0.1f hive-site: version 2 - CHANGED - javax.jdo.option.ConnectionURL - jdbc:mysql://horton03.myhost.com/hive?createDatabaseIfNotExist=true => jdbc:mysql://horton03.myhost.com:3306/hive?createDatabaseIfNotExist=true hive-site: version 2 - CHANGED - hive.zookeeper.quorum - horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 => horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 2 - CHANGED - hive.cluster.delegation.token.store.zookeeper.connectString - horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 => horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 3 - CHANGED - javax.jdo.option.ConnectionURL - jdbc:mysql://horton03.myhost.com:3306/hive?createDatabaseIfNotExist=true => jdbc:mysql://horton03.myhost.com/hive?createDatabaseIfNotExist=true hive-site: version 4 - ADDED - atlas.cluster.name - default hive-site: version 4 - CHANGED - hive.exec.post.hooks - org.apache.hadoop.hive.ql.hooks.ATSHook => org.apache.hadoop.hive.ql.hooks.ATSHook,org.apache.atlas.hive.hook.HiveHook hive-site: version 4 - CHANGED - hive.metastore.sasl.enabled - false => true hive-site: version 4 - CHANGED - hive.server2.authentication.spnego.principal - /etc/security/keytabs/spnego.service.keytab => HTTP/[email protected] hive-site: version 4 - CHANGED - hive.server2.authentication.spnego.keytab - HTTP/[email protected] => /etc/security/keytabs/spnego.service.keytab hive-site: version 4 - ADDED - hive.server2.authentication.kerberos.keytab - /etc/security/keytabs/hive.service.keytab hive-site: version 4 - CHANGED - hive.zookeeper.quorum - horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 => horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 4 - ADDED - hive.server2.authentication.kerberos.principal - hive/[email protected] hive-site: version 4 - ADDED - atlas.rest.address - http://horton03.myhost.com:21000 hive-site: version 4 - CHANGED - hive.cluster.delegation.token.store.zookeeper.connectString - horton02.myhost.com:2181,horton03.myhost.com:2181,horton01.myhost.com:2181 => horton03.myhost.com:2181,horton02.myhost.com:2181,horton01.myhost.com:2181 hive-site: version 4 - CHANGED - hive.server2.authentication - NONE => KERBEROS hive-site: version 5 - CHANGED - atlas.cluster.name - default => bigdata hive-site: version 6 - ADDED - my.prop.test - blub
I still need to add the username, however I haven't found it for every config version. Does anyone know if I can retrieve the username of the person that changed the configuration?
Hope that helps 🙂
Update: Found the usernames, but I need to map config type (hive-site, hive-env,...) to service name (HIVE).....bit tricky.....
Created 11-26-2015 06:40 AM
Awesome stuff!
Created 11-26-2015 06:45 AM
thanks 🙂
Created 11-26-2015 10:43 AM
@Jonas Straub nice!!!
Created 11-27-2015 04:13 PM
@Jonas Straub - Cool stuff!!
Created 11-26-2015 06:25 AM
Great help, thanks a lot
Created 02-15-2016 02:46 PM
Looks useful, but exactly which python binary is this intended to work with? It fails immediately with a complaint about not being able to find the 'request' package. I grepped the /usr/hdp tree, but cannot find a 'request.py' module.
Created 02-15-2016 02:55 PM
[root@phdns01 ~]# find / -name audit.py
/usr/lib64/python2.6/site-packages/audit.py
/usr/lib64/python2.6/site-packages/sepolgen/audit.py
[root@phdns01 ~]#
[root@phdns01 ~]# find / -name request.py
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/request.py
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py
/usr/lib/python2.6/site-packages/urllib3/request.py
/usr/lib/python2.6/site-packages/urllib3/util/request.py
/usr/lib/python2.6/site-packages/rbtools/api/request.py
/usr/lib/python2.6/site-packages/boto/ec2/autoscale/request.py
/usr/lib64/python2.6/site-packages/mercurial/hgweb/request.py
[root@phdns01 ~]#
Created 02-15-2016 07:43 PM
The python script is using the following modules:
requests json getpass logging sys getopt
On most of the systems you only have to install getpass and requests.
Requests is not python script, its a complete package that makes it easier to submit API requests, see this page http://docs.python-requests.org/en/master/ (You can install it with "pip install requests")
Let me know if you need any help with the script, I am happy to help and improve the script 🙂