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)"
          }
        }
      }
    }
  }
}
相关推荐
qfljg1 小时前
OpenRewrite 实战指南
java
朱 欢 庆1 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
Sylvia33.1 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
Sayai1 小时前
Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南
大数据·elasticsearch·docker
2601_962071576 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
支支დ7 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
zww89491117 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
香芋芋圆7 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF8 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
宿6748 小时前
vue3-async
前端·javascript·vue.js