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)"
          }
        }
      }
    }
  }
}
相关推荐
vx-程序开发11 小时前
springboot旅游推介平台---附源码24175
java·spring boot·python·spring cloud·eclipse·django·idea
逝水无殇11 小时前
HTML 文本格式化详解:掌握 <strong>、<em>、<mark>、<del> 等常用标签
前端·javascript·html
特立独行的猫a11 小时前
DeepSeek Harness插件和工具的区别介绍及开发入门指南
前端·ai·agent·插件·deepseek·harness
小新讲网安11 小时前
HTTP请求走私攻击实战:CL.TE与TE.CL绕过前端服务器全解析
服务器·前端·网络·web安全·http·架构·漏洞
艾莉丝努力练剑11 小时前
【QT:解决问题】Qt5Core.dll:无法定位程序输入点
java·开发语言·qt·学习·面试
风骏时光牛马11 小时前
AI办公系统异常事件复盘分析
前端
console.log('npc')11 小时前
React 19 + Vite 企业级前端项目:从零搭建到规范交付
前端·react.js·前端框架
小蒜学长11 小时前
“喵汪联盟”宠物领养系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·宠物
程序员黑豆11 小时前
Java字符串常量池完全指南:原理、intern()方法与性能优化最佳实践
java·前端·ai编程
光影少年11 小时前
react离线缓存、图片缓存方案
开发语言·前端·javascript·react native·react.js·缓存·前端框架