記一次工作中使用zabbix監控aix db2資料庫的經歷。 記憶要點: 1.使用自定義perl腳本; 2.由於zabbix用戶許可權的原因,無法調用db2用戶獲取資料庫的數據,所以在zabbix配置文件中設置已root用戶啟動 2.然後根據快照中的數據按照zabbix的格式定義鍵值,數據格式,以下麵 ...
記一次工作中使用zabbix監控aix db2資料庫的經歷。
記憶要點:
1.使用自定義perl腳本;
2.由於zabbix用戶許可權的原因,無法調用db2用戶獲取資料庫的數據,所以在zabbix配置文件中設置已root用戶啟動
- 首先,創建腳本,我這裡的名稱為db2stat.pl,腳本許可權為755,確保有可執行許可權
#!/usr/bin/perl -wT use File::Spec; # Set this to path of db2 executable $ENV{'PATH'} = "/opt/IBM/db2/V9.7/bin"; #db2可執行文件的路徑 $dbuser = 'db2inst'; #定義db2資料庫的用戶 # Directory where snapshots are cached. my $SNAPSHOT_DIR = File::Spec->tmpdir(); # Get database name and timeout args my $timeout = shift @ARGV; my $dbname = shift @ARGV; # Untaint if ($dbname =~ /^([-\w.]+)$/) { $dbname = $1; } else { die "Bad dbname argument"; } if ($timeout =~ /^(\d+)$/) { $timeout = $1; } else { die "Bad timeout value"; } # Generate stat file name my $statfile = "$SNAPSHOT_DIR/$dbname.txt"; my $tmpstatfile = "$SNAPSHOT_DIR/$dbname.txt.tmp"; # Regenerate stats if file too old if (! -f $statfile or (time - (stat($statfile))[10]) > $timeout) { # first touch file to prevent another perform in next moment system("/usr/bin/touch $statfile"); system("/usr/bin/su - $dbuser -c 'db2 update monitor switches using bufferpool ON lock ON sort ON statement ON table ON uow ON' >/dev/null 2>$1"); # 開啟db2快照開關 #then generate tmp data system("/usr/bin/su - $dbuser -c 'db2 get snapshot for database on $dbname' >$tmpstatfile"); # 將獲取的快照數據保存到本地 #finally swap files system("/usr/bin/cp -p $tmpstatfile $statfile"); } # Generate regular expressions to match from args while (@ARGV) { my $key = shift(@ARGV); my $value = shift(@ARGV); if (defined $value) { # Add preceding line match push(@RE, qr/\s*\Q$key\E\s*=\s*\Q$value\E\s*/); } else { # Add stat line match push(@RE, qr/\s*\Q$key\E\s*=\s*(.+)\s*/); } } # Try to find value with preceding line matches and stat line match my $idx = 0; open(DATA, "<$statfile"); while (<DATA>) { my $line = $_; if ($line =~ $RE[$idx]) { my $match = $1; # Return the match if all expressions have been matched $idx++; if ($idx == scalar @RE) { print "$match\n"; exit 0; } } # Reset matches if empty line if ($line eq "") { $idx = 0; } }
2.然後根據快照中的數據按照zabbix的格式定義鍵值,數據格式,以下麵為例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# User parameters for DB2 snapshot statistics # Simple statistics UserParameter=db2stat.database_status[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Database status" UserParameter=db2stat.apps_connected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Applications connected currently" UserParameter=db2stat.apps_executing[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Appls. executing in db manager currently" UserParameter=db2stat.locks_held[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Locks held currently" UserParameter=db2stat.deadlocks_detected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Deadlocks detected" UserParameter=db2stat.lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock escalations" UserParameter=db2stat.excl_lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Exclusive lock escalations" UserParameter=db2stat.agts_waiting_on_locks[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Agents currently waiting on locks" UserParameter=db2stat.lock_timeouts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock Timeouts" UserParameter=db2stat.log_space_used[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Log space used by the database (Bytes)" UserParameter=db2stat.package_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache inserts" UserParameter=db2stat.package_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache overflows" UserParameter=db2stat.catalog_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache inserts" UserParameter=db2stat.catalog_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache overflows" UserParameter=db2stat.commit_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Commit statements attempted" UserParameter=db2stat.rollback_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rollback statements attempted" UserParameter=db2stat.dynamic_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Dynamic statements attempted" UserParameter=db2stat.static_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Static statements attempted" UserParameter=db2stat.failed_statement_operations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Failed statement operations" UserParameter=db2stat.select_sql_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Select SQL statements executed" UserParameter=db2stat.xquery_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Xquery statements executed" UserParameter=db2stat.updates_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Update/Insert/Delete statements executed" "db2stat.conf" 56 lines, 5523 characters # User parameters for DB2 snapshot statistics # Simple statistics UserParameter=db2stat.database_status[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Database status" UserParameter=db2stat.apps_connected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Applications connected currently" UserParameter=db2stat.apps_executing[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Appls. executing in db manager currently" UserParameter=db2stat.locks_held[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Locks held currently" UserParameter=db2stat.deadlocks_detected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Deadlocks detected" UserParameter=db2stat.lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock escalations" UserParameter=db2stat.excl_lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Exclusive lock escalations" UserParameter=db2stat.agts_waiting_on_locks[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Agents currently waiting on locks" UserParameter=db2stat.lock_timeouts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock Timeouts" UserParameter=db2stat.log_space_used[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Log space used by the database (Bytes)" UserParameter=db2stat.package_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache inserts" UserParameter=db2stat.package_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache overflows" UserParameter=db2stat.catalog_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache inserts" UserParameter=db2stat.catalog_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache overflows" UserParameter=db2stat.commit_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Commit statements attempted" UserParameter=db2stat.rollback_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rollback statements attempted" UserParameter=db2stat.dynamic_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Dynamic statements attempted" UserParameter=db2stat.static_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Static statements attempted" UserParameter=db2stat.failed_statement_operations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Failed statement operations" # User parameters for DB2 snapshot statistics # Simple statistics UserParameter=db2stat.database_status[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Database status" UserParameter=db2stat.apps_connected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Applications connected currently" UserParameter=db2stat.apps_executing[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Appls. executing in db manager currently" UserParameter=db2stat.locks_held[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Locks held currently" UserParameter=db2stat.deadlocks_detected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Deadlocks detected" UserParameter=db2stat.lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock escalations" UserParameter=db2stat.excl_lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Exclusive lock escalations" UserParameter=db2stat.agts_waiting_on_locks[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Agents currently waiting on locks" UserParameter=db2stat.lock_timeouts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock Timeouts" UserParameter=db2stat.log_space_used[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Log space used by the database (Bytes)" UserParameter=db2stat.package_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache inserts" UserParameter=db2stat.package_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache overflows" UserParameter=db2stat.catalog_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache inserts" UserParameter=db2stat.catalog_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache overflows" UserParameter=db2stat.commit_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Commit statements attempted" UserParameter=db2stat.rollback_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rollback statements attempted" UserParameter=db2stat.dynamic_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Dynamic statements attempted" UserParameter=db2stat.static_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Static statements attempted" UserParameter=db2stat.failed_statement_operations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Failed statement operations" UserParameter=db2stat.select_sql_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Select SQL statements executed" UserParameter=db2stat.xquery_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Xquery statements executed" UserParameter=db2stat.updates_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Update/Insert/Delete statements executed" UserParameter=db2stat.rows_deleted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rows deleted" UserParameter=db2stat.rows_inserted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rows inserted" UserParameter=db2stat.rows_updated[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rows updated" UserParameter=db2stat.rows_selected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rows selected" UserParameter=db2stat.rows_read[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rows read" UserParameter=db2stat.direct_reads[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Direct reads" UserParameter=db2stat.direct_writes[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Direct writes" UserParameter=db2stat.direct_reads_time[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Direct reads elapsed time (ms)" UserParameter=db2stat.direct_writes_time[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Direct write elapsed time (ms)" UserParameter=db2stat.log_space_available[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Log space available to the database (Bytes)" UserParameter=db2stat.lock_wait[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock waits" UserParameter=db2stat.total_sort[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Total sorts" UserParameter=db2stat.sort_overfows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Sort overflows" # File System statistics UserParameter=db2stat.storage_path_free_space[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Storage path free space (bytes)" UserParameter=db2stat.file_system_used_space[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "File system used space (bytes)" UserParameter=db2stat.file_system_total_space[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "File system total space (bytes)" # Memory heap statistics UserParameter=db2stat.package_cache_heap_size[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Node number" "$3" "Memory Pool Type" "Package Cache Heap" "Current size (bytes)" UserParameter=db2stat.catalog_cache_heap_size[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Node number" "$3" "Memory Pool Type" "Catalog Cache Heap" "Current size (bytes)" # Buffer Poll statistics UserParameter=db2stat.buffer_pool_data_logical_reads[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Buffer pool data logical reads" UserParameter=db2stat.buffer_pool_index_logical_reads[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Buffer pool index logical reads" UserParameter=db2stat.buffer_pool_index_physical_reads[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Buffer pool index physical reads" UserParameter=db2stat.buffer_pool_data_physical_reads[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Buffer pool data physical reads"db2監控樣式
# User parameters for DB2 snapshot statistics # Simple statistics UserParameter=db2stat.database_status[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Database status" UserParameter=db2stat.apps_connected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Applications connected currently" UserParameter=db2stat.apps_executing[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Appls. executing in db manager currently" UserParameter=db2stat.locks_held[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Locks held currently" UserParameter=db2stat.deadlocks_detected[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Deadlocks detected" UserParameter=db2stat.lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock escalations" UserParameter=db2stat.excl_lock_escalations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Exclusive lock escalations" UserParameter=db2stat.agts_waiting_on_locks[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Agents currently waiting on locks" UserParameter=db2stat.lock_timeouts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Lock Timeouts" UserParameter=db2stat.log_space_used[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Log space used by the database (Bytes)" UserParameter=db2stat.package_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache inserts" UserParameter=db2stat.package_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Package cache overflows" UserParameter=db2stat.catalog_cache_inserts[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache inserts" UserParameter=db2stat.catalog_cache_overflows[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Catalog cache overflows" UserParameter=db2stat.commit_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Commit statements attempted" UserParameter=db2stat.rollback_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Rollback statements attempted" UserParameter=db2stat.dynamic_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Dynamic statements attempted" UserParameter=db2stat.static_statements_attempted[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Static statements attempted" UserParameter=db2stat.failed_statement_operations[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Failed statement operations" UserParameter=db2stat.select_sql_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2" "Select SQL statements executed" UserParameter=db2stat.xquery_statements_executed[*],/usr/local/zabbix/scripts/db2stat.pl "$1" "$2"