I will outline my thoughts/opinions as I go… hopefully this doesn’t get too long…
First things first, I think this is a big step in the right direction. After my devs asked for these plugins, I started looking at the hodge podge of installation steps spewed into various reviews and was starting to get concerned. We could still never put this on our production servers (#2 and #3 below), but its certainly a lot better than reading through the feedback/reviews to figure out the various steps to install and taking some example init script and modifying it as necessary, etc. Thanks guys!
Now for the feedback…
I think it would make sense if it could do some basic detection of architecture, distro, etc rather than having like 6 scripts to choose from.
uname -iand a little checking for certain “release” files would probably go quite a ways to simplify things. I am not sure if its a good example, but I like how http://rvm.io has just one script, I also think its simpler syntax to
curl ... | bashrather than use the
bash -c "$(curl ..)"syntax, but that may just be my opinion
Proxy settings? In a PCI environment, direct outbound access is not generally allowed, so a place to set proxy settings would be handy. It would be even handier if it could lookup settings from nrsysmond, but I don’t think that should be required :-/
Native Packages, please! RPM/DEB packages are always easier to support, a yum repository and package installs can be tracked/managed in a RHEL (production) environment. You can then simplify what your script is trying to do.
… in the Redhat/CentOS case, EPEL has nodejs 0.10.26 already (surprising actually) … now they may not have all the node_modules you require, but several are there… and you could provide missing ones as proper packages until such time as EPEL included them, or even just embed them into your application installation similar to how the current npi is laid out. Proper packages would then require proper filesystem layout like /etc/newrelic/plugins/(pluginname)/ or /usr/libexec/newrelic-plugins/(plugin-name) … /var/lib/newrelic-plugins maybe? just some thoughts
Also I second what @nikolay says, add a PREFIX option so that it could be installed in /usr/local or whatever. I don’t want my stuff in /home/username/npi…, nor in /root/npi… I’d like to have the plugins run as an unprivileged user (such as newrelic). I think that may be a setting that can be set, but since it installed into /root, that sortof shoots that idea.
I also agree with: Add a non-interactive installation option so that it just “goes” which would make it very useful for automation/kickstart time
… maybe specific to the nrmysql module…
The default config file should at least have the default hostname (hostname -s) instead of “Localhost” (assuming that is the name we will see in NewRelic.
Is it possible to just have it read the config from ~/.my.cnf which we have configured for other reasons?
Ensure system requirements are met, like java is available for plugins that use java? Perhaps offer to install the native JRE package (java-1.7.0-openjdk in RHEL/CentOS).