| 1 | 1 | simandl | HotSaNIC |
| 2 | | | HTML overview to System and Network Information Center |
| 3 | | | by Bernd Pissny ( hotsanic@bernisys.prima.de / http://www.bernisys.prima.de ) |
| 4 | | | |
| 5 | | | ---------------------------------------------------------------------- |
| 6 | | | |
| 7 | | | HotSaNIC documentation |
| 8 | | | |
| 9 | | | CONTENTS |
| 10 | | | |
| 11 | | | ------------------------------------------------------------------- |
| 12 | | | |
| 13 | | | 1. description |
| 14 | | | 2. requirements |
| 15 | | | 3. configuration |
| 16 | | | 4. starting & stopping |
| 17 | | | 5. web output |
| 18 | | | 6. troubleshooting |
| 19 | | | 7. upgrading |
| 20 | | | 8. tools |
| 21 | | | 9. contacting me |
| 22 | | | 10. credits |
| 23 | | | 11. future plans |
| 24 | | | |
| 25 | | | DESCRIPTION |
| 26 | | | |
| 27 | | | ------------------------------------------------------------------- |
| 28 | | | |
| 29 | | | HotSaNIC (the acronym stands for "html overview to system and network |
| 30 | | | information center") consists of a set of perl-scripts built on Tobias |
| 31 | | | Oetiker's "rrdtool" to generate graphical system-statistics, currently |
| 32 | | | supported platforms are linux (main development) and *BSD. |
| 33 | | | I started to build this tool in december 2000, because none of the |
| 34 | | | existing stats-tools gave me the flexibility and resolution i expected. |
| 35 | | | Most tools had a minimum query-time of one minute, while i use a 10sec. |
| 36 | | | timebase, which shows a lot more dynamics in the graphs. |
| 37 | | | The whole project is built in a modular way to make it quite easy to |
| 38 | | | expand, unused modules may be switched off easily. |
| 39 | | | Another advantage over most existing tools is the min/max-area that is |
| 40 | | | drawn behind the average-graphs in many modules - a feature that |
| 41 | | | reflects e.g. min/max bandwidth usage in much more detail than similar |
| 42 | | | tools do. |
| 43 | | | The smallest time span that will be displayed covers the last hour, the |
| 44 | | | longest span diagram covers the last year though all data will be kept |
| 45 | | | for about two years (in order to have the chance to look further back |
| 46 | | | in time and compare). Currently supported data-sources are traffic |
| 47 | | | (local and via SNMP), system's properties like |
| 48 | | | processes/memory/users/loadavg, hdd usage, hdd throughput, ping-times, |
| 49 | | | lm_sensors, #of running copies of given applications, distributed.net |
| 50 | | | statistics, worm-impacts (by analyzing apache-logfiles), APC-USV |
| 51 | | | statistics (load/temperature/charge...), connections to shoutcast |
| 52 | | | streams. More modules are to come on users' requests and ideas. |
| 53 | | | I recently started adding some tools for debugging and to generate |
| 54 | | | alarm-reports (for example if a given threshold is exceeded) which may |
| 55 | | | be mailed to the system's admins. |
| 56 | | | |
| 57 | | | REQUIREMENTS |
| 58 | | | |
| 59 | | | ------------------------------------------------------------------- |
| 60 | | | |
| 61 | | | Tobias Oetiker's "rrdtool" is needed to let this script work. It is |
| 62 | | | used to manage the databases and generate the graphics. At this point i |
| 63 | | | would like to congratulate Tobi, he did a very good job writing this |
| 64 | | | magnificent tool! |
| 65 | | | |
| 66 | | | Since I mainly use Perl5 to sample the data and update the databases, |
| 67 | | | of course this has to be installed on your system. But this should not |
| 68 | | | be an issue since most systems already come with full Perl5 support. |
| 69 | | | But please be sure to install the perl-libraries of "rrdtool" using |
| 70 | | | "make site-perl-install" afer you install "rrdtool." |
| 71 | | | |
| 72 | | | "convert" from the "ImageMagick" package has to be installed to get |
| 73 | | | full functionality. |
| 74 | | | |
| 75 | | | "iptables" or "ipchains" has to be installed if you want to use the |
| 76 | | | "network" module. Maybe you have to build a new kernel which has the |
| 77 | | | corrosponding firewalling capabilities (packet filter) |
| 78 | | | |
| 79 | | | CONFIGURATION |
| 80 | | | |
| 81 | | | ------------------------------------------------------------------- |
| 82 | | | |
| 83 | | | For version 0.3.6 first of all you should run setup.pl to generate the |
| 84 | | | start/stop script (this will be rrdgraph) and the main "settings" file. |
| 85 | | | The setup-script also calls each module's setup script to generate all |
| 86 | | | module-specific settings. After that you should check if the "settings" |
| 87 | | | file in the main directory contains the correct configuration to fit |
| 88 | | | your system. Then you should check the settings files in each module |
| 89 | | | directory and edit the generated "settings" files to fit your system. |
| 90 | | | |
| 91 | | | The "settings" files are (well, ok, at least they should be) quite |
| 92 | | | self-explaining, so i guess it isn't needed to explain them here - |
| 93 | | | though some day I might list every single module on this page along |
| 94 | | | with a short explanation of what they do and which features they have. |
| 95 | | | |
| 96 | | | STARTING AND STOPPING THE DAEMON |
| 97 | | | |
| 98 | | | ------------------------------------------------------------------- |
| 99 | | | |
| 100 | | | To run the auto-update daemon the best thing would be to get yourself |
| 101 | | | root-permissions and enter: |
| 102 | | | |
| 103 | | | ./rrdgraph start |
| 104 | | | |
| 105 | | | rrdgraph will begin sampling data vor every plugin installed every 10 |
| 106 | | | seconds. |
| 107 | | | |
| 108 | | | To stop the daemon enter |
| 109 | | | |
| 110 | | | ./rrdgraph stop |
| 111 | | | |
| 112 | | | Most modules will run as non-root, too, but if you want full |
| 113 | | | functionality it is absolutely necessary to let the whole thing run as |
| 114 | | | root. For example the PING module uses ICMP stuff that is only working |
| 115 | | | if you are running it as root. |
| 116 | | | |
| 117 | | | GENERATING WEB-STATISTICS |
| 118 | | | |
| 119 | | | ------------------------------------------------------------------- |
| 120 | | | |
| 121 | | | Well, you should not have to worry about anything except the |
| 122 | | | output-directory which has to be configured correctly (you will have to |
| 123 | | | enter the full path!) in the main settings file. |
| 124 | | | |
| 125 | | | The images on the statistics pages will be built automatically by |
| 126 | | | HotSaNIC every configured timespan (which will be 15min. by default) If |
| 127 | | | you like to build the graphs more often, you are welcome to decrease |
| 128 | | | the time-base as you like by editing the main settings file. But be |
| 129 | | | sure that decreasing the time-span will eat up more CPU time (which may |
| 130 | | | be needed for more important tasks ... ). |
| 131 | | | |
| 132 | | | To build the index.html files just start makeindex.pl and all shall be |
| 133 | | | well. The script will gather every plugin-directory and build the |
| 134 | | | necessary index-files for your webpage. In case you install a new |
| 135 | | | plugin, just let HotSaNIC run a couple of minutes inititalize the |
| 136 | | | plugin's databases. Then you just call makeindex.pl again and it will |
| 137 | | | do the rather nasty update-job for you. New plugins can be installed on |
| 138 | | | the fly, the only thing to do is to copy the module-directory to the |
| 139 | | | main directory and maybe you have to add the new module to the RUN and |
| 140 | | | SHOW entries in the main settings. |
| 141 | | | |
| 142 | | | If you use the "traffic" plugin, please let rrdgraph run at least some |
| 143 | | | 30 seconds to allow the plugin to scan your local interfaces before you |
| 144 | | | run the index-maker. |
| 145 | | | |
| 146 | | | "rrdtimer" will call "convert.sh" about every 24h (timebase may be |
| 147 | | | configured in main settings file). This script will generate pictograms |
| 148 | | | on the main index page of your webstats from the actual weekly graphs. |
| 149 | | | |
| 150 | | | This will require "convert" from "ImageMagick" to be installed. It is |
| 151 | | | used to resize the weekly graph images. |
| 152 | | | |
| 153 | | | TROUBLESHOOTING |
| 154 | | | |
| 155 | | | ------------------------------------------------------------------- |
| 156 | | | |
| 157 | | | o How do I solve the "cannot find "RRDs.pm" issue? |
| 158 | | | |
| 159 | | | ------------------------------------------------------------------- |
| 160 | | | |
| 161 | | | You probably forgot to install the site-perl module of rrdtool. |
| 162 | | | |
| 163 | | | If you installed rrdtool from the source files, you just have to do |
| 164 | | | a |
| 165 | | | |
| 166 | | | make site-perl-install |
| 167 | | | |
| 168 | | | If you used a .rpm package, you should check if the RRDs.pm has |
| 169 | | | been installed in the correct places. maybe you used an RPM package |
| 170 | | | which didn't really fit your installation - some pathes may have |
| 171 | | | changed. |
| 172 | | | |
| 173 | | | Or maybe you upgraded PERL, then you also may have to adapt the |
| 174 | | | modules' pathes. |
| 175 | | | |
| 176 | | | o ping module is not working |
| 177 | | | |
| 178 | | | ------------------------------------------------------------------- |
| 179 | | | |
| 180 | | | On some systems the PERL header-files may be missing. This results |
| 181 | | | in the ping-module complaining about something like |
| 182 | | | |
| 183 | | | "Can't locate sys/syscall.ph in @INC (did you run h2ph?)" |
| 184 | | | |
| 185 | | | Linux distributions known to be affected are for example "RedHat |
| 186 | | | 7.2" and "Slackware" |
| 187 | | | |
| 188 | | | The solution would be to do (as root) the following: |
| 189 | | | |
| 190 | | | cd /usr/include |
| 191 | | | find . -name '*.h' -print | xargs h2ph |
| 192 | | | |
| 193 | | | After that everything should run as expected. - hopefully ;) |
| 194 | | | |
| 195 | | | o the graphs don't show up |
| 196 | | | |
| 197 | | | ------------------------------------------------------------------- |
| 198 | | | |
| 199 | | | Maybe you just started the daemon. in that case let it run for some |
| 200 | | | minutes to let the databases be created and filled. Then you may |
| 201 | | | run the "diagrams" script in the main directory to generate the |
| 202 | | | graphs. This is done by the daemon automatically every DTIME (found |
| 203 | | | in the main settings) |
| 204 | | | If just the small graphs on the main page don't show, you have to |
| 205 | | | run "convert.pl" (or "convert.sh") in order to create the thumbnail |
| 206 | | | images. This is done every CTIME. |
| 207 | | | |
| 208 | | | o the thumbnails on the main page are not updating or still don't |
| 209 | | | exist |
| 210 | | | |
| 211 | | | ------------------------------------------------------------------- |
| 212 | | | |
| 213 | | | Maybe you upgraded to v0.3.6 or later ? |
| 214 | | | In the later snapshots of this version the thumbnails moved from |
| 215 | | | the main web-dir to the module subdirs to enhance the overview a |
| 216 | | | bit. You have to call the main "makeindex.pl" to update the html |
| 217 | | | pages once again. |
| 218 | | | |
| 219 | | | o after i compiled the scripts some modules fill the logfiles with |
| 220 | | | errors |
| 221 | | | |
| 222 | | | ------------------------------------------------------------------- |
| 223 | | | |
| 224 | | | At the moment there is no other way than removing the binaries. I |
| 225 | | | had such strange effects on some systems myself, but I don't know |
| 226 | | | why the binaries behave that way. The compiling completes without |
| 227 | | | any errors, but the binaries won't start properly like the .pl |
| 228 | | | scripts do. |
| 229 | | | |
| 230 | | | UPGRADING |
| 231 | | | |
| 232 | | | ------------------------------------------------------------------- |
| 233 | | | |
| 234 | | | Generally the upgrade process involves the following actions: |
| 235 | | | o stop the daemon |
| 236 | | | o copy the new files over the existing ones |
| 237 | | | o call the main setup script |
| 238 | | | o call each module's update script (if exists) |
| 239 | | | o re-start the daemon |
| 240 | | | However, if you intend to upgrade your HotSaNIC installation, you |
| 241 | | | should check the HotaNIC homepage firt to make sure wich additional |
| 242 | | | steps have to be performed. Maybe you have to check the history as |
| 243 | | | well, in case you update from a very old version. |
| 244 | | | Usually updates run quite smoothly without any further changes. You |
| 245 | | | should do as described above: Stop the daemon first to make sure |
| 246 | | | that no data will be fed into the databases which may lead to some |
| 247 | | | annoying side-effects. Then copy the new files to the corrosponding |
| 248 | | | directories. If some major changes occur, there will be an update |
| 249 | | | script in the affected module which you will have to call. The |
| 250 | | | script will take care the necessary and sometimes really nasty |
| 251 | | | modifications for you. |
| 252 | | | Anyway, if you copy a newer version over a previous one, it's |
| 253 | | | always a good idea to call the main setup script once again. Maybe |
| 254 | | | some new important configuration items have been added since you |
| 255 | | | last upgraded or installed the tool! |
| 256 | | | Oh, and don't forget to re-start the daemon afterwards ;). |
| 257 | | | |
| 258 | | | TOOLS |
| 259 | | | |
| 260 | | | ------------------------------------------------------------------- |
| 261 | | | |
| 262 | | | Since version 0.4.0 I added a directory containing some possibly |
| 263 | | | useful scripts and add-ons for HotSaNIC. |
| 264 | | | A brief description resides in this directory, some further |
| 265 | | | descriptions may appear in this documentation later. |
| 266 | | | |
| 267 | | | One nifty thing has to be mentioned: |
| 268 | | | The modules may be compied in order to start up a bit faster. This |
| 269 | | | will save some percent of your valuable CPU time, but it may not |
| 270 | | | run on every machine! Unhappily the behaviour of the binaries is |
| 271 | | | beyond my control. In most cases they run as smoothly as the |
| 272 | | | perl-scripts, but up to three times faster, sometimes they fill the |
| 273 | | | error-log and sometimes they won't even compile. Only thing you can |
| 274 | | | do is to give it a try and remove all binaries which cause |
| 275 | | | problems. |
| 276 | | | |
| 277 | | | The compilation process is quite easy: Just call the "compile" |
| 278 | | | script in the main directory - that's all. |
| 279 | | | A whole load of compiler information will scroll down your screen |
| 280 | | | for quite a while. During the (hopefully successful) compiling |
| 281 | | | process, your daemon will automatically start to call the binaries |
| 282 | | | instead of the scripts. These are named "read-data" (without the |
| 283 | | | .pl suffix). This allows to compile while the daemon is already |
| 284 | | | running. |
| 285 | | | The compile script has some useful options: |
| 286 | | | o "compile r" forces the re-compiling of all modules - no matter |
| 287 | | | if they are already compiled or not. |
| 288 | | | o "compile u" removes all binaries, leaving just the scripts |
| 289 | | | again. |
| 290 | | | o "compile c" checks if any modules have to be re-compiled (does |
| 291 | | | not change anything, just lists them) |
| 292 | | | o "compile " compiles precisely not more the given module (the |
| 293 | | | prefix "data-" may be omitted). |
| 294 | | | |
| 295 | | | CONTACT |
| 296 | | | |
| 297 | | | ------------------------------------------------------------------- |
| 298 | | | |
| 299 | | | If you encounter further problems or have any questions or new |
| 300 | | | ideas, please contact us at hotsanic@bernisys.prima.de, we will try |
| 301 | | | to take care of everything. It would be a good idea to put the |
| 302 | | | keyword "hotsanic" and a brief description of your request into the |
| 303 | | | subject to make sure i find your mails again in case we need them |
| 304 | | | later on. |
| 305 | | | |
| 306 | | | If you already have a solution for a problem you encountered, |
| 307 | | | please attach the working code or the modifications you made. A |
| 308 | | | proper description of your problem and the changes you made would |
| 309 | | | be very helpful. |
| 310 | | | |
| 311 | | | Same goes for extensions ideas and support for systems other than |
| 312 | | | Linux. |
| 313 | | | |
| 314 | | | CREDITS |
| 315 | | | |
| 316 | | | ------------------------------------------------------------------- |
| 317 | | | |
| 318 | | | At this point i'd like to thank and honor some people who |
| 319 | | | support(ed) me and my project: |
| 320 | | | o Matt Burke and Peter Reich, who are heavily involved in |
| 321 | | | getting all functions running on BSD systems ! |
| 322 | | | o Todd Underwood, who managed to create some RPMs ! |
| 323 | | | o All my trusted friends for being appreciative of my hacking |
| 324 | | | till late in the night ! ;) |
| 325 | | | o Everybody who sent me hints, new ideas, extensions and |
| 326 | | | bug-reports. |
| 327 | | | |
| 328 | | | FUTURE PLANS |
| 329 | | | |
| 330 | | | ------------------------------------------------------------------- |
| 331 | | | |
| 332 | | | I intend to convert the whole shell-script crap to a PERL script |
| 333 | | | which will run very much faster and therefore does not generate |
| 334 | | | unnecessary system-overhead. This is already done for the |
| 335 | | | data-sampling scripts and the index generation. TODO: diagrams |
| 336 | | | |
| 337 | | | I would like to implement more SMNP features not only for the |
| 338 | | | traffic module (as far as possible of course). |
| 339 | | | |
| 340 | | | In case you have written your own plug-in and you find it useful, |
| 341 | | | be sure to e-mail me a .tgz of your module and include a short |
| 342 | | | description. Same goes for reporting bugs of course! |
| 343 | | | |
| 344 | | | Thank you! |
| 345 | | | |
| 346 | | | ---------------------------------------------------------------------- |