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)"
          }
        }
      }
    }
  }
}
相关推荐
云烟成雨TD2 小时前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
星越华夏2 小时前
ESP32-CAM图像传输项目说明文档
java·后端·struts·esp32
Jinkxs2 小时前
Java 跨域14-Java 与区块链(Hyperledger)集成
java·开发语言·区块链
JustHappy3 小时前
古法编程秘籍(六):程序到底是怎么跑起来的?从 IO 到中断,一次讲明白
前端·后端·全栈
HYCS3 小时前
用pixi.js实现fabric.js(六):从线性代数的角度理解编辑器交互
前端·javascript·canvas
晨曦中的暮雨3 小时前
Golang速通(Javaer版)
java·开发语言·后端·golang
七老板的blog4 小时前
当 Spring StateMachine 遇见大模型:构建工业级 AI 写作流水线
java·人工智能·spring
卷帘依旧4 小时前
useImperativeHandle的作用
前端