
# 中间件-ElasticSearch日志
ElasticSearch是一个开源的分布式搜索和分析引擎，被广泛用于构建实时的、可扩展的搜索和分析应用程序。它的主要作用是存储、搜索和分析大量的数据。ElasticSearch的日志是记录其运行过程中各种信息的重要工具，主要有以下两种类型：
1. 主要日志（cluster-name.log，以集群名称命名：记录了ElasticSearch运行时所发生一切的综合信息，如某个查询失败、一个新的节点加入集群等。这是了解ElasticSearch集群整体运行状况的重要日志。
2. 慢搜索日志（cluster-name_index_search_slowlog.log，以集群名称命名）：当某个查询运行得很慢时，ElasticSearch会在这里进行记录。默认情况下，如果一个查询花费的时间多于半秒，将在这里写入一条记录。这对于分析和优化查询性能非常有用。
除了上述两种主要的日志类型外，ElasticSearch还提供了其他类型的日志，如弃用日志（用于记录已弃用的功能或配置）、访问日志（记录所有查询请求的详细信息）等。
#### 采集方法
使用ICAgent采集日志，接入前请参考[安装ICAgent（区域内主机）](https://support.huaweicloud.com/usermanual-lts/lts_02_0013.html)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务，详细操作请参考[云主机ECS文本日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_1031.html)。
#### Elasticsearch日志示例以及字段含义
- 主要日志
  ```
  {  
    "log.level": "INFO",  
    "@timestamp": "2023-10-23T15:46:30.123Z",  
    "log.origin.file.name": "Elasticsearch.java",  
    "log.origin.file.line": 123,  
    "message": "version[7.17.2], pid[12345], build[default/tar/1234567/2023-10-01T12:00:00.000Z], OS[Linux/5.10.0-10-amd64/amd64], JVM[Eclipse Adoptium/OpenJDK 64-Bit Server VM/11.0.14.1/11.0.14.1+1-LTS]",  
    "type": "server",  
    "cluster.name": "my-cluster",  
    "node.name": "node-1",  
    "node.id": "abcdefg123",  
    "ecs.version": "1.8.0"  
  }  
  {  
    "log.level": "WARN",  
    "@timestamp": "2023-10-23T15:47:00.456Z",  
    "log.origin.file.name": "SlowLog.java",  
    "log.origin.file.line": 456,  
    "message": "[index][search_slowlog][index_name] took[5.6s], took_millis[5600], total_hits[1000], types[], stats[], search_type[QUERY_THEN_FETCH], source[...]",  
    "type": "slowlog",  
    "cluster.name": "my-cluster",  
    "node.name": "node-1",  
    "index.name": "index_name"  
  }
  ```
  表1主要日志字段说明 
  | 字段                   | 说明                                                               | 示例                                                                                                                                                                                                    |
  |:---|:---|:---|
  | log.level            | 日志级别，可以是INFO、WARN、ERROR等。                                        | INFO                                                                                                                                                                                                  |
  | @timestamp           | 日志记录的时间戳。                                                        | 2023-10-23T15:46:30.123Z                                                                                                                                                                              |
  | log.origin.file.name | 生成日志条目的源文件名。                                                     | Elasticsearch.java                                                                                                                                                                                    |
  | log.origin.file.line | 生成日志条目的源文件行号。                                                    | 123                                                                                                                                                                                                   |
  | message              | 实际的日志消息内容。                                                       | version\[7.17.2\], pid\[12345\], build\[default/tar/1234567/2023-10-01T12:00:00.000Z\], OS\[Linux/5.10.0-10-amd64/amd64\], JVM\[Eclipse Adoptium/OpenJDK 64-Bit Server VM/11.0.14.1/11.0.14.1+1-LTS\] |
  | type                 | 日志条目的类型（如 server、slowlog、transport 等）。                           | server                                                                                                                                                                                                |
  | cluster.name         | Elasticsearch集群的名称。                                              | my-cluster                                                                                                                                                                                            |
  | node.name            | 产生日志的Elasticsearch节点的名称。                                         | node-1                                                                                                                                                                                                |
  | node.id              | 产生日志的Elasticsearch节点的ID。                                         | abcdefg123                                                                                                                                                                                            |
  | index.name           | （在某些日志条目中）：与日志条目相关的索引名称。                                         | index_name                                                                                                                                                                                            |
  | ecs.version          | Elastic Common Schema (ECS) 的版本，ECS是一个用于标准化Elasticsearch日志字段的规范。 | 1.8.0                                                                                                                                                                                                 |
     
  
- 慢搜索日志
  ```
  {  
    "type": "slowlog",  
    "timestamp": "2023-10-23T16:15:30,234Z",  
    "level": "WARN",  
    "component": "o.e.i.s.q",  
    "cluster.name": "my-cluster",  
    "node.name": "node-1",  
    "node.id": "abcdefg123",  
    "took": "10.5s",  
    "took_millis": 10500,  
    "source": "{\"query\":{\"match_all\":{}}}\n",  
    "shards": [  
      {  
        "index": "my_index",  
        "shard": "0",  
        "search_type": "QUERY_THEN_FETCH",  
        "total_hits": 12345,  
        "status": 200,  
        "forced_refresh": false,  
        "request_cache": true,  
        "scroll_size": 0  
      }  
    ]  
  }
  ```
  表2慢搜索日志字段说明 
  | 字段             | 说明                              | 示例                                       |
  |:---|:---|:---|
  | type           | 日志类型。                           | "slowlog"，表示这是一个慢查询日志条目。                 |
  | timestamp      | 日志条目的时间戳。                       | 2023-10-23T16:15:30,234Z                 |
  | level          | 日志级别。                           | "WARN"，表示这是一个警告级别的日志条目。                  |
  | component      | 产生日志的组件。                        | "o.e.i.s.q"，代表Elasticsearch内部的一个特定组件或模块。 |
  | cluster.name   | Elasticsearch 集群的名称。            | my-cluster                               |
  | node.name      | 产生日志的节点的名称。                     | node-1                                   |
  | node.id        | 产生日志的节点的ID。                     | abcdefg123                               |
  | took           | 查询执行的总时间，以人类可读的格式（如 "10.5s"）表示。 | 10.5s                                    |
  | took_millis    | 查询执行的总时间，以毫秒为单位。                | 10500                                    |
  | source         | 触发慢查询的原始查询语句（JSON格式）。           | {"query":{"match_all":{}}}\\n            |
  | shards         | 慢查询涉及的分片信息数组。                   | -                                        |
  | index          | 分片所在的索引名称。                      | my_index                                 |
  | shard          | 分片的ID。                          | 0                                        |
  | search_type    | 查询类型。                           | QUERY_THEN_FETCH                         |
  | total_hits     | 查询返回的总命中数。                      | 12345                                    |
  | status         | 查询的HTTP状态码。                     | 200                                      |
  | forced_refresh | 是否强制刷新分片。                       | false                                    |
  | request_cache  | 是否使用请求缓存。                       | true                                     |
  | scroll_size    | 滚动查询的大小（如果不适用则为 0）。             | 0                                        |
     
  
 
