This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
phptsmadmin/application/classes/Model/ACTLOG.php
2012-12-13 13:58:45 +11:00

186 lines
9.3 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
*
* @package PTA
* @subpackage Activity Log
* @category Models
* @author Deon George
* @copyright (c) 2010 phpTSMadmin Development Team
* @license http://phptsmadmin.sf.net/license.html
*/
class Model_ACTLOG extends ORM_TSM {
protected $_table_name = 'ACTLOG';
protected $_primary_key = 'DATE_TIME'; // We need a primary key to detect that the object is loaded.
protected $_sorting = array(
'DATE_TIME'=>'ASC',
);
protected $_display_filters = array(
'DATE_TIME'=>array(
array('ORM_TSM::date',array(':value','d-M H:i')),
),
'MESSAGE'=>array(
array('Model_ACTLOG::strsession',array(':value')),
),
);
private $_msgno_ba_objects = array(
4952=>array('msg'=>'ANE4952I Total number of objects inspected:\s+([0-9,]+).*','id'=>'OBJECT_TOTAL'),
4953=>array('msg'=>'ANE4953I Total number of objects archived:\s+([0-9,]+).*','id'=>'OBJECT_TOTAL'),
4954=>array('msg'=>'ANE4954I Total number of objects backed up:\s+([0-9,]+).*','id'=>'OBJECT_BACKUP'),
4957=>array('msg'=>'ANE4957I Total number of objects deleted:\s+([0-9,]+).*','id'=>'OBJECT_DELETED'),
4958=>array('msg'=>'ANE4958I Total number of objects updated:\s+([0-9,]+).*','id'=>'OBJECT_UDPATE'),
4959=>array('msg'=>'ANE4959I Total number of objects failed:\s+([0-9,]+).*','id'=>'OBJECT_FAILED'),
4960=>array('msg'=>'ANE4960I Total number of objects rebound:\s+([0-9,]+).*','id'=>'OBJECT_REBOUND'),
4970=>array('msg'=>'ANE4970I Total number of objects expired:\s+([0-9,]+).*','id'=>'OBJECT_EXPIRED'),
4982=>array('msg'=>'ANE4982I Total objects deduplicated:\s+([0-9,]+).*','id'=>'OJBECT_DEDUPED'),
);
private $_msgno_ba_bytes = array(
4198=>array('msg'=>'ANE4198I Total bytes after deduplication:\s+([0-9,\.]+) ([KMG]B).*','id'=>'BYTES_DEDUPE_AFTER'),
4961=>array('msg'=>'ANE4961I Total number of bytes transferred:\s+([0-9,\.]+) ([KMG]B).*','id'=>'BYTES_TRANSFER'),
4975=>array('msg'=>'ANE4975I Total number of bytes processed:\s+([0-9,\.]+) ([KMG]B).*','id'=>'BYTES_PROCESS'),
4977=>array('msg'=>'ANE4977I Total number of bytes inspected:\s+([0-9,\.]+) ([KMG]B).*','id'=>'BYTES_INSPECT'),
4984=>array('msg'=>'ANE4984I Total bytes before deduplication:\s+([0-9,\.]+) ([KMG]B).*','id'=>'BYTES_DEDUPE_BEFORE'),
);
private $_msgno_ba_transfer = array(
4963=>array('msg'=>'ANE4963I Data transfer time:\s+([0-9,\.]+).*','id'=>'TRANSFER_SEC'),
4966=>array('msg'=>'ANE4966I Network data transfer rate:\s+([0-9,\.]+).*','id'=>'TRANSFER_RATE'),
4967=>array('msg'=>'ANE4967I Aggregate data transfer rate:\s+([0-9,\.]+).*','id'=>'TRANSFER_AGGR'),
4964=>array('msg'=>'ANE4964I Elapsed processing time:\s+([0-9:]+).*','id'=>'PROCESS_TIME'),
);
private $_msgno_ba_reduction = array(
4968=>array('msg'=>'ANE4968I Objects compressed by:\s+([0-9,\.\-]+).*','id'=>'COMPRESS'),
4976=>array('msg'=>'ANE4976I Total data reduction ratio:\s+([0-9,\.]+).*','id'=>'REDUCTION'),
4981=>array('msg'=>'ANE4981I Deduplication reduction:\s+([0-9,\.]+).*','id'=>'DEDUPE'),
);
private $_msgno_admin = array(
162=>array('msg'=>'ANR0162W Supplemental database diagnostic information: .*','id'=>''),
405=>array('msg'=>'ANR0405I Session [0-9]+ ended for administrator ([0-9a-zA-Z]+) \(.*\)\..*','id'=>''),
407=>array('msg'=>'ANR0407I Session [0-9]+ started for administrator ([0-9a-zA-Z]+) \(.*\) \(.*\)\..*','id'=>''),
516=>array('msg'=>'ANR0516E SQL processing for statement .* failed.','id'=>''),
1701=>array('msg'=>'ANR1701E QUERY REPLNODE: No matching servers defined.','id'=>''),
1999=>array('msg'=>'ANR1999I QUERY REPLRULE completed successfully','id'=>''),
2017=>array('msg'=>'ANR2017I Administrator ADMIN issued command: (.*)','id'=>''),
2034=>array('msg'=>'ANR2034E SELECT: No match found using this criteria.','id'=>''),
2906=>array('msg'=>'ANR2906E Unexpected SQL literal token - .*.','id'=>''),
2939=>array('msg'=>'ANR2939E The reference .* contains an unknown SQL table name.','id'=>''),
2940=>array('msg'=>'ANR2940E The command \'.*\ contains an unknown SQL column name.','id'=>''),
);
private $_msgno_expire = array(
165=>array('msg'=>'ANR0165I Inventory file expiration started processing for node (.*), filespace (.*), copygroup (.*) and object type (.*).','id'=>''),
166=>array('msg'=>'ANR0166I Inventory file expiration finished processing for node (.*), filespace (.*), copygroup (.*) and object type (.*) with processing statistics: examined ([0-9]+), deleted ([0-9]+), retrying ([0-9]+), and failed ([0-9]+).','id'=>''),
167=>array('msg'=>'ANR0167I Inventory file expiration process [0-9]+ processed for .* minutes.','id'=>''),
812=>array('msg'=>'ANR0812I Inventory file expiration process [0-9]+ completed: processed .* nodes, examined .* objects, deleting .* backup objects, .* archive objects, .* DB backup volumes, and .* recovery plan files. .* objects were retried and .* errors were encountered','id'=>''),
987=>array('msg'=>'ANR0987I Process [0-9]+ for EXPIRE INVENTORY running in the BACKGROUND processed .* items with a completion state of .* at .*','id'=>''),
);
private $_msgno_volume = array(
515=>array('msg'=>'ANR0515I Process [0-9]+ closed volume .*','id'=>''),
8325=>array('msg'=>'ANR8325I Dismounting volume .* - .* minute mount retention expired','id'=>''),
8336=>array('msg'=>'ANR8336I Verifying label of .* volume .* in drive .* \(.*\)','id'=>''),
8340=>array('msg'=>'ANR8340I .* volume .* mounted.','id'=>''),
8341=>array('msg'=>'ANR8341I End-of-volume reached for .* volume .*','id'=>''),
8468=>array('msg'=>'ANR8468I .* volume .* dismounted from drive .* \(.*\) in library .*.','id'=>''),
8493=>array('msg'=>'ANR8493I .* volume .* mounted in drive .* \(.*\) in library .*.','id'=>''),
);
private $_msgno_session = array(
397=>array('msg'=>'ANR0397I Session [0-9]+ for node .* has begun a proxy session for node .*.','id'=>''),
399=>array('msg'=>'ANR0399I Session [0-9]+ for node .* has ended a proxy session for node .*.','id'=>''),
403=>array('msg'=>'ANR0403I Session [0-9]+ ended for node .* \(.*\)','id'=>''),
406=>array('msg'=>'ANR0406I Session [0-9]+ started for node .* \(.*\) \(.*\)','id'=>''),
408=>array('msg'=>'ANR0408I Session [0-9]+ started for server .* \(.*\) \(.*\) for configuration management','id'=>''),
409=>array('msg'=>'ANR0409I Session [0-9]+ ended for server .* \(.*\).','id'=>''),
482=>array('msg'=>'ANR0482W Session [0-9]+ for node .* \(.*\) terminated - idle for more than .* minutes.','id'=>''),
511=>array('msg'=>'ANR0511I Session [0-9]+ opened output volume .*','id'=>''),
514=>array('msg'=>'ANR0514I Session [0-9]+ closed volume .*','id'=>''),
568=>array('msg'=>'ANR0568W Session [0-9]+ for admin .* terminated - connection with client severed.','id'=>''),
2507=>array('msg'=>'ANR2507I Schedule .* for domain .* started at .* for node .* completed successfully at .*','id'=>''),
3157=>array('msg'=>'ANR3157I Configuration refresh started for managed server .*','id'=>''),
8592=>array('msg'=>'ANR8592I Session [0-9]+ connection is using SSL version TLSV11, cipher specification AES-128 certificate serial number ([0-9:]+)','id'=>''),
8595=>array('msg'=>'ANR8595I Session to address .* is using SSL version TLSV11, cipher specification AES-128, certificate serial number ([0-9:]+).','id'=>''),
);
private $_msgno_debug = array(
1257=>array('msg'=>'ANR1257W Storage pool backup skipping damaged file on .*','id'=>''),
9999=>array('msg'=>'','id'=>''),
);
private function _bamsgs() {
return $this->_msgno_ba_objects+$this->_msgno_ba_bytes+$this->_msgno_ba_transfer+$this->_msgno_ba_reduction;
}
private function _svrmsgs() {
return $this->_msgno_admin+$this->_msgno_expire+$this->_msgno_session+$this->_msgno_volume+$this->_msgno_debug;
}
/**
* Return the timestamp of the record in the ACTLOG
*/
public function FirstRec() {
return DB::query(Database::SELECT,'SELECT min(DATE_TIME) as DATE_TIME from ACTLOG')->cached(86400)->execute()->get('DATE_TIME');
}
/**
* Where class to exclude NODE backup messages
*/
public function ExcludeBA() {
return $this->where('MSGNO','NOT IN',array_keys($this->_bamsgs()));
}
public function ExcludeSERVER() {
return $this->where('MSGNO','NOT IN',array_keys($this->_svrmsgs()));
}
/**
* Extract data from our BA Client messages
*/
public function msgtrim() {
$x = $this->_bamsgs();
if (! array_key_exists($this->MSGNO,$x))
return array();
// @todo Shouldnt need this
if (empty($x[$this->MSGNO]['id']))
throw new Kohana_Exception('Message has no ID :id [:msg]',array(':id'=>$this->MSGNO,':msg'=>$this->MESSAGE));
$y = preg_replace('/'.$x[$this->MSGNO]['msg'].'/',"$1$2",$this->MESSAGE);
$m = array();
// Do we have units we need to convert?
if (preg_match('/^(.*)([KMG]B)$/',$y,$m)) {
// Our number is in m[1]
$y = $m[1];
// Our unit is in m[2], convert to bytes
switch ($m[2]) {
case 'GB': $y *= 1024;
case 'MB': $y *= 1024;
case 'KB': $y *= 1024;
}
}
// Safety check to make sure we extracted what we wanted.
if ($y == $this->MESSAGE)
throw new Kohana_Exception('Unable to extra data from message :id [:msg]',array(':id'=>$this->MSGNO,':msg'=>$this->MESSAGE));
return array($x[$this->MSGNO]['id']=>str_replace(',','',$y));
}
/**
* Return this ACTIVITY LOG start time in seconds since epoch
*/
public function start() {
return ORM_TSM::date($this->DATE_TIME,'U');
}
public static function strsession($value) {
return preg_replace('/\s+\(SESSION: .*\)\s*$/','',$value);
}
}
?>