Category Archives: System Admin

Let’s install Zenoss 4!

About a year ago I was playing around with Zenoss 3 as we were exploring the options for resource usage reporting.  Had a go with Zenoss, Splunk, and some other solutions.  In the end, we decided to go for something else, a more ‘commercial’ solution fit and worthy for an ‘enterprise’.

Since then, Zenoss has launched a new version which is Zenoss 4.  Our ‘commercial’ solution is moving along but is not quite done.  In the meantime, I want to come up with a quick monitoring dashboard so that I can do my job (system administration) better.  So, I decided to have another go with Zenoss.

First, let’s start with reading the installation guide and see what the requirements are.

Requirement number one: Zenoss runs on RHEL/Centos.  Good, I like rpm-based linux.

Requirement number two: Hardware.

Deployment Size Memory CPU Storage
1 to 250 devices 4GB 2 cores 300GB, 10K RPM or SSD
250 to 500 devices 8GB 4 cores 300GB, 10K RPM or SSD
500 to 1000 devices 16GB 8 cores 300GB, 15K RPM or SSD

Ok, I will probably use this on 200+ devices, so I think I will need 6GB and 2 cores.

Requirement number three: Non-journaled filesystem for RRD files that will be located in /opt/zenoss/perf.

The Zenoss installation guide contains installation instructions for RHEL5 and RHEL6.  I am going to install CentOS 6.4 as that is the latest version to date.

Prerequisites for CentOS 6 according to the installation guide:

  • SELinux is disabled (I don’t like this.)
  • Directory /opt/zenoss is not a symlink to another location
  • umask is set to 022
  • /home directory is writable by root (or /home/zenoss exists as user zenoss’s home directory)
  • connected to the internet
  • DNS is available

Software prerequisites for CentOS 6 according to the installation guide:

Prerequisite Version
Oracle Java 1.6 Update 31 (NOT 1.7)
RRDtool 1.4.7 or later
MySQL Community Server 5.5.25 through 5.5.28
RabbitMQ 2.8.6 or later
Nagios Plugins 1.4.15 or later
Erlang R12B

Further into the guide, there are detailed information on how to install Oracle Java, RRDtool, MySQL Community Server, and RabbitMQ.  However, nothing was written about Nagios Plugin or Erlang,

A quick google search reveals that nagios-plugins can be installed using yum, but it will involve a third-party repository, which I am uncomfortable doing.  Erlang looks like it will be installed together with RabbitMQ, but I cannot be certain at this point.

I am quite disappointed with the installation guide, but hey, that’s what you get with free things.

This hiccup brings me back to the Zenoss website.  Hey what’s this?  An auto-deploy script?  Ok, let’s use this instead.

This will be continued on the next post.

Using nice URLs for APEX

So, I have installed the OS to my server, and subsequently installed the latest Oracle Express Database, and now I can start making applications using Oracle Application Express (APEX).

I can access the APEX login page by typing in the following address:

http://host.domain.com:8080/apex/

Notice the ugly :8080 after the hostname? That is because the APEX installation on Oracle XE defaults to using the Embedded PL/SQL Gateway (EPG) and EPG listens to port 8080 by default.

I want to change the URL to a ‘nicer-looking’ one. One way of doing this is to configure EPG to listen to port 80.  This is especially fine if APEX is the sole purpose of the server. However, since the server will be used for other purposes, this is undesirable because EPG cannot serve as a regular webserver, and therefore cannot replace Apache.

Another way to give APEX a nice URL is to use Apache’s reverse proxy feature.  The users will not directly access APEX via EPG but will connect to Apache, which in turn will connect to APEX.

First, set up the proxy directives in apache conf:

<IfModule mod_proxy.c>
#ProxyRequests should be turned off to disable forward proxy
ProxyRequests Off
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
</IfModule>

Then put in the actual proxy configuration for APEX:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName host.domain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName apex.domain.com

    Redirect    /       http://apex.domain.com/apex/

    <Location /apex/>
        ProxyPass               http://localhost:8080/apex/
        ProxyPassReverse        http://localhost:8080/apex/
    </Location>

    <Location /i/>
        ProxyPass               http://localhost:8080/i/
        ProxyPassReverse        http://localhost:8080/i/
    </Location>
</VirtualHost>

Now the browser will show the APEX login page when you go to apex.domain.com.

Unable to use WordPress header crop

Tried to add a header image to the blog.  The image upload function worked fine but after the image was uploaded, WordPress asked to crop the image. Clicking on ‘Crop and Publish’ gives the error:

Image could not be processed. Please go back and try again.

Turns out you need an image manipulation tool called ‘gd’ to make WordPress header crop work. It is a module of php. Installation of gd:

# yum install php-gd

Had to restart apache and now header crop works!

Use subdomains with WordPress

My WordPress blog has been successfully installed.

Now, I want to run the blog under a sub-domain i.e. http://blog.domain.com instead of http://host.domain.com/blog.

Let’s see how this can be done.

Initial googling points to apache and mod_rewrite. Let’s read more.

Oops, further googling shows that this can be done without using URL rewrites. Just use the built-in apache virtual hosts feature by adding the following to the config file (/etc/httpd/conf/httpd.conf in CentOS):

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@blog.domain.com
    DocumentRoot /path/to/wordpress/directory
    ServerName blog.domain.com
    ErrorLog logs/blog.domain.com-error_log
    CustomLog logs/blog.domain.com-access_log common
</VirtualHost>

And.. voila! Not really. After doing this and restarting the apache service, http://blog.domain.com throws out a 404 error.

It turns out you need to change the WordPress working directory to the new URL via Settings>General before moving the files and implementing the virtual host. After that everything is OK.