Implementing Advanced Server Monitoring



Implementing Advanced Server Monitoring

You now can combine all you have learned to create a configuration file that monitors all these variables, and then you can integrate it into the existing MRTG configuration.

A Complete Sample Configuration

Here is a sample configuration file that is used to query server localhost for CPU, memory, disk, and TCP connection information:

     #
     # File: /etc/mrtg/server-info.cfg
     #
     # Configuration file for non bandwidth server statistics
     #


     #
     # Define global options
     #

     LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-
     MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt

     workdir: /var/www/mrtg/


     #
     # CPU Monitoring
     # (Scaled so that the sum of all three values doesn't exceed 100)
     #

     Target[server.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:craz33guy@localhost +
     ssCpuRawSystem.0&ssCpuRawSystem.0:craz33guy@localhost +
     ssCpuRawNice.0&ssCpuRawNice.0:craz33guy@localhost
     Title[server.cpu]: Server CPU Load
     PageTop[server.cpu]: <H1>CPU Load - System, User and Nice
     Processes</H1>
     MaxBytes[server.cpu]: 100
     ShortLegend[server.cpu]: %
     YLegend[server.cpu]: CPU Utilization
     Legend1[server.cpu]: Current CPU percentage load
     LegendI[server.cpu]: Used
     LegendO[server.cpu]:
     Options[server.cpu]: growright,nopercent
     Unscaled[server.cpu]: ymwd


     #
     # Memory Monitoring (Total Versus Available Memory)
     #

     Target[server.memory]:
     memAvailReal.0&memTotalReal.0:craz33guy@localhost
     Title[server.memory]: Free Memory
     PageTop[server.memory]: <H1>Free Memory</H1>
     MaxBytes[server.memory]: 100000000000
     ShortLegend[server.memory]: B
     YLegend[server.memory]: Bytes
     LegendI[server.memory]: Free
     LegendO[server.memory]: Total
     Legend1[server.memory]: Free memory, not including swap, in bytes
     Legend2[server.memory]: Total memory
     Options[server.memory]: gauge,growright,nopercent
     kMG[server.memory]: k,M,G,T,P,X


     #
     # Memory Monitoring (Percentage usage)
     #
     Title[server.mempercent]: Percentage Free Memory
     Target[server.mempercent]: (
     memAvailReal.0&memAvailReal.0:craz33guy@localhost ) * 100 / (
     memTotalReal.0&memTotalReal.0:craz33guy@localhost )
     options[server.mempercent]:
     PageTop[server.mempercent]: <H1>Percentage Free Memory</H1>
     growright,gauge,transparent,nopercent
     Unscaled[server.mempercent]: ymwd
     MaxBytes[server.mempercent]: 100
     YLegend[server.mempercent]: Memory %
     ShortLegend[server.mempercent]: Percent
     LegendI[server.mempercent]: Free
     LegendO[server.mempercent]: Free
     Legend1[server.mempercent]: Percentage Free Memory
     Legend2[server.mempercent]: Percentage Free Memory


     #
     # New TCP Connection Monitoring (per minute)
     #

     Target[server.newconns]:
     tcpPassiveOpens.0&tcpActiveOpens.0:craz33guy@localhost
     Title[server.newconns]: Newly Created TCP Connections
     PageTop[server.newconns]: <H1>New TCP Connections</H1>
     MaxBytes[server.newconns]: 10000000000
     ShortLegend[server.newconns]: c/s
     YLegend[server.newconns]: Conns / Min
     LegendI[server.newconns]: In
     LegendO[server.newconns]: Out
     Legend1[server.newconns]: New inbound connections
     Legend2[server.newconns]: New outbound connections
     Options[server.newconns]: growright,nopercent,perminute

     #
     # Established TCP Connections
     #

     Target[server.estabcons]:
     tcpCurrEstab.0&tcpCurrEstab.0:craz33guy@localhost
     Title[server.estabcons]: Currently Established TCP Connections
     PageTop[server.estabcons]: <H1>Established TCP Connections</H1>
     MaxBytes[server.estabcons]: 10000000000
     ShortLegend[server.estabcons]:
     YLegend[server.estabcons]: Connections
     LegendI[server.estabcons]: In
     LegendO[server.estabcons]:
     Legend1[server.estabcons]: Established connections
     Legend2[server.estabcons]:
     Options[server.estabcons]: growright,nopercent,gauge

     #
     # Disk Usage Monitoring
     #

     Target[server.disk]: dskPercent.1&dskPercent.2:craz33guy@localhost
     Title[server.disk]: Disk Partition Usage
     PageTop[server.disk]: <H1>Disk Partition Usage /home and /var</H1>
     MaxBytes[server.disk]: 100
     ShortLegend[server.disk]: %
     YLegend[server.disk]: Utilization
     LegendI[server.disk]: /home
     LegendO[server.disk]: /var
     Options[server.disk]: gauge,growright,nopercent
     Unscaled[server.disk]: ymwd

Testing the Configuration

The next step is to test that MRTG can load the configuration file correctly.

Restart SNMP to make sure the disk monitoring commands in the snmpd.conf file are activated. Run the /usr/bin/mrtg command followed by the name of the configuration file three times. If all goes well, MRTG will complain only about the fact that certain database files don't exist. MRTG then creates the files. By the third run, all the files are created and MRTG should operate smoothly.

     [root@bigboy tmp]# service snmpd restart
     [root@bigboy tmp]# env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg

Creating a New MRTG Index Page to Include this File

Use the indexmaker command and include your original MRTG configuration file from Chapter 22 (/etc/mrtg/mrtg.cfg) plus the new one you created (/etc/mrtg/server-stats.cfg).

     [root@bigboy tmp]# indexmaker --output=/var/www/mrtg/index.html \
     /etc/mrtg/mrtg.cfg /etc/mrtg/server-stats.cfg

Configuring CRON to Use the New MRTG File

The final step is to make sure that MRTG is configured to poll your server every five minutes using this new configuration file. To do so, add this line to your /etc/cron.d/mrtg file:

     0-59/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/server-
     stats.cfg

Some versions of Linux require you to edit your /etc/crontab file instead. See Chapter 22 for more details. You will also have to restart cron with the service crond restart for it to read its new configuration file that tells it to additionally run MRTG every five minutes using the new MRTG configuration file.

     [root@bigboy tmp]# service crond restart