在Linux系統中,監控和告警backlog(新連接隊列的長度限制)可以通過多種方法和工具來實現。以下是一些常見的方法和工具:
netstat
和 ss
命令netstat
和 ss
命令可以用來查看當前backlog的使用情況。例如:
netstat -s
:顯示各種協議的狀態統計信息,包括TCP連接數。ss -tnlp
:顯示當前TCP連接的詳細信息,包括backlog隊列長度。可以編寫腳本定期檢查backlog隊列的長度,并在超過閾值時發送告警郵件。例如,以下腳本可以監控 /var/log/
目錄的大小,并在超過5GB時發送郵件告警:
#!/usr/bin/env bash
dir="/var/log/"
pack="/root/"
dir_G=$(du -sh ${dir}|cut -d'/' -f1|grep "G")
now_time=$(date)
if [[ ${dir_G} =~ "G" ]]; then
local number=$(echo "${dir_G}"|awk -F'G''{print $1}')
local number=$(printf "%.0f"$number)
local filename=$(date +%Y%m%d%H%M)
if [ "${number}" -ge "5" ]; then
tar -czf ${pack}${filename}.log.tar.gz ${dir} 2>/dev/null
send_warning "請注意,當前【${dir}】目錄占用已達到【${dir_G}】,已將日志文件打包至【${pack}】目錄下""告警時間:${now_time}"
fi
fi
function send_warning() {
local message="$1"
echo "$message" | mail -s "Backlog Alert" admin@example.com
}
Prometheus 是一個開源的監控和告警工具,可以與 Alertmanager 配合使用來實現復雜的告警管理。Alertmanager 負責處理來自 Prometheus 的告警,提供告警去重、分組、路由和通知等功能。
# 安裝 Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
tar xvfz prometheus-2.30.3.linux-amd64.tar.gz
cd prometheus-2.30.3.linux-amd64
# 安裝 Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
tar xvfz alertmanager-0.23.0.linux-amd64.tar.gz
cd alertmanager-0.23.0.linux-amd64
# 配置 Prometheus 和 Alertmanager
# 編輯 prometheus.yml 和 alertmanager.yml 文件,配置告警規則、接收器等。
在 Prometheus 的配置文件 prometheus.yml
中添加告警規則:
groups:
- name: example
rules:
- alert: HighBacklog
expr: backlog_queue_length > 1000
for: 1m
labels:
severity: warning
annotations:
summary: "High backlog detected"
description: "The backlog queue length has exceeded the threshold."
./prometheus --config.file=prometheus.yml
./alertmanager --config.file=alertmanager.yml
Categraf 是一個數據采集工具,可以通過其 exec 插件來監控系統用戶及密碼有效期,并發送告警。
# 安裝 Categraf
wget https://github.com/cybozu-go/categraf/releases/download/v1.8.0/categraf-1.8.0.linux-amd64.tar.gz
tar xvfz categraf-1.8.0.linux-amd64.tar.gz
cd categraf-1.8.0.linux-amd64
# 配置 exec 插件
# 編輯 exec.toml 文件,定義要執行的腳本和監控間隔。
創建 check_password_expiry.sh
腳本:
#!/bin/bash
users=("app" "root" "weihu" "mysql" "nginx")
for user in "${users[@]}" do
export LANG=en_US.UTF-8
EXPIRY_DATE_RAW=$(chage -l $user | grep "Password expires")
EXPIRY_DATE=$(echo "$EXPIRY_DATE_RAW" | awk -F: '{print $2}' | awk '{$1=$1};1')
if [[ "$EXPIRY_DATE" =~ ^(never|從不)$ ]]; then
EXPIRY_DATE_TS=99999
else
EXPIRY_DATE_TS=$(date --date="$EXPIRY_DATE" +%s 2>/dev/null)
fi
TODAY_TS=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_DATE_TS - TODAY_TS) / 86400 ))
echo "password_expiry,account=$user,password_expires_time=$EXPIRY_DATE_FORMATTED"
done
./categraf --config.file=exec.toml
可以通過系統日志和命令來確認告警信息。
/var/log/messages
、/var/log/syslog
、/var/log/dmesg
等,包含系統的各種運行時消息和錯誤。通過以上方法和工具,可以有效地監控和告警 Linux 系統中的 backlog 情況,確保系統的穩定性和可靠性。