Home | Documentation | Downloads | FAQ | Live demo | Mailing Lists | Screenshots | Subversion |
SisIYA is a system monitoring tool. With SisIYA you can monitor your Linux, UNIX, MacOS X, Windows, UPS, printers, RAID controller, HP ilo2 modules, airports, switches ... systems. The main developement of SisIYA is done on Linux.
The following is the general picture of SisIYA :
- - - - - - - - - - - - - - - - - - - | | | | | ________ | / \ ------------ | | | | | | | DB |--------------------------->| GUI (PHP)| | | | | | | \________/ ------------ | ^ | | | | ________________ | ------------------------------------ / \ | | SisIYA server (sisiyad) | <--------( Server checks ) | ------------------------------------ \________________/ | ^ ^ ^ ^ / | - - - | - - | - - | - - | - - - / - - - - - - - | | | | / ------ ------ ------ ------ / | C1 | | C2 | | C3 | ... | CN | |<--/ checks clients remotely ------ ------ ------ ------ Client systems
The big box is an indication that one can put the sisiyad, DB, server checks and the GUI on a single computer.
SisIYA is composed of a sisiyad daemon, a GUI (web interface) and check scripts or programs. There are two type of checks : Checks (local checks) that run on the client systems and checks that run on a computer, which checks the functionality of the client systems remotely. Both types of checks send their results (messages) to the sisiyad server, which in turn records them in a database. At the moment PostgreSQL and MySQL are supported. The user, usually the system administrator, uses the web interface to view and monitor the status of the systems.
The sisiyad was first written in C, after it was rewritten in C++. There is a JDBC like C++ library called edbc, which separates the database connectivity code from the daemon code. At the momemnt there are two edbc implementations: PostgreSQL and MySQL. The web interface is written in PHP. The Linux/UNIX client checks are written in BASH. All these scripts use the sisiyac a small C program, which has the job of sending the message (or the messages given in file) to the sisiyad server. Checks that perform remote checking are written in BASH, C (for checking HTTP, SMTP, SSH etc.) and Java (for checking DB connections). The Windows checks consist of one C++ program, which runs as Windows service.
Every system which is going to be monitored, has to have client check programs or scripts. Every script checks the system for something and sends a message to the sisiyad server. The result of a check can have one of the four possible status values: Info, OK, Warning and Error. The script basicaly generates a short description of what it had checked and sends this message along with the status code to the sisiyad server. The server on his hand records it in the database. The only thing that the sisiyad server checks is whether the specified system name is in the database and if it is active or not.
There are two groups of check scripts common and special. Scripts that are included in the common group are excuted on every client system. Scripts that are included in the special group are executed on demand. You can use them if you configure them. In order to use the scripts in this group you have to create a directory under "/opt/sisiya_client_checks/systems" directory (The /opt/sisiya_client_checks is the default directory where the files from the sisiya-client package go.) named after your client system name and make a symbolic link to scripts in the special directory. Most of the check scripts have default values. If you would like to change the default values for some of your systems, then create a configuration file, which has the same name as the script, but which ends with .conf and write those values which are apropriate for your particular system. What to write in a .conf file depends on the check script. You will need to copy the lines between the line "### default values" and "### end of the default values" in the systems directory under "script_name.conf" and modify them according to the needs of this particular system.
Checks that are performed on the client systems or the chcecks that are performed from the SisIYA server are run every 5 minutes. This is the minimum recommended value.
The following are scripts located in the /opt/sisiya_client_checks/common directory and are run on every server:
The following are scripts located in the /opt/sisiya_client_checks/special directory and are only run when there is a link to them from the /opt/sisiya_client_checks/systems/$sisiya_hostname directory:
One can always run the above checks from cron with different intervals.
Server checks are used to check various systems and services remotely. Every system or device which is attached on network could be checked for something. The very basic check is the connectivity check, which is actually a very valuable information anyway.
The following are scripts located in the /opt/sisiya_server_checks/ directory and are used to checkt the systems remotely:
### Number of different database system types SISIYACheckDB.dbtypes_count=3 #################################################################### SISIYACheckDB.dbtype0_count=1 SISIYACheckDB.dbtype0_type=postgresql SISIYACheckDB.dbtype0_serviceid_name=serviceid_postgresql SISIYACheckDB.dbtype0_jdbc_driver=org.postgresql.Driver # SISIYACheckDB.dbtype0_name_0=db_name ### optional port. #SISIYACheckDB.dbtype0_port_0=5432 SISIYACheckDB.dbtype0_user_0=db_user_name SISIYACheckDB.dbtype0_password_0=db_password #################################################################### SISIYACheckDB.dbtype1_count=1 SISIYACheckDB.dbtype1_type=oracle SISIYACheckDB.dbtype1_serviceid_name=serviceid_oracle SISIYACheckDB.dbtype1_jdbc_driver=oracle.jdbc.driver.OracleDriver # SISIYACheckDB.dbtype1_jdbc_url_0=jdbc:oracle:thin:@dbserver1.example.org:1521:SID SISIYACheckDB.dbtype1_name_0=db_name SISIYACheckDB.dbtype1_user_0=db_user_name SISIYACheckDB.dbtype1_password_0=db_password #################################################################### SISIYACheckDB.dbtype2_count=2 SISIYACheckDB.dbtype2_type=mysql SISIYACheckDB.dbtype2_serviceid_name=serviceid_mysql SISIYACheckDB.dbtype2_jdbc_driver=org.gjt.mm.mysql.Driver # SISIYACheckDB.dbtype2_name_0=db_name SISIYACheckDB.dbtype2_user_0=db_user_name SISIYACheckDB.dbtype2_password_0=db_password # SISIYACheckDB.dbtype2_name_1=db_name ### the optional port. Use this if the DB server is running on non default port SISIYACheckDB.dbtype2_port_1=13306 SISIYACheckDB.dbtype2_user_1=db_user_name SISIYACheckDB.dbtype2_password_1=db_password ####################################################################