Translations of this page:

Osmius

Osmius Agent for Linux via SSH
Agent name: osm_ag_LINUXSSH Agent code: LINUXSSH
Content: Osmius agent for Linux Operating Systems monitoring via SSH User Manual
Date: 11/12/2009 Revision Date:

General Information

This agent can monitor various parameters of Linux systems via SSH. It has been tested in different environments. However, we recommend checking its functionality before implanting it in a production environment.

Linux via SSH agent has been developed using functionalities and enhancements of Osmius framework and ACE libraries, so it is necessary to install the ACE libraries for the proper deployment and operation of Linux via SSH Osmius agent. See chapter: installation.

In addition, we have used LIBSSH2 library to develop this agent, if you are planning compile this agent by yourself, you have to install it before. Take a look to prerequisites section

LINUXSSH agent provides up to 15 basic events with configuration parameters to allow scaling of a very simple way, in addition 9 informative events provides details of the monitored system. Events have been selected by the Research and Development Osmius Team as the most interesting for this first development.

All events are remote, so not intrusive. Monitoring is done through the network connection, by this reason you have to provide some connection information, see connection information. Events are based on remote command execution through ssh session. You need ssh service available on monitoring target machine and you also must know login credentials.

NOTE: This agent uses a library for the SSH connection called LIBSSH2
that causes high CPU consumption for a very short period of time.
We are waiting for the new version to see if this behavior stops.
Consider this fact.

Linux via SSH Instance

As a general rule each Osmius agent can monitor one instance type. If you are not familiar with these concepts check out the glossary. Each instance is individually defined in the configuration file (if you want further information go to agents and instances); depending on agent type is the instance type and depending on instance is the connection info.

CONNECTION_INFO

The connection information or connection_info is data that the agent needs to know to connect to the instance. (See more about the connection_info)

For Linux via SSH Osmius agent the connection_info prototype would be:

CONNECTION_INFO= -h HOST -u USER -p PASSWORD

Replace the following:

  • HOST: IP address or host name of monitoring target system. Mandatory.
  • USER: SSH access granted username. Mandatory.
  • PASSWORD: password for user specified above. Mandatory.

Examples:

CONECTION_INFO = -h osmius.net -u username -p pass
CONECTION_INFO = -h 123.123.123.123 -u useralpha -p passalpha

OBSERVATION: For security reason only 22 port is allowed.

TYPE

The type defines the instance type to be monitored. Every declared instance must be associated with a type as you can see here

For Linux via SSH:

TYPE= LINUXSSH

Event summary table for Linux via SSH

Here's briefly the capabilities of this agent, further down on this page each event is described in more detail.

EVENT DESCRIPTION c w a tseconds Extra parameters / Remarks
LRUPTIME Uptime in seconds1 600 300 600 Silent mode ( -s) recommmended
LRPRCCPU CPU load percentage 0 90 95 60 Silent mode ( -s) recommmended
LRPRCMEM Memory used percentage 0 70 90 60 Silent mode ( -s) recommmended
LRPRCSWP Swap memory used percentage 0 50 80 600 Silent mode ( -s) recommmended
LRPRDWN0 Check if a process is running 1 0 0 600 -P “process_name”
You can monitor up to 5 processes: LRPRDWN0, LRPRDWN1, LRPRDWN2, LRPRDWN3, LRPRDWN4
“Silent mode ( -s) recommmended
LRPROC00 Instances number of a running process 0 X Y 300 -P “process_number”
You can monitor up to 5 processes: LRPROC00, LRPROC01, LRPROC02, LRPROC03, LRPROC04
“Silent mode ( -s) recommmended
LRCPUP00 CPU percentage by process 0 3 15 300 -P “proc1”
You can monitor up to 5 processes: LRCPUP00, LRCPUP01, LRCPUP02, LRCPUP03, LRCPUP04
“Silent mode ( -s) recommmended
LRPRCFS0 Check available space percentage of one filesystem 0 70 90 3600 -F “filesystem”
You can monitor up to 5 filesystems: LRPRCFS0, LRPRCFS1, LRPRCFS2, LRPRCFS3, LRPRCFS4
Silent mode ( -s) recommmended
LRMEMP00 % Memory used by process 0 3 15 300 -P “proc1”
You can monitor up to 5 processes: LRMEMP00, LRMEMP01, LRMEMP02, LRMEMP03, LRMEMP04
“Silent mode ( -s) recommmended
LRKBSI00 KB/s IN (incoming) by net interface 0 100 1000 300 -L “interface_name”
You can monitor up to 5 interfaces: LRKBSI00, LRKBSI01, LRKBSI02, LRKBSI03, LRKBSI04
“Silent mode ( -s) recommmended
LRKBSO00 KB/s OUT by net interface 0 100 1000 300 -L “interface_name”
You can monitor up to 5 interfaces: LRKBSO00, LRKBSO01, LRKBSO02, LRKBSO03, LRKBSO04
“Silent mode ( -s) recommmended
LRFMBFS0 Free MB on filesystem 1 100 10 3600 -F “filesystem”
You can monitor up to 5 filesystems: LRFMBFS0, LRFMBFS1, LRFMBFS2, LRFMBFS3, LRFMBFS4
“Silent mode ( -s) recommmended
LRNUMPRC Total number of processes 0 Administrator Administrator 600 Silent mode ( -s) recommmended
LRNUMCPU Number of system processors 1 Administrator Administrator 604800 Silent mode ( -s) recommmended
LRINTEMP Internal system temperature 0 60 80 600 Silent mode ( -s) recommmended
LRCUST00 Execution of command defined by user 0 X Y T s -L “command to launch”
You can build up to 5 events: LRCUST00, LRCUST01, LRCUST02, LRCUST03, LRCUST04
“Silent mode ( -s) recommmended

