首页
提效神器
常用运维脚本汇总
电子书阅读
推荐
电子书阅读
事物管理
Search
1
安装docker时报错container-selinux >= 2:2.74
185 阅读
2
rsync命令(可替代rm删除巨量文件)
147 阅读
3
docker 镜像加速器配置,daemon.json文件详解
138 阅读
4
kubernetes集群各组件安装过程汇总
107 阅读
5
使用国内镜像地址拉取k8s安装需要的images
97 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
登录
/
注册
Search
标签搜索
命令
nginx
zabbix
Mingrui
累计撰写
99
篇文章
累计收到
8
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
页面
提效神器
常用运维脚本汇总
电子书阅读
推荐
电子书阅读
事物管理
搜索到
99
篇与
的结果
2025-09-11
分布式处理脚本
#!/bin/bash # 分布式日志处理脚本 SERVERS=("server1" "server2" "server3") LOG_FILE="/var/log/nginx/access.log" distribute_process() { local total_lines=$(wc -l < "$LOG_FILE") local lines_per_server=$((total_lines / ${#SERVERS[@]})) echo "总行数: $total_lines, 每台服务器处理: $lines_per_server 行" for i in "${!SERVERS[@]}"; do local server="${SERVERS[$i]}" local start_line=$((i * lines_per_server + 1)) local end_line=$(((i + 1) * lines_per_server)) echo "分发给 $server: 行 $start_line - $end_line" # 提取对应行数并发送到远程服务器处理 sed -n "${start_line},${end_line}p" "$LOG_FILE" | \ ssh "$server" " awk '{ip_count[\$1]++} END { for (ip in ip_count) print ip, ip_count[ip] }' > /tmp/result_$i.txt " & done wait # 收集结果 echo "收集结果..." for i in "${!SERVERS[@]}"; do scp "${SERVERS[$i]}:/tmp/result_$i.txt" "result_$i.txt" done # 合并最终结果 awk '{sum[$1] += $2} END { for (ip in sum) print ip, sum[ip] }' result_*.txt | sort -k2 -nr > distributed_result.txt rm result_*.txt }
2025年09月11日
4 阅读
0 评论
0 点赞
2025-09-11
性能问题排查脚本
#!/bin/bash # 性能问题排查脚本 echo "=== 性能分析报告 ===" # 慢请求分析 (假设nginx记录了响应时间) echo "响应时间 > 2秒的请求:" awk '$NF > 2.0 {print $1, $7, $NF"s"}' /var/log/nginx/access.log | \ sort -k3 -nr | head -20 # 大文件传输分析 echo "传输量 > 10MB的请求:" awk '$10 > 10485760 {printf "%s %s %.2fMB\n", $1, $7, $10/1024/1024}' \ /var/log/nginx/access.log | sort -k3 -nr # 并发分析 echo "每分钟请求数统计:" awk '{print substr($4, 2, 16)}' /var/log/nginx/access.log | \ sort | uniq -c | \ awk '{print $2, $1}' | \ sort -k1
2025年09月11日
4 阅读
0 评论
0 点赞
2025-09-11
实时日志监控告警脚本
#!/bin/bash # 实时日志监控告警脚本 LOG_FILE="/var/log/nginx/access.log" ERROR_THRESHOLD=50 # 每分钟错误数阈值 ALERT_EMAIL="admin@example.com" monitor_realtime() { echo "开始实时监控 $LOG_FILE..." # 创建临时文件记录状态 TEMP_DIR="/tmp/log_monitor" mkdir -p "$TEMP_DIR" tail -F "$LOG_FILE" | while read line; do # 提取时间戳 (分钟级别) timestamp=$(echo "$line" | awk '{print substr($4, 2, 16)}') current_minute=$(date '+%d/%b/%Y:%H:%M') # 检查是否是错误请求 if echo "$line" | grep -qE " (4[0-9]{2}|5[0-9]{2}) "; then error_file="$TEMP_DIR/errors_$current_minute" echo "$line" >> "$error_file" # 统计当前分钟的错误数 error_count=$(wc -l < "$error_file" 2>/dev/null || echo 0) if [ "$error_count" -ge "$ERROR_THRESHOLD" ]; then send_alert "$current_minute" "$error_count" "$error_file" # 重置计数器,避免重复告警 > "$error_file" fi fi # 清理旧的临时文件 find "$TEMP_DIR" -name "errors_*" -mmin +5 -delete done } send_alert() { local time_period=$1 local error_count=$2 local error_file=$3 echo "🚨 告警: $time_period 发生 $error_count 个错误请求" # 分析错误类型 echo "错误分析:" awk '{print $9, $1, $7}' "$error_file" | \ sort | uniq -c | sort -nr | head -5 | \ awk '{printf "状态码%s: %d次, IP:%s, URL:%s\n", $2, $1, $3, $4}' # 发送邮件告警 (需要配置sendmail) if command -v mail >/dev/null; then { echo "时间: $time_period" echo "错误数量: $error_count" echo "详细信息:" head -10 "$error_file" } | mail -s "网站错误告警" "$ALERT_EMAIL" fi } # 启动监控 monitor_realtime
2025年09月11日
7 阅读
0 评论
0 点赞
2025-09-11
多维度日志日志分析脚本
#!/bin/bash # 多维度nginx日志分析 LOG_FILE="/var/log/nginx/access.log" multi_dimension_analysis() { echo "=== 多维度分析报告 ===" # 按小时统计访问量 echo "24小时访问量分布:" awk '{ time = substr($4, 14, 2) hour_count[time]++ } END { for (h=0; h<24; h++) { printf "%02d:00-%02d:59 %6d 次", h, h, hour_count[sprintf("%02d", h)]+0 # 简单的图形化显示 bars = int((hour_count[sprintf("%02d", h)]+0) / 100) for (i=0; i<bars; i++) printf "█" printf "\n" } }' "$LOG_FILE" # IP地理位置分析 (需要geoip数据库) echo "访问来源分析:" awk '{print $1}' "$LOG_FILE" | \ sort | uniq -c | sort -nr | head -20 | \ while read count ip; do # 这里可以集成GeoIP查询 printf "%-15s %8d 次\n" "$ip" "$count" done # 用户代理分析 echo "浏览器/爬虫统计:" awk -F'"' '{ ua = $6 if (ua ~ /bot|spider|crawler/i) type = "爬虫" else if (ua ~ /Mobile|Android|iPhone/i) type = "移动端" else if (ua ~ /Chrome|Firefox|Safari/i) type = "桌面浏览器" else type = "其他" ua_type[type]++ } END { for (type in ua_type) { printf "%-12s %8d 次\n", type, ua_type[type] } }' "$LOG_FILE" # 响应码时间分布 echo "响应码时间分布:" awk '{ hour = substr($4, 14, 2) status = $9 status_hour[status"_"hour]++ total_hour[hour]++ } END { for (status in {"200":1, "404":1, "500":1}) { printf "\n%s状态码分布:\n", status for (h=0; h<24; h++) { key = status"_"sprintf("%02d", h) count = status_hour[key]+0 total = total_hour[sprintf("%02d", h)]+0 if (total > 0) { percentage = count * 100 / total printf "%02d时: %6d次 (%.1f%%)\n", h, count, percentage } } } }' "$LOG_FILE" } multi_dimension_analysis
2025年09月11日
4 阅读
0 评论
0 点赞
2025-09-11
磁盘空间清理脚本
#!/bin/bash # 磁盘空间分析和清理脚本 echo "=== 磁盘空间分析 ===" # 找出占用空间最大的目录 echo "占用空间最大的目录 TOP 10:" du -h /var 2>/dev/null | \ sort -hr | head -10 | \ awk '{printf "%-10s %s\n", $1, $2}' # 找出大文件 echo "大于100MB的文件:" find /var/log -type f -size +100M -exec ls -lh {} \; 2>/dev/null | \ awk '{printf "%-10s %s\n", $5, $9}' | \ sort -hr # 分析日志文件增长趋势 echo "日志文件大小变化 (最近7天):" for i in {0..6}; do date_str=$(date -d "$i days ago" '+%Y-%m-%d') total_size=$(find /var/log -name "*.log*" -newermt "$date_str 00:00:00" ! -newermt "$date_str 23:59:59" -exec du -cb {} + 2>/dev/null | tail -1 | awk '{print $1}') if [ -n "$total_size" ] && [ "$total_size" -gt 0 ]; then printf "%s: %.2f MB\n" "$date_str" $(echo "scale=2; $total_size/1024/1024" | bc) fi done
2025年09月11日
4 阅读
0 评论
0 点赞
1
...
4
5
6
...
20