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)"
          }
        }
      }
    }
  }
}
相关推荐
plainGeekDev12 分钟前
GreenDAO → Room
android·java·kotlin
Apifox26 分钟前
Apifox 6 月更新|Apifox CLI 全面升级、导入导出优化、OAuth 2.0 支持自动刷新令牌
前端·后端·测试
CodingSpace37 分钟前
TypeScript 装饰器
前端
宸翰39 分钟前
解决 uni-app App 端 vue-i18n 占位符丢失:封装跨端可用的 tf 格式化方法
前端·vue.js·uni-app
systemPro1 小时前
光储充系统数据流全解析:PV / ESS / GRID 数据怎么流转,线损怎么算
前端
古茗前端团队3 小时前
急招!前端|测试|后端|产品(名额多,速来)
前端·后端·架构
Lsx_3 小时前
不只是 Prompt:用 Superpowers Skill 给 AI 编程装上工程化工作流
前端·ai编程·claude
小碗细面3 小时前
前端 Prompt 工程实战:如何搭建场景化 Prompt 库
前端·ai编程
阿瑞IT3 小时前
2026年 AI Agent 生产化落地全景:四大高频故障根因分析与工程解法
前端
木木剑光4 小时前
我开源了一个 React 组件库,沉淀了多个高频组件和实用 Hooks
前端·javascript·react.js