Information Events

Info events retieve general data about instance, usually this data doesn't change over time. This kind of events have no severity, simply provides instance details.

EVENT DESCRIPTION tseconds Observations
LRINFNAM Host Name 86400 (1 day) Name of the host
LRINFOSK Operating System version 86400 (1 day) Kernel information
LRINFMCH Hardware information 86400 (1 day) Remote hardware info
LRINFMEM Memory 86400 (1 day) Physic memory detected
LRINFCPU Processors information 86400 (1 day) CPU models
LRINFNET Network devices 86400 (1 day) -
LRINFFSM Filesystems 86400 (1 day) -
LRINFTOP First lines of top command 86400 (1 day) You can see more active processes
LRINFUSR Users information 86400 (1 day) It shows you up to 40 system users

Linux via SSH agent events

LRUPTIME

System uptime (time since last reboot/restart) in seconds.

Return values:

VALUE MEANING
-1 Error
X Number of seconds

Recommended parameters:

Comparison type Inverse. The lower value the higher severity (-c 1)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 60 - Consult your Linux administrator
Alert threshold 60 - Consult your Linux administrator

Parameter setting example:

LRUPTIME = -t 300 -c 1 -w 60 -a 60 -T "Linux uptime"

Comment: An easy read format will be returned in the associated text: Days[X] Hours[Y] Mins[Z].
This event use /proc/uptime kernel file. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRPRCCPU

Returns the percentage of CPU used during the last monitoring second.

Return values:

VALUE MEANING
-1 Error
0 - 100 % CPU used

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 90 - depends on system load
Alert threshold 95 - depends on system load

Parameter setting example:

LRPRCCPU = -t 300 -c 0 -w 90 -a 95 -T "CPU usage"

Comment: You can use this event to know if system is overloaded. It is useful to make capacity plannins.
This event use “top” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRPRCMEM

Returns memory usage percentage.

Return values:

VALUE MEANING
-1 Error
0 - 100 % memory usage

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 70 - depends on system load
Alert threshold 90 - depends on system load

Parameter setting example:

LRPRCMEM = -t 600 -c 0 -w 70 -a 90 -T "Memory usage"

Comment: You can use this event to know how a process or group of precessesare consuming system memory, you also can use this values to make capacity planning reports
This event use /proc/meminfo kernel file. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRPRCSWP

Returns swapping files and devices usage percentage.

Return values:

VALUE MEANING
-1 Error
0 - 100 % swap usage

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 50 - depends on system load
Alert threshold 80 - depends on system load

Parameter setting example:

LRPRCSWP = -t 600 -c 0 -w 50 -a 80 -T "Swap usage"

Comment: You can use this event to know how swap memory is used, you also can use this values to make capacity planning reports
This event use /proc/meminfo kernel file. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRPRDWN0

Check if a process is running or not.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-P -P “process_name” - monitoring target process. Yes

Return values:

VALUE MEANING
-1 Error
0 Process is not running
1 Process is running

Recommended parameters:

