10个脚本让你的运维超神 !!!

文摘   2024-11-29 21:00   湖北  


在运维工作中,日志处理是一项至关重要的任务,它涉及到监控系统状态、排查故障以及性能调优等多个方面。以下是15个常用的日志处理脚本,这些脚本可以帮助运维人员高效地管理和分析日志数据。

  1. 实时日志监控与报警脚本:该脚本能够实时监控日志文件,一旦检测到特定的错误关键字,就会发送报警邮件。

    #!/bin/bash
    LOG_FILE="/path/to/your/logfile.log"
    KEYWORD="ERROR"
    EMAIL="admin@example.com"
    tail -f $LOG_FILE | while read line; do
        if echo "$line" | grep -q "$KEYWORD"then
            echo "Alert: $line" | mail -s "Error Detected in $LOG_FILE" $EMAIL
        fi
    done
  2. 日志按时间分割脚本:模拟logrotate功能,每天将旧日志重命名并创建新日志。

    #!/bin/bash
    LOG_FILE="/path/to/your/logfile.log"
    DATE=$(date +%Y%m%d)
    mv $LOG_FILE $LOG_FILE.$DATE
  3. 异常日志聚合分析脚本:从多个服务器的日志文件中收集错误日志,并聚合分析。

    #!/bin/bash
    SERVERS=("server1" "server2" "server3")
    ERROR_DIR="/path/to/error_logs"
    mkdir -p "$ERROR_DIR"
    for SERVER in "${SERVERS[@]}"do
        SSH_CMD="ssh $SERVER 'cat /path/to/logs/error.log'"
        ERRORS=$(eval $SSH_CMD)
        echo "$ERRORS" | grep 'ERROR' >> "$ERROR_DIR/${SERVER}_errors.log"
    done
  4. 日志时间戳转换脚本:将日志文件中的时间戳从UNIX时间戳转换为可读的日期格式。

    #!/bin/bash
    LOG_FILE="/path/to/your/logfile_with_timestamps.log"
    while IFS= read -r line; do
        TIMESTAMP=$(echo $line | cut -d' ' -f1)
        MESSAGE=$(echo $line | cut -d' ' -f2-)
        HUMAN_READABLE_DATE=$(date -d @"$TIMESTAMP" +"%Y-%m-%d %H:%M:%S")
        echo "$HUMAN_READABLE_DATE $MESSAGE"
    done < "$LOG_FILE"
  5. 日志IP地址统计脚本:统计日志文件中访问者的IP地址及其出现次数,并排序输出。

    #!/bin/bash
    LOG_FILE="/path/to/your/access.log"
    awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr
  6. 日志请求类型分析脚本:分析日志文件中不同HTTP请求类型(如GET、POST)的比例。

    #!/bin/bash
    LOG_FILE="/path/to/your/access.log"
    declare -A request_types
    while IFS= read -r line; do
        method=$(echo $line | awk '{print $6}')
        if [[ "${request_types[$method]}" ]]; then
            ((request_types[$method]++))
        else
            request_types[$method]=1
        fi
    done < "$LOG_FILE"
    echo "Request Type Statistics:"
    for method in "${!request_types[@]}"do
        echo "$method${request_types[$method]}"
    done
  7. 日志响应时间分析脚本:分析日志文件中每个请求的响应时间,并统计不同时间段的请求数量。

    #!/bin/bash
    LOG_FILE="/path/to/your/access.log"
    declare -A response_times
    bins=("0-100ms" "101-200ms" "201-500ms" "501-1000ms" "1000ms+")
    while IFS= read -r line; do
        response_time=$(echo $line | awk '{print $10}')
        if (( echo "$response_time <= 100" | bc -l )); then
            bin="0-100ms"
        elif (( echo "$response_time <= 200" | bc -l )); then
            bin="101-200ms"
        elif (( echo "$response_time <= 500" | bc -l )); then
            bin="201-500ms"
        elif (( echo "$response_time <= 1000" | bc -l )); then
            bin="501-1000ms"
        else
            bin="1000ms+"
        fi
        ((response_times[$bin]++))
    done < "$LOG_FILE"
    echo "Response Time Statistics:"
    for bin in "${!response_times[@]}"do
        echo "$bin${response_times[$bin]}"
    done
  8. 日志文件内容差异分析脚本:比较两个日志文件之间的差异,并输出不同之处。

    #!/bin/bash
    LOG_FILE1="/path/to/log1.log"
    LOG_FILE2="/path/to/log2.log"
    diff -B --side-by-side $LOG_FILE1 $LOG_FILE2
  9. 日志中特定用户活动跟踪脚本:从日志文件中提取特定用户的所有活动记录,并按时间排序。

    #!/bin/bash
    LOG_FILE="/path/to/user_activity.log"
    USER_NAME="target_user"
    awk -v user="$USER_NAME" '$0 ~ user {print}' $LOG_FILE | sort
  10. 日志文件压缩与备份脚本:将日志文件压缩后备份到指定的远程服务器或本地目录。

    #!/bin/bash
    LOG_DIR="/path/to/logs"
    BACKUP_DIR="/path/to/backup"
    DATE=$(date +%Y%m%d)
    BACKUP_FILE="logs_backup_$DATE.tar.gz"
    tar -czvf $BACKUP_DIR/$BACKUP_FILE $LOG_DIR
    echo "Backup completed: $BACKUP_DIR/$BACKUP_FILE"

以上脚本涵盖了日志处理的多个方面,从实时监控到日志备份,为运维人员提供了强大的工具支持。这些脚本可以根据实际需求进行调整和扩展,以适应不同的工作环境和需求。

近期文章:

IP彻底麻了 !!! 运维动手了
惊呆了 !!! 运维用破手机搭了一个网站
不懂开发的运维走不远 ???
为何Linux裸奔也很安全 ???
不要乱来 !!! 运维也分方向哦

开源日记
分享10k+Star的优质开源项目。
 最新文章