| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | <?php/** * @file * Documentation for hooks defined by prod_check. *//** * hook_prod_check_alter() * * You can implement hook_prod_check_alter() in your own module to add * additional checks or modify the core checks. * The hook receives the default functions divided into 7 categories: * *  - settings *  - server *  - performance *  - security *  - modules *  - seo *  - prod_mon *  - perf_data * * 'prod_mon' & 'perf_data' are special categories that will only be used by the * accompanying Production monitor module. * * Your function that implements the actual check must accept 1 string parameter * and return an array using the prod_check_execute_check() function. * * An example implementation (note the pass by reference in the hook!): *//** * Implements hook_prod_check_alter() * @param array reference to an associative array of all available checks */function my_module_prod_check_alter(&$checks) {  // Add custom check to the server category:  //  function_name => title  // Do not use t() for the title!  $checks['server']['functions']['my_module_additional_check'] = 'Additional check title';  // Add custom check for Production Monitor only  $checks['prod_mon']['functions']['my_module_prod_mon_check'] = 'My Production Monitor only check';  // Gather performance data  $checks['perf_data']['functions']['my_module_prod_check_return_data'] = 'Performance logging';  // Add entirely new category.  $checks['my_category'] = array(    'title' => 'Custom category',    'description' => 'Collection of checks I find important.',    'functions' => array(      'my_module_check_stuff' => 'Check stuff',      'my_module_check_more_stuff' => 'Check more stuff',    ),  );}/** * Custom function to check some things. * @param string the caller of the function, defaults to 'internal' but can also *        be 'xmlrpc' or 'nagios' * @return array you _must_ return prod_check_execute_check($check, $caller) as *         per the example below to insure a proper status array is returned. */function my_module_additional_check($caller = 'internal') {  $check = array();  $title = 'My modules settings';  $setting1 = t('Enable debug info');  $setting2 = t('Disable debug info');  $path = 'admin/settings/my-module-settings-page';  if ($caller != 'internal') {    $path = PRODCHECK_BASEURL . $path;  }  $check['my_module_additional_check'] = array(    '#title' => t($title),    '#state' => variable_get('my_module_debug', 1) != 1,    '#severity' => ($caller == 'nagios') ? NAGIOS_STATUS_CRITICAL : PROD_CHECK_REQUIREMENT_ERROR,    '#value_ok'  => $setting2,    '#value_nok'  => $setting1,    '#description_ok'  => prod_check_ok_title($title, $path),    '#description_nok' => t('Your !link settings are set to %setting1, they should be set to %setting2 on a producion environment!',      array(        '!link' => '<em>'.l(t($title), $path, array('attributes' => array('title' => t($title)))).'</em>',        '%setting1' => $setting1,        '%setting2' => $setting2,      )    ),    '#nagios_key' => 'MYCHCK',    '#nagios_type' => 'state',  );  return prod_check_execute_check($check, $caller);}function my_module_check_stuff($caller = 'internal') {  [...]  return prod_check_execute_check($check, $caller);}function my_module_check_more_stuff($caller = 'internal') {  [...]  return prod_check_execute_check($check, $caller);}/** * Custom callback for a prod_mon only check. Note the additional parameter in * the prod_check_execute_check() call! */function my_module_prod_mon_check($caller = 'internal') {  [...]  return prod_check_execute_check($check, $caller, 'prod_mon');}/** * Return performance data to Production Monitor. */function my_module_prod_check_return_data() {  $data = my_module_gather_summary_data();  if (!$data) {    return array(      'my_module' => array (        'title' => 'Performance logging',        'data' => 'No performance data found.',       ),    );  }  return array(    'my_module' => array (      'title' => 'Performance logging',      'data' => array(        'Total number of page accesses' => array($data['total_accesses']),        'Average duration per page' => array($data['ms_avg'], 'ms'),        'Average memory per page' => array($data['mb_avg'], 'MB'),        'Average querycount' => array($data['query_count']),        'Average duration per query' => array($data['ms_query'], 'ms'),      ),    ),  );}/** * hook_prod_check_disabled_modules_whitelist() * * Check for updates for these modules even if they are disabled. Some modules * (f.e. cache backends) are included directly but don't necessarily have the * module enabled in the module list. This list can be extended by other modules * or updated with other commonly used modules that are used in such a way. *//** * Implements hook_prod_check_disabled_modules_whitelist(). */function my_module_prod_check_disabled_modules_whitelist() {  return array('apc', 'memcache', 'varnish');}/** * hook_prod_check_disabled_modules_whitelist_alter() * * Allow other modules to add or delete modules to force check. *//** * Implements hook_prod_check_disabled_modules_whitelist_alter(). */function my_module_prod_check_disabled_modules_whitelist_alter(&$modules) {  // Remove apc module from the whitelist.  if ($pos = array_search('apc', $modules)) {    unset($modules[$pos]);  }}
 |