首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 監控體系設計:OS、MySQL、Tomcat、Apache 多維指標採集與告警策略

     編輯:MySQL 綜合教學

Linux 監控體系設計:OS、MySQL、Tomcat、Apache 多維指標採集與告警策略

從開發轉型運維,首要任務是建立覆蓋作業系統、中間件、資料庫的立體監控體系。本文設計一套基於 Shell/Python 的輕量級監控方案,涵蓋進程存活、資源佔用、業務指標、效能參數、壓力測試基線,為後續接入 Zabbix/Prometheus 打下基礎。

一、核心監控維度與指標

層級組件關鍵指標採集頻率告警閾值
OS進程tomcat、apache、mysqld 存活、PID、CPU/MEM%1 分鐘進程消失立即告警
資源Load Avg (1/5/15)、CPU 閒置%、MEM 可用%、磁碟使用%、Inode%、網卡流量、TCP 連接數1 分鐘Load > CPU核心/2、磁碟 > 75%、MEM < 10%
日誌/var/log/messages、secure、dmesg 關鍵字(OOM、kill、error)實時關鍵字匹配告警
MySQL效能參數見下表「MySQL 核心參數清單」5 分鐘參數偏離基線告警
狀態指標QPS、TPS、InnoDB 緩衝池命中率、慢查詢數、Table Cache 命中、鎖等待、臨時表磁碟化、Binlog Cache、Slave 延遲1 分鐘QPS 突變、命中率 < 95%、Slave 延遲 > 30s
中間件Tomcat執行緒池 (current/max/busy)、堆記憶體 (used/max)、GC 頻率/耗時、請求數/錯誤率、Session 數1 分鐘執行緒 > 80% max、Old GC > 5s、錯誤率 > 1%
Apache/Nginx並發連接、請求 QPS、響應時間 (P99)、帶寬、錯誤碼分布 (4xx/5xx)1 分鐘響應 P99 > 3s、5xx > 0.5%

二、MySQL 核心參數基線清單(必採集)

# InnoDB 核心
innodb_buffer_pool_size          # 物理記憶體 50~80%
innodb_max_dirty_pages_pct       # < 50%
innodb_log_buffer_size           # 32M~64M
innodb_log_file_size             # 512M~1G
innodb_flush_log_at_trx_commit   # 1 (最高安全)
sync_binlog                      # 1
innodb_file_per_table            # ON

# 日誌與複製
log_bin                          # ON
expire_logs_days                 # 7~30
binlog_format                    # ROW / MIXED

# 連接與緩存
max_connections                  # 1000~5000
thread_cache_size                # 50~100
table_open_cache                 # 2000~5000
table_definition_cache           # 2000~5000

# 查詢緩存 (5.7+ 建議關閉)
query_cache_size                 # 0
query_cache_type                 # 0

# 慢查詢
slow_query_log                   # ON
long_query_time                  # 0.05~1
log_queries_not_using_indexes    # ON
min_examined_row_limit           # 100

# 字符集與大小寫
character_set_server             # utf8mb4
lower_case_table_names           # 1 (Linux 建議)

# SQL 模式
sql_mode                         # STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION...

三、採集腳本架構設計

  1. 主腳本:monitor_master.sh,crontab 每分鐘執行,調用各子模組。
  2. 子模組:check_process.sh、collect_os.sh、collect_mysql.sh、collect_tomcat.sh (JMX/Jolokia)、collect_apache.sh (mod_status/server-status)。
  3. 資料輸出:JSON 格式寫入時序庫 (InfluxDB) 或推送到 Pushgateway (Prometheus)。
  4. 告警引擎:規則引擎評估閾值,多級告警(郵件/鉤子/短信/電話),支援抑制與聚合。

四、負載觸發深度採集機制

# 檢測 Load Avg
load1=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
core=$(nproc)
threshold=$(echo "$core / 2" | bc -l)
if (( $(echo "$load1 > $threshold" | bc -l) )); then
  # 進入高頻採集模式:每 10 秒採集一次,持續 5 分鐘
  for i in {1..30}; do
    top -bn1 | head -20 >> /var/log/highload_top_$(date +%s).log
    ps aux --sort=-%cpu | head -11 >> /var/log/highload_ps_$(date +%s).log
    sleep 10
  done
  # 發送告警(含 Top10 進程快照)
fi

五、虛擬機壓力測試基線建立

  • 工具:sysbench (OLTP)、tpcc-mysql。
  • 場景:調整 OS 記憶體 16G,innodb_buffer_pool_size 分別設 2/4/6/8/10/12G,倉庫數 5/10/15/20/50/60/80/100,記錄 TPS 曲線。
  • 產出:容量規劃表,指導生產實例規格選型。

監控即代碼,指標即文檔。從腳本起步,漸進演進至平台化,構建可觀測的基礎設施。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved