ES分析系统各个服务日志占用量

ES分析系统各个服务日志占用量

系统日志量太大,需要分析出哪里的日志打印导致量大,对于公司es的存储压力比较大。

1、创建带size的索引,reindex到新的索引

如果es中的索引size插件默认开启,则可以省略这一步

这一步可能耗时比较长

创建索引

dsl 复制代码
PUT /bdo-pm-log-2026.05.29_size
{
    "aliases": {},
    "mappings": {
      "_size": {
        "enabled": true
      },
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "@version": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "APP_NAME": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "BOOT_SERVER": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "HOSTNAME": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "REQUESTID": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "audit": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "caller": {
          "properties": {
            "class": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            },
            "file": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            },
            "line": {
              "type": "long"
            },
            "method": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        },
        "event": {
          "properties": {
            "original": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        },
        "ip": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "level": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "levelVal": {
          "type": "long"
        },
        "logger": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "message": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "stacktrace": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "tags": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "thread": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "topic": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "traceId": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "user": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "userId": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "priority": "100",
        "number_of_replicas": "1"
      }
    }
  }

reindex

dsl 复制代码
POST _reindex
{
  "source": {
    "index": "bdo-pm-log-2026.05.29"
  },
  "dest": {
    "index": "bdo-pm-log-2026.05.29_size"
  }
}

2、开始分析

分析顺序:

1、找出日志量比较大的应用

2、分析日志级别占用(防止错误堆栈,日志级别错误打印问题)

3、分析INFO日志,找出日志输出占比较大的类

找出日志量比较大的应用
dsl 复制代码
GET /bdo-pm-log-2026.04.21_size/_search
{
  "size": 0,
  "aggs": {
    "group_by_app": {
      "terms": {
        "field": "APP_NAME.keyword",
        "size": 10,
        "order": {
          "total_disk_size": "desc"
        }
      },
      "aggs": {
        "total_log_count": {
          "value_count": {
            "field": "_seq_no"
          }
        },
        "total_disk_size": {
          "sum": {
            "field": "_size"
          }
        },
        "total_disk_size_gb": {
          "bucket_script": {
            "buckets_path": {
              "sizeBytes": "total_disk_size"
            },
            "script": "params.sizeBytes / (1024 * 1024 * 1024)"
          }
        }
      }
    }
  }
}
分析日志级别占用(防止错误堆栈,日志级别错误打印问题)
dsl 复制代码
GET bdo-pm-log-2026.04.21_size/_search
{
  "size": 0, 
  "query": {
    "bool": {
      "filter": [ 
        { "term": { "APP_NAME.keyword": "bdo-mid-base" } }
      ]
    }
  },
  "aggs": {
    "group_by_app": {
      "terms": {
        "field": "level.keyword"
      },
      "aggs": {
        "total_log_count": {
          "value_count": {
            "field": "_seq_no"
          }
        },
        "total_disk_size": {
          "sum": {
            "field": "_size"
          }
        },
        "total_disk_size_gb": {
          "bucket_script": {
            "buckets_path": {
              "sizeBytes": "total_disk_size"
            },
            "script": "params.sizeBytes / (1024 * 1024 * 1024)"
          }
        }
      }
    }
  }
}
分析INFO日志,找出日志输出占比较大的类

部分服务会将文件内容打印在日志系统里面,从而导致日志文件巨大。

dsl 复制代码
GET bdo-pm-log-2026.04.21_size/_search
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "APP_NAME.keyword": "app name"
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_app": {
      "terms": {
        "field": "logger.keyword",
        "size": 1000,
        "shard_size": 2000,
        "order": {
          "total_disk_size": "desc"
        }
      },
      "aggs": {
        "total_log_count": {
          "value_count": {
            "field": "_seq_no"
          }
        },
        "total_disk_size": {
          "sum": {
            "field": "_size"
          }
        },
        "total_disk_size_gb": {
          "bucket_script": {
            "buckets_path": {
              "sizeBytes": "total_disk_size"
            },
            "script": "params.sizeBytes / (1024 * 1024 * 1024)"
          }
        }
      }
    }
  }
}
相关推荐
陈随易1 分钟前
神级 Skill,让 AI 用 HTML 代替 Markdown 回复
前端·后端·程序员
有点小困9773 分钟前
Spring Boot 异步任务 ClassLoader 踩坑实录:ClassNotFoundException 的诡异真相
java
aiks_yuan6 分钟前
Java 正则表达式很慢怎么办:Pattern 预编译只快 2~5 倍,真正卡死线程的是回溯(JDK 8、11、17 实测)
java
用户3721574261358 分钟前
C# 填写 PDF 交互式表单:文本框、复选框、单选按钮和下拉列表
java
eidnxndrdkdns9 分钟前
PE 自校验的三个坑:恒失败、基址变化、以及被漏在外面的检测器
前端
IT枫斗者枫哥11 分钟前
Java 退款请求超时,先查原单还是重试?
java·后端
90后的晨仔13 分钟前
解决 Android 构建报错:Unable to delete file .../file-map.txt
android·前端
特立独行的猫A15 分钟前
我用仓颉写了个多平台发文工具:一份 Markdown,一条命令发六个平台
java·后端·python
Yuhano18 分钟前
W4. RAG 让 Agent 拥有"外部记忆"
前端·aigc
用户308169987648521 分钟前
gzip 和 br 压同一份 JSON:7.6MB 压到 175KB,差 3.8 倍
前端