Tag Archive: monitoring


At work we have three generic LCD monitors mounted on a pole to view monitoring metrics for our Oracle & Sybase database servers. On a previous machine that was cannibalized for another task, we ran Microsoft Windows XP to drive the three monitors.

Last week we were given a hand me down desktop, a Dell Optiplex GX520 with integrated Intel 82945G/GZ video on the motherboard. When we added the NVidia GeForce4 MX 4000 low profile video card, Windows XP for whatever reason was unable to use both video cards. I proposed Kubuntu 9.04 Linux as an alternative. As it was only myself that I had to convince to make the attempt, I was hard pressed to say no ;-)

The Intel 82945G/GZ video card will be the primary card and must be attached to “Screen 0″ in the ServerLayout section.

The NVidia video card has two connectors:

  1. A standard VGA port driven by a GeForce4 MX 4000 GPU < - Primary nvidia port
  2. A super-video port driven by a Quadro NVS 110M

After the base install of the operating system, XWindows was only able to see the Intel video card. After much tinkering with the /etc/xorg.conf file, I was able to get all three LCD monitors to work with Xinerama. There are a number of gotchas that you might run into:

  • If the integrated Intel video card is set to Auto in the BIOS, the card will be completely disabled. You need to disable Auto
  • You need to know which Nvidia Device entry drives the VGA connector. It must be initialized prior to the S-Video port.
  • Disable NVidia’s TwinView and metamodes option lines in the Screen Section.
  • Use sudo lspci to identify the pci bus ids. You will need to put them in the Device Sections.
  • The integrated Intel video card must use the vesa video driver as the intel video driver will stacktrace when used with xinerama.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildd@palmer)  Sun Feb  1 20:21:04 UTC 2009

Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "Screen0" 0 0  
    Screen      1  "Screen2" Above "Screen0"
    Screen      2  "Screen1" Above "Screen2"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"    
    Option "Xinerama" "On"                  
EndSection                                  

Section "Files"
    ModulePath      "/usr/lib/xorg/modules/extensions"
    ModulePath      "/usr/lib/xorg/modules/drivers"  
    ModulePath      "/usr/lib/xorg/modules"          
EndSection                                            

Section "Module"
    Load           "glx"
EndSection              

Section "ServerFlags"
    Option         "xinerama" "true"
    Option         "DefaultServerLayout" "Default Layout"
EndSection                                              

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"      
EndSection                    

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"  
EndSection                              

Section "Monitor"
    Identifier     "Configured Monitor"
EndSection                            

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "CMO CMC 17 AD"
    HorizSync       30.082.0  
    VertRefresh     50.075.0  
EndSection                        

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "CMO CMC 17 AD"
    HorizSync       30.082.0  
    VertRefresh     50.075.0  
EndSection                        

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "Seiko"  
    HorizSync       30.075.0
    VertRefresh     60.0      
EndSection                    

Section "Device"
    Identifier     "Configured Video Device"
    Driver         "nvidia"                
    Option         "NoLogo" "True"          
EndSection                                  

Section "Device"
   Identifier  "Device0"
   #Driver      "intel"
   Driver      "vesa"  
   VendorName  "Intel Corporation"
   BoardName   "82945G/GZ Integrated Graphics Controller"
   BusID       "PCI:0:2:0"                              
   Screen          0                                    
EndSection                                              

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 110M"
    BusID          "PCI:4:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce4 MX 4000"
    BusID          "PCI:4:0:0"
EndSection

Section "Screen"
    Identifier     "Default Screen"
    Device         "Configured Video Device"
    Monitor        "Configured Monitor"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "TwinViewXineramaInfoOrder" "CRT-0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "on"
EndSection

As part of our regular weekend maintenance for our Sybase database servers, we run many scripts, two of which are: update statistics and reorg/reindex.  In the past, if we wanted to show the output (log) of a maintenance script to someone outside of our group, we had to attach the log to an email and email to the person with instructions to open it using “write” or Microsoft Word and not Notepad because of the way unix/linux and windows handle new lines.  I wanted to get away from this painful ordeal by having the webserver find the logs and display them.  Now we just have to give the url to the person once. Cool

As we use Apache with mod_perl and Mason quite heavily, I decided the easiest way to do this is to create a component to obtain the list of the log files I’m interested in.  When I click on one of the files, instead of accessing the file semi-directly using a symbolic link to the file, a dhandle is called instead.  The dhandle catches the reorg/SISDBA1.out request, goes and reads the real file and spits it out.  If the file is an archived log (compressed), then we uncompress the file as we read it.

Adding a new series of log files are easy because the criteria we search for is a prefix in the filename.  Change the prefix in the index.html file, then the new log files are now viewable.  Of course, you will want to either modify the index.html file to handle multiple types of log files or just create another directory (i.e. dbccs) and copy the index.html & dhandler into it.

Adding a CSS template to this would be a simple matter.  In any case, enjoy!

Example:

Update Statistics Logs

Server Current Log Archived Logs
DBADEV1 update_stats_DBADEV1.out
SISDBA1 update_stats_SISDBA1.out update_stats_SISDBA1.out.1.gz (Wed Feb 7 09:50:02 2007)

View full article »