gau1991
10 years ago
3 changed files with 292 additions and 7 deletions
@ -0,0 +1,255 @@ |
|||
<?php |
|||
$conf['datasources']['localhost'] = array( |
|||
'host' => '{{host}}', |
|||
'port' => '{{port}}', |
|||
'db' => 'slow_query_log', |
|||
'user' => '{{user}}', |
|||
'password' => '{{password}}', |
|||
'tables' => array( |
|||
'global_query_review' => 'fact', |
|||
'global_query_review_history' => 'dimension' |
|||
), |
|||
'source_type' => 'slow_query_log' |
|||
); |
|||
|
|||
$conf['default_report_action'] = 'report'; |
|||
|
|||
$conf['reviewers'] = array( 'dba1','dba2'); |
|||
$conf['review_types'] = array( 'good', 'bad', 'ticket-created', 'needs-fix', 'fixed', 'needs-analysis', 'review-again'); |
|||
|
|||
$conf['history_defaults'] = array( |
|||
'output' => 'table', |
|||
'fact-group' => 'date', |
|||
'fact-order' => 'date DESC', |
|||
'fact-limit' => '90', |
|||
'dimension-ts_min_start' => date("Y-m-d H:i:s", strtotime( '-90 day')), |
|||
'dimension-ts_min_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array('date', 'index_ratio','query_time_avg','rows_sent_avg','ts_cnt','Query_time_sum','Lock_time_sum','Rows_sent_sum','Rows_examined_sum','Tmp_table_sum','Filesort_sum','Full_scan_sum') |
|||
); |
|||
|
|||
$conf['report_defaults'] = array( |
|||
'fact-group' => 'checksum', |
|||
'fact-order' => 'Query_time_sum DESC', |
|||
'fact-limit' => '20', |
|||
'dimension-ts_min_start' => date("Y-m-d H:i:s", strtotime( '-1 day')), |
|||
'dimension-ts_min_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array('checksum','snippet', 'index_ratio','query_time_avg','rows_sent_avg','ts_cnt','Query_time_sum','Lock_time_sum','Rows_sent_sum','Rows_examined_sum','Tmp_table_sum','Filesort_sum','Full_scan_sum'), |
|||
'dimension-pivot-hostname_max' => null |
|||
); |
|||
|
|||
$conf['graph_defaults'] = array( |
|||
'fact-group' => 'minute_ts', |
|||
'fact-order' => 'minute_ts', |
|||
'fact-limit' => '', |
|||
'dimension-ts_min_start' => date("Y-m-d H:i:s", strtotime( '-7 day')), |
|||
'dimension-ts_min_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array('minute_ts'), |
|||
'plot_field' => 'Query_time_sum', |
|||
); |
|||
|
|||
$conf['report_defaults']['performance_schema'] = array( |
|||
'fact-order' => 'SUM_TIMER_WAIT DESC', |
|||
'fact-limit' => '20', |
|||
'fact-group' => 'DIGEST', |
|||
'table_fields' => array( 'DIGEST', 'snippet', 'index_ratio', 'COUNT_STAR', 'SUM_TIMER_WAIT', 'SUM_LOCK_TIME','SUM_ROWS_AFFECTED','SUM_ROWS_SENT','SUM_ROWS_EXAMINED','SUM_CREATED_TMP_TABLES','SUM_SORT_SCAN','SUM_NO_INDEX_USED' ) |
|||
); |
|||
|
|||
$conf['history_defaults']['performance_schema'] = array( |
|||
'fact-order' => 'SUM_TIMER_WAIT DESC', |
|||
'fact-limit' => '20', |
|||
'fact-group' => 'DIGEST', |
|||
'table_fields' => array( 'DIGEST', 'index_ratio', 'COUNT_STAR', 'SUM_LOCK_TIME','SUM_ROWS_AFFECTED','SUM_ROWS_SENT','SUM_ROWS_EXAMINED','SUM_CREATED_TMP_TABLES','SUM_SORT_SCAN','SUM_NO_INDEX_USED' ) |
|||
); |
|||
|
|||
$conf['report_defaults']['performance_schema_history'] = array( |
|||
'fact-group' => 'DIGEST', |
|||
'fact-order' => 'SUM_TIMER_WAIT DESC', |
|||
'fact-limit' => '20', |
|||
'dimension-FIRST_SEEN_start' => date("Y-m-d H:i:s", strtotime( '-1 day')), |
|||
'dimension-FIRST_SEEN_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array( 'DIGEST', 'snippet', 'index_ratio', 'COUNT_STAR', 'SUM_LOCK_TIME','SUM_ROWS_AFFECTED','SUM_ROWS_SENT','SUM_ROWS_EXAMINED','SUM_CREATED_TMP_TABLES','SUM_SORT_SCAN','SUM_NO_INDEX_USED' ) |
|||
); |
|||
|
|||
$conf['graph_defaults']['performance_schema_history'] = array( |
|||
'fact-group' => 'minute_ts', |
|||
'fact-order' => 'minute_ts', |
|||
'fact-limit' => '', |
|||
'dimension-FIRST_SEEN_start' => date("Y-m-d H:i:s", strtotime( '-7 day')), |
|||
'dimension-FIRST_SEEN_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array('minute_ts'), |
|||
'plot_field' => 'SUM_TIMER_WAIT', |
|||
'dimension-pivot-hostname_max' => null |
|||
); |
|||
|
|||
$conf['history_defaults']['performance_schema_history'] = array( |
|||
'output' => 'table', |
|||
'fact-group' => 'date', |
|||
'fact-order' => 'date DESC', |
|||
'fact-limit' => '90', |
|||
'dimension-FIRST_SEEN_start' => date("Y-m-d H:i:s", strtotime( '-90 day')), |
|||
'dimension-FIRST_SEEN_end' => date("Y-m-d H:i:s"), |
|||
'table_fields' => array( 'date', 'snippet', 'index_ratio', 'COUNT_STAR', 'SUM_LOCK_TIME','SUM_ROWS_AFFECTED','SUM_ROWS_SENT','SUM_ROWS_EXAMINED','SUM_CREATED_TMP_TABLES','SUM_SORT_SCAN','SUM_NO_INDEX_USED' ) |
|||
); |
|||
$conf['plugins'] = array( |
|||
|
|||
'visual_explain' => '/usr/bin/pt-visual-explain', |
|||
'query_advisor' => '/usr/bin/pt-query-advisor', |
|||
|
|||
'show_create' => true, |
|||
'show_status' => true, |
|||
|
|||
'explain' => function ($sample) { |
|||
$conn = array(); |
|||
|
|||
if (!array_key_exists('hostname_max',$sample) or strlen($sample['hostname_max']) < 5) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
$pos = strpos($sample['hostname_max'], ':'); |
|||
if ($pos === false) |
|||
{ |
|||
$conn['port'] = 3306; |
|||
$conn['host'] = $sample['hostname_max']; |
|||
} |
|||
else |
|||
{ |
|||
$parts = preg_split("/:/", $sample['hostname_max']); |
|||
$conn['host'] = $parts[0]; |
|||
$conn['port'] = $parts[1]; |
|||
} |
|||
|
|||
$conn['db'] = 'mysql'; |
|||
if ($sample['db_max'] != '') |
|||
{ |
|||
$conn['db'] = $sample['db_max']; |
|||
} |
|||
|
|||
$conn['user'] = 'root'; |
|||
$conn['password'] = ''; |
|||
|
|||
return $conn; |
|||
}, |
|||
); |
|||
|
|||
$conf['reports']['slow_query_log'] = array( |
|||
'join' => array ( |
|||
'dimension' => 'USING (`checksum`)' |
|||
), |
|||
'fields' => array( |
|||
'fact' => array( |
|||
'group' => 'group', |
|||
'order' => 'order', |
|||
'having' => 'having', |
|||
'limit' => 'limit', |
|||
'first_seen'=> 'clear|reldate|ge|where', |
|||
'where' => 'raw_where', |
|||
'sample' => 'clear|like|where', |
|||
'checksum' => 'clear|where', |
|||
'reviewed_status' => 'clear|where', |
|||
|
|||
), |
|||
|
|||
'dimension' => array( |
|||
'extra_fields' => 'where', |
|||
'hostname_max' => 'clear|where', |
|||
'ts_min' => 'date_range|reldate|clear|where', |
|||
'pivot-hostname_max' => 'clear|pivot|select', |
|||
'pivot-checksum' => 'clear|pivot|select', |
|||
), |
|||
), |
|||
'custom_fields' => array( |
|||
'checksum' => 'checksum', |
|||
'date' => 'DATE(ts_min)', |
|||
'hour' => 'substring(ts_min,1,13)', |
|||
'hour_ts' => 'round(unix_timestamp(substring(ts_min,1,13)))', |
|||
'minute_ts' => 'round(unix_timestamp(substring(ts_min,1,16)))', |
|||
'minute' => 'substring(ts_min,1,16)', |
|||
'snippet' => 'LEFT(dimension.sample,20)', |
|||
'index_ratio' =>'ROUND(SUM(Rows_examined_sum)/SUM(rows_sent_sum),2)', |
|||
'query_time_avg' => 'SUM(Query_time_sum) / SUM(ts_cnt)', |
|||
'rows_sent_avg' => 'ROUND(SUM(Rows_sent_sum)/SUM(ts_cnt),0)', |
|||
), |
|||
|
|||
'callbacks' => array( |
|||
'table' => array( |
|||
'date' => function ($x) { $type=''; if ( date('N',strtotime($x)) >= 6) { $type = 'weekend'; } return array($x,$type); }, |
|||
'checksum' => function ($x) { return array(dec2hex($x), ''); } |
|||
) |
|||
) |
|||
|
|||
); |
|||
|
|||
$conf['reports']['performance_schema'] = array( |
|||
'fields' => array( |
|||
'fact' => array( |
|||
'order' => 'order', |
|||
'having' => 'having', |
|||
'limit' => 'limit', |
|||
'first_seen' => 'date_range|reldate|clear|where', |
|||
'where' => 'raw_where', |
|||
'DIGEST' => 'clear|where', |
|||
'DIGEST_TEXT' => 'clear|like|where', |
|||
'group' => 'group', |
|||
), |
|||
), |
|||
'custom_fields' => array( |
|||
'snippet' => 'LEFT(fact.DIGEST_TEXT,20)', |
|||
'index_ratio' =>'ROUND(SUM_ROWS_EXAMINED/SUM_ROWS_SENT,2)', |
|||
'rows_sent_avg' => 'ROUND(SUM_ROWS_SENT/COUNT_STAR,0)', |
|||
|
|||
), |
|||
|
|||
'special_field_names' => array( |
|||
'time' => 'FIRST_SEEN', |
|||
'checksum' => 'DIGEST', |
|||
'sample' => 'DIGEST_TEXT', |
|||
'fingerprint' => 'DIGEST_TEXT', |
|||
), |
|||
); |
|||
|
|||
$conf['reports']['performance_schema_history'] = array( |
|||
'join' => array ( |
|||
'dimension' => 'USING (`DIGEST`)' |
|||
), |
|||
'fields' => array( |
|||
'fact' => array( |
|||
'group' => 'group', |
|||
'order' => 'order', |
|||
'having' => 'having', |
|||
'limit' => 'limit', |
|||
'first_seen'=> 'clear|reldate|ge|where', |
|||
'where' => 'raw_where', |
|||
'DIGEST_TEXT' => 'clear|like|where', |
|||
'DIGEST' => 'clear|where', |
|||
'reviewed_status' => 'clear|where', |
|||
|
|||
), |
|||
|
|||
'dimension' => array( |
|||
'extra_fields' => 'where', |
|||
'hostname' => 'clear|where', |
|||
'FIRST_SEEN' => 'date_range|reldate|clear|where', |
|||
'pivot-hostname' => 'clear|pivot|select', |
|||
), |
|||
), |
|||
'custom_fields' => array( |
|||
'date' => 'DATE(fact.FIRST_SEEN)', |
|||
'snippet' => 'LEFT(fact.DIGEST_TEXT,20)', |
|||
'index_ratio' =>'ROUND(SUM_ROWS_EXAMINED/SUM_ROWS_SENT,2)', |
|||
'rows_sent_avg' => 'ROUND(SUM_ROWS_SENT/COUNT_STAR,0)', |
|||
'hour' => 'substring(dimension.FIRST_SEEN,1,13)', |
|||
'hour_ts' => 'round(unix_timestamp(substring(dimension.FIRST_SEEN,1,13)))', |
|||
'minute_ts' => 'round(unix_timestamp(substring(dimension.FIRST_SEEN,1,16)))', |
|||
'minute' => 'substring(dimension.FIRST_SEEN,1,16)', |
|||
), |
|||
|
|||
'special_field_names' => array( |
|||
'time' => 'FIRST_SEEN', |
|||
'checksum' => 'DIGEST', |
|||
'hostname' => 'hostname', |
|||
'sample' => 'DIGEST_TEXT' |
|||
), |
|||
); |
|||
|
|||
?> |
Loading…
Reference in new issue