ZENOSS CLEAN INSTALL: Install CentOS 7 clean (64-bit, 16GB RAM, 2x4CPU, must support CPU extensions to avoid severely degraded performance* * use this to verify CPU extension support: # This command should output the number of CPUs in your machine cat /proc/cpuinfo | grep -Ec '^core id' # This command MUST be non-zero, and should match the number of CPUs from previous command # If it doesn’t match, STOP. You can continue, but performance will be really bad. I tried this on a PowerEdge R710, dual quad cores, 160GB RAM, didn’t support CPU extensions; performance was dismal. Super slow loading times, etc. cat /proc/cpuinfo | grep -Ec '^flags.*aes' I’m making the following assumptions about disk space for the install - I’m running this on a VM under VMware: Partitioning Layout: 2 disks attached; (1) 50GB and (1) 500GB Standard Partitions (XFS type) on the 50GB disk: /boot - 900MB / - the rest LVM Partition on the 500GB: swap - 4G /tmp - 10G /home - 10G /var - 50G /opt - 50G This should leave you with about 376GB left over in the volume group - verify with vgdisplay Download the current Master.ISO from the Community Home page; 6.1.1 at the time of this writing. Once you have that, do a find and grep for the .run files; then just copy them off where you want them. Make sure the yum-mirror-centos RPM matches the version you are installing (I used 7.4) #BEGIN INSTALL Make sure you have the following files (for version 6.1.1); all these files can be obtained from the Master ISO downloadable from community.zenoss.com/home install-zenoss-core_6.1-6.1.1_1.run install-zenoss-hbase_24.0.8.run install-zenoss-isvcs-zookeeper_v10.run install-zenoss-opentsdb_24.0.8.run install-zenoss-serviced-isvcs-v61.run serviced-1.5.0-1.x86_64.rpm yum-mirror-centos7.4.1708-serviced-1.5.0.x86_64.rpm zenoss-core-6.1.1_1.json zenoss-core-service-6.1.1-1.noarch.rpm #1 - Install Local Mirror repo and move serviced RPM to /opt/zenoss-repo-mirror yum install yum-mirror-centos7.4.1708-serviced-1.5.0.x86_64.rpm This should create the /opt/zenoss-repo-mirror directory for you mv serviced-1.5.0-1.x86_64.rpm /opt/zenoss-repo-mirror/ (Don’t install serviced RPM yet) Chmod all your downloaded .run files chmod +x *.run #2 - Verify architecture (must be x86_64) and free space/mem uname -m (x86_64) df -h /tmp (at least 10G) df -h /var/log (at least 10G) free -h (make note of memory available) #3 - Edit /etc/hosts with a localhost entry and your FQDN: 127.0.0.1 localhost 1.1.1.1 myhost.mydomain.edu myhost Examine current block storage: lsblk -ap --output=NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT and volume group: vgdisplay You will need about 350G free in a volume group from here on in order to install Zenoss #4 - Prep for main install, install a few requirements systemctl stop firewalld && systemctl disable firewalld mkdir -p /var/log/journal && systemctl restart systemd-journald yum install dnsmasq systemctl enable dnsmasq && systemctl start dnsmasq yum install ntp replace /etc/ntp.conf with the following (yours may differ, obviously): restrict default kod nomodify notrap nopeer restrict 127.0.0.1 server some.server.somewhere driftfile /var/lib/ntp/drift includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #Set system time with NTP ntpd -gq systemctl enable ntpd echo "systemctl start ntpd" >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local #5 - Install Docker using local repo you created (this step may take a bit - make sure to let it finish) yum install --enablerepo=zenoss-mirror docker-ce-17.09.0.ce systemctl enable docker #6 - Install serviced RPM yum install --enablerepo=zenoss-mirror /opt/zenoss-repo-mirror/serviced-1.5.0-1.x86_64.rpm #7 - Make docker use local /tmp dir mkdir /var/lib/docker ln -s /tmp /var/lib/docker/tmp mkdir -p /etc/systemd/system/docker.service.d #8 - populate /etc/systemd/docker.service/docker.conf with a few settings: cat < /etc/systemd/system/docker.service.d/docker.conf [Service] TimeoutSec=300 EnvironmentFile=-/etc/sysconfig/docker ExecStart= ExecStart=/usr/bin/dockerd \$OPTIONS TasksMax=infinity EOF #9 - Create a thin pool in existing unused volume group mylvmgroup’s space, call it docker serviced-storage create-thin-pool --size=50G docker mylvmgroup #10 - Verify docker’s address space ip addr show docker0 | grep inet should show something like: inet 172.17.0.1/16 scope global docker0 Your IP addresses in /etc/sysconfig/docker need to match the output of the previous command #11 - Edit your /etc/sysconfig/docker; ours looks like this: please note that I am using unused LVM volume group space, not dedicated block devices or disks, so my storage-driver is devicemapper, and my thinpooldev device is /dev/mapper/yada/yada /etc/sysconfig/docker contents: OPTIONS="--log-level=error --storage-driver devicemapper --exec-opt native.cgroupdriver=cgroupfs --storage-opt dm.mountopt=discard --storage-opt dm.thinpooldev=/dev/mapper/mylvmroup-docker--pool --dns=172.17.0.1 --bip=172.17.0.1/16" save it, and then restart docker #systemctl restart docker #12 - Deploy the two of the .run Docker files you downloaded create a directory called whatever you want; I used firststage; move install-zenoss-serviced-isvcs-v61.run and install-zenoss-isvcs-zookeeper_v10.run to it cd to firststage, and run the following command: for image in install-zenoss-*.run do /bin/echo -en "\nLoading $image..." yes | ./$image done Wait while these deploy…… once done, run: docker images This shows list of all loaded images #13 - Create another thin pool for app data called serviced serviced-storage create-thin-pool --size=200G serviced mylvmgroup #14 EDIT /etc/default/serviced and make sure the following lines exist and are uncommented: GOMAXPROCS=8 (I used 8 because 2x4; adjust for your env) SERVICED_MASTER=1 SERVICED_MASTER_POOLID=default SERVICED_DM_THINPOOLDEV=/dev/mapper/mylvmgroup-serviced--pool SERVICED_FS_TYPE=devicemapper SERVICED_DM_BASESIZE=90G NOTE: run the following to determine your SERVICED_DM_BASESIZE setting: lvs --options=lv_name,lv_size | grep serviced-pool make note of size in GB edit SERVICED_DM_BASESIZE variable to be just under half that number in /etc/default/serviced #15 Start up serviced systemctl start serviced #16 - Register a service serviced host add --register your.host.name:4979 default #17 - Deploy the Zenoss docker container from your download yum install zenoss-core-service-6.1.1-1.noarch.rpm #18 - Deploy second stage of .run files move the install-zenoss-core_6.1-6.1.1_1.run, install-zenoss-hbase_24.0.8.run, and install-zenoss-opentsdb_24.0.8.run files to a directory called whatever you want; I used secondstage, then run the following from within that directory: for image in install-zenoss-*.run do /bin/echo -en "\nLoading $image..." yes | ./$image done Wait for it to deploy…… #19 - Deploy the template corresponding to your version of Zenoss (can be found on the Master.ISO file, along with the others you extracted) serviced template add /opt/serviced/templates/zenoss*.json MAKE A NOTE OF THE TEMPLATE ID IT SPITS BACK! #20 - Deploy the Template! serviced template deploy default prod At this point, you *should* be able to log in to the base URL that runs the Control Center (i.e. https://your.server.name/#/apps), and from there start the Zenoss service….. happy configuring! A FEW USEFUL COMMANDS: Logging in to the actual Zenoss Docker Container as root: sudo serviced service shell -i zope /bin/bash From there, you can su to the zenoss user, generate ssh keys, or just test ssh’ing in with password to hosts you want to monitor that way Adding Zenpacks: Download the .egg file, and save to a directory, i.e. /tmp/zenpacks Change to that directory and run the following (Postgres egg shown for example) serviced service run zope zenpack-manager install ZenPacks.zenoss.PostgreSQL-1.0.10.egg