Comparison type Inverse. The lower value the higher severity (-c 1)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 0
Alert threshold 0

Parameter setting example:

LRPRDWN0 = -t 300 -c 0 -w 1 -a 1 -P "gnome-terminal" - T "Execution state"

Comment: This event use “ps” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.
You can monitor up to 5 processes: LRPRDWN0, LRPRDWN1, LRPRDWN2, LRPRDWN3 and LRPRDWN4, with different extra parameters.

LRPRCFS0

Chek if a filesystem is used more than a percentage defined by user.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-F -F “fs1” - Monitoring target filesystem. Yes

Return values:

VALUE MEANING
-1 Error
0 - 100 % used space on filesystem

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 70
Alert threshold 90

Parameter setting example:

LRPRCFS0 = -t 3600 -c 0 -w 70 -a 90 -T "Filesystem used percentage" -F "/"

Comment: This event use “df” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.
You can monitor up to 5 filesystems: LRPRCFS0, LRPRCFS1, LRPRCFS2, LRPRCFS3 and LRPRCFS4, with different extra parameters.

LRMEMP00

This event compute the memory consumed by a process.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-P -P “proc1” - name of the process to monitor. Yes

Return values:

VALUE MEANING
-1 Error
X Memory usage percentage

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 3
Alert threshold 8

Parameter setting example:

LRMEMP00 = -t 300 -c 0 -w 3 -a 5 -P "osm_master_agent" - T "master agent memory"

Comment: This event use “ps” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.
You can monitor up to 5 processes: LRMEMP00, LRMEMP01, LRMEMP02, LRMEMP03 and LRMEMP04.

LRNUMPRC

Returns the number of processes running on the Linux system.

Return values:

VALUE MEANING
-1 Error
X number of running processes

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold Consult your Linux administrator
Alert threshold Consult your Linux administrator

Parameter setting example:

LRNUMPRC = -t 300 -c 0 -w 3000 -a 5000 -T "processes running"

Comment: This event use “ps” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRNUMCPU

Returns number of detected CPUs on the system.

Return values:

VALUE MEANING
-1 Error
X CPUs detected

Recommended parameters:

Comparison type Inverse. The lower value the higher severity (-c 1)
Monitoring interval 1 week - 3 months
Warning threshold architecture dependent - consult your linux administrator
Alert threshold architecture dependent - consult your linux administrator

Parameter setting example:

LRNUMCPU = -t 2592000 -c 1 -w 1 -a 1 -T "# CPUs"

Comment: This event use “grep” and “wc” system commands and the ”/proc/cpuinfo” linux kernel file. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRINTEMP

This event returns system internal temperature degrees.

Return values:

VALUE MEANING
-1 Error
X temperature degrees

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds - 1 hour
Warning threshold 60
Alert threshold 80

Parameter setting example:

LRINTEMP = -t 3600 -c 0 -w 40 -a 50 -T "Temperature"

Comment: This event uses /proc/acpi/thermal_zone/THM/temperature linux kernel information file. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.

LRPROC00

This event counts number of instances of a process, number of simultaneous executions of a program.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-P -P “proc1” - Process name to monitor. Yes

Return values:

VALUE MEANING
-1 Error
X Process instances number

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold X - dependent value, consult your linux administrator
Alert threshold Y - dependent value, consult your linux administrator

Parameter setting example:

LRPROC00 = -t 300 -c 0 -w 2 -a 2 -P "mysqld" - T "Instances of MySQL server"

Comment: Useful both as a process need not run more than N times, like when if less than N instances may fail This is achieved by changing the type of comparison.
You can monitor up to 5 processes: LRPROC00, LRPROC01, LRPROC02, LRPROC03 and LRPROC04.

LRCPUP00

This event computes cpu consumption percentage of a process.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-P -P “proc1” - Process name to monitor. Yes

Return values:

VALUE MEANING
-1 Error
X CPU consumption percentage

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 3
Alert threshold 15

Parameter setting example:

LRCPUP00 = -t 300 -c 0 -w 3 -a 5 -P "osm_master_agent" - T "Master agent CPU"

Comment: This event uses “ps” system command
You can monitor up to 5 processes: LRCPUP00, LRCPUP01, LRCPUP02, LRCPUP03 and LRCPUP04.

LRKBSI00

LRKBSI00 event returns the number of kilobytes per second incoming by network interface. \ \ The return value is the average downloaded KB/s download for that interface in the monitoring interval.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-L -L “interface_name” - Interface name to monitor (default eth0). No

