中间件-ElasticSearch日志
ElasticSearch是一个开源的分布式搜索和分析引擎,被广泛用于构建实时的、可扩展的搜索和分析应用程序。它的主要作用是存储、搜索和分析大量的数据。ElasticSearch的日志是记录其运行过程中各种信息的重要工具,主要有以下两种类型:
- 主要日志(cluster-name.log,以集群名称命名:记录了ElasticSearch运行时所发生一切的综合信息,如某个查询失败、一个新的节点加入集群等。这是了解ElasticSearch集群整体运行状况的重要日志。
- 慢搜索日志(cluster-name_index_search_slowlog.log,以集群名称命名):当某个查询运行得很慢时,ElasticSearch会在这里进行记录。默认情况下,如果一个查询花费的时间多于半秒,将在这里写入一条记录。这对于分析和优化查询性能非常有用。
除了上述两种主要的日志类型外,ElasticSearch还提供了其他类型的日志,如弃用日志(用于记录已弃用的功能或配置)、访问日志(记录所有查询请求的详细信息)等。
自建中间件功能在邀测中,支持华北-北京四局点,仅针对用户内测使用,后续将全网开放,敬请期待!
采集方法
使用ICAgent采集日志,接入前请参考安装ICAgent(区域内主机)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务,详细操作请参考云主机ECS文本日志接入LTS。
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