Return values:

VALUE MEANING
-1 Error
X KB/s incoming

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 100
Alert threshold 1000

Parameter setting example:

LRKBSI00 = -t 300 -c 0 -w 100 -a 1000 -L "wlan0" - T "incoming speed wlan0"

Comment: This event uses ”/proc/net/dev” kernel linux file
If, for example, the eth0 interface has been downloaded for one minute at 300 KB / s and the monitoring interval is 10 minutes, the return value is 30 KB / s, and the average is performed over the monitoring interval ; take this into account in applying the thresholds for warning and alarm
You can monitor up to 5 interfaces: LRKBSI00, LRKBSI01, LRKBSI02, LRKBSI03 and LRKBSI04.

LRKBSO00

LRKBSO00 event returns the number of kilobytes per second outgoing by network interface.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-L -L “interface_name” - Interface name to monitor (por defecto eth0). No

Return values:

VALUE MEANING
-1 Error
X KB/s outgoing

Recommended parameters:

Comparison type Direct. The higher value the higher severity (-c 0)
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 100
Alert threshold 1000

Parameter setting example:

LRKBSO00 = -t 300 -c 0 -w 100 -a 1000 -L "wlan0" - T "Outgoing speed wlan0"

Comment: Este evento hace uso del fichero del kernel de Linux”/proc/net/dev”
If, for example, the eth0 interface has been uploaded for one minute at 300 KB / s and the monitoring interval is 10 minutes, the return value is 30 KB / s, and the average is performed over the monitoring interval ; take this into account in applying the thresholds for warning and alarm
You can monitor up to 5 interfaces: LRKBSO00, LRKBSO01, LRKBSO02, LRKBSO03 and LRKBSO04.

LRFMBFS0

This event returns amount of one filesystem free MB of space.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-F -F “fs1” - Filesystem to monitor. Yes

Return values:

VALUE MEANING
-1 Error
X Free MB

Recommended parameters:

Comparison type Inverse. The lower value the higher severity (-c 1))
Monitoring interval 60 seconds – 1 hour –> depends on instance importance
Warning threshold 100
Alert threshold 10

Parameter setting example:

LRFMBFS0 = -t 300 -c 1 -w 100 -a 10 -L "/home" - T "free MB at home"

Comment: This event uses “df” system command. Be careful with changes and feed back us. Anyway this is free software so you can make the appropriate changes to suit your needs.
You can monitor up to 5 filesystems: LRFMBFS0, LRFMBFS1, LRFMBFS2, LRFMBFS3 and LRFMBFS4, with different extra parameters.
The event text will return the amount of free space measured in MB or GB (> 1024 MB), if it is possible, for this filesystem.

LRCUST00

LRCUST00 event runs a user-defined command against the instance in which it is declared. Returns the command output as text associated with the event, and if the output is numerical returns that number as the event value. On failure or empty output -1 is returned. If the command returns a numerical value will return 0 on successful completion and -1 in other case.

Extra parameters:
This event need an extra parameter to work:

PARAMETER MEANING Mandatory
-L -L “command to execute” - command that the user wants to run.
Not allowed: (”) or “rm” command
Yes

Return values:

VALUE MEANING
-1 Error or null output (empty) of command
X Return value in command output

Recommended parameters:

Comparison type Direct or Inverse.
Monitoring interval 15 seconds – 1 month –> depends on event goal
Warning threshold User defined
Alert threshold User defined

Parameter setting example:

LRCUST00 = -t 60 -c 0 -w 1 -a 1 -T "port 80 connections" -L "lsof -i :80 | wc -l"

Comment:

This event is extremely useful and necessary for the monitoring of non-standard system or Linux systems with special features, allowing the user to enter a command line that is executed on the remote system, the output that the command produces will be recovered. \ \ This event does not allow the invocation of the command “rm” (for security). It is not allowed the use of double quotes ( ”) in the command to run (replace by single quotes [']). \ \ You may change, taking care with the changes make to these files, and keeping us informed of your improvements. Anyway Osmius is free software and you can change the code to better fit your needs. \ \ You may declare up to 5 custom events: LRCUST00, LRCUST01, LRCUST02, LRCUST03 and LRCUST04, with various extra parameters.

Linux via SSH agent prerequisites

In order to compile, this agent requires a set of prerequisites, which are generic to compile any Osmius agent, you can see these prerequisites.

LIBSSH2 libraries are needed for the platform where you want to compile the agent. It is also necessary access through SSH to the target system.

LIBSSH2

For Unix-like platforms is easy to find and install this packet.

We have done it manually and the steps are the following:

./configure --with-openssl
make
make check
make install
  • Move “libssh_config.h” file to the directory with all libssh2 includes, by default /usr/local/include/libssh2

For Windows, there are some tricks you should know:

http://curl.haxx.se/mail/lib-2008-04/0132.html
http://osdir.com/ml/network.ssh.libssh2.devel/2008-04/msg00004.html
http://code.google.com/p/cherokee/issues/detail?id=138

SSH

Also you need to access the system via SSH to monitoring. \ \ Make sure you have valid credentials to access via SSH.

Linux via SSH agent makefiles and compilation

  • Make Project Creator (MPC) is used by Osmius, so creating Makefiles is a trivial task. If you want to learn more about MPC and Osmius check out the section of Makefiles on Osmius.
  • In the particular case of Linux via SSH Osmius agent you can easily generate Makefile as follows:

Modify osm_ag_linuxssh.mpc file to set libraries and oincludes paths:

// -*- MPC -*-
// $Id$
project(*Osmius) : aceexe, ace_openssl {
  exename = osm_ag_LINUXSSH
  install = $(OSM_ROOT)/bin
  libout  = $(OSM_ROOT)/lib
  after  += ACE_SSL_lib
  libs   += ACE_SSL

  includes +=/usr/local/include/

  libpaths += /usr/local/lib/
  libs   += ssh2

  Source_Files {
   ./../../cm/osm_cfgmanager.cpp
   ./../../cm/osm_message.cpp
   ./../../cm/osm_reactor.cpp
   ./../../ag/osm_ag_insmanager.cpp
   ./../../ag/osm_ag_msgmanager.cpp
   ./../../ag/osm_agent_basic.cpp
   osm_libssh2_exec.c
   osm_ag_linuxssh.cpp
  }
  Header_Files {
   ./../../cm/osm_cfgmanager.h
   ./../../cm/osm_message.h
   ./../../cm/osm_reactor.h
   ./../../ag/osm_ag_insmanager.h
   ./../../ag/osm_ag_msgmanager.h
   ./../../ag/osm_agent_basic.h
   osm_libssh2_exec.h
   osm_ag_linuxssh.h
  }
}

From the agent directory using console or terminal.

$ACE_ROOT/bin/mpc.pl -type make osm_ag_linuxssh.mpc
  • Now that you have created the Makefile, agent compiling is extremely simple.
make -f Makefile.Osm_Ag_LinuxSsh_Osmius

Binaries are automatically installed in the bin directory of OSM_ROOT base directory.

Running the agent

Linux via SSH agent have the same running features of the other Osmius agents. You can check it out int he section Start and Stop Agents.

To run Linux via SSH agent without Osmius web console:

osm_ag_LINUXSSH -c osm_ag_LINUXSSH.ini -m MASTERAG -p 1950 -d [>> osm_ag_linuxssh.log]1)

Running in standalone mode

Linux via SSH Osmius agent, like the others Osmius agents, allows the execution in standalone mode. This option may be particularly useful when developing a new agent or to perform specific agent tests.

Basically you have to add a new value, called SNDCMD, to Linux via SSH Osmius agent configuration file (osm_ag_LINUXSSH.ini) as shown here.

Then you must run the Linux via SSH Osmius agent setting Master Agent communications port to zero, for example:

osm_ag_LINUXSSH -c osm_ag_LINUXSSH.ini -m 00000000 -p 0 -d

Tests list

Performed test for Linux via SSH Osmius agent.

Date: 11/12/2009
Test Results Comment
Creating an instance with all its events in silent mode OK N/A
Creating an instance with all its events with custom text OK N/A
Creating an instance with all its events but no custom text OK N/A
Declaration of 3 instances with all its events to 5 seconds and keep it
running for 48 hours
- N/A
Declare 2 instances, cause a disconnect and then reconnect OK N/A
Declare 1 instance and test each event OK N/A
Elimination of general parameter and check unbootable OK PORTCM erased
Elimination of instance CONN_INFO and check unbootable OK N/A
1) Optional, to store agent messages in a file
 
en/agentes/linuxssh.txt · Last modified: 2012/12/05 18:15 by osmius
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki