跳到主要内容

索引管理

平台将日志与索引剥离,以低成本的摄入全量的Log。只需要针对有分析价值的Log进行索引。也可以基于业务侧的需求,通过调整过滤器、采样率来调整索引的策略。

索引管理

索引列表

日志输入它们匹配过滤器的第一个索引。支持调整索引优先级。

索引过滤器允许动态控制哪些日志流入哪些索引。索引支持过滤和排除过滤两种手段。

平台默认提供一个default索引,不支持删除。支持编辑、查询日志。

对于用户自定义的索引,支持编辑、查询日志、删除,删除后仍然会显示在列表。以红色删除图标标识。删除后的索引支持编辑、查询日志。对于排除过滤器,支持编辑、查询日志、删除、启用禁用。

image-20251009141017117

创建索引

日志索引

日志索引允许将数据以过滤的方式(过滤同查询组件)重新组织。

支持配置不同的保留时长、配额存储大小(默认200million/天,支持自定义),从而实现对日志管理预算的细粒度控制。保留时长可以在nacos后台自行配置,支持7天、15天、30天、90天、180天、365天,可设置多个可用选项。

image-20251009141036300

支持配置排除过滤器,通过属性、标签、TraceID、所有日志进行一定比例的排除。

image-20251009141128362

外部索引

目前日志模块支持日志易、ELK两种类型的外部索引。

日志易索引

对接日志易数据,一般只支持一个单独日志,即“日志易”索引,打开配置后将在平台外部索引部分生成一个“日志易”索引,点击编辑可以进行字段匹配的映射。

f4b9b8041840421f87ac77dfed01a9c0.png

  • 上下文关联字段:输入任意字段作为上下文日志判断的标识,在日志查询查看上下文日志时此字段值相同的日志将被判断为上下文关联日志。
  • 实体字段映射:
    • 字段关联:输入外部字段和实体字段直接进行字段映射,比如平台服务识别名称为“serviceDetectedName”,在客户侧的服务名称为“servicename”,通过字段关联可以实现字段的映射,保证在平台使用服务识别名称查询数据时能够正常查询。关联实体字段不可重复匹配。
    • 常量关联:部分实例可能不满足字段关联的条件,例如服务A的名称字段为“sname”,不满足字段关联中的“servicename”字段,所以针对服务A设置固定的常量关联条件,在查询服务A实例的日志时将按照常量关联配置的条件“sname==A”进行查询。

ELK索引

对接ELK日志,存在多个日志索引,因此在开启ELK索引配置后,外部索引将支持新增、编辑、删除能力

image-20251112164844093

  • 索引名称:自定义名称需要保证与客户ELK中索引名称保持一致,选择对应的索引时将直接查询客户侧索引下的数据。
  • 字段映射:将ONE平台的日志元数据字段与客户侧的ELK字段进行映射。
    • 元数据:从日志元数据中进行选择,默认选择logMessage字段,不可删除
    • ELK字段:每个元数据在ELK中对应的字段key,需要自定义输入正确的字段,与日志元数据进行映射,在日志查询部分选择条件查询时将映射为对应的ELK字段查询客户侧的日志数据。

外部索引对接ELK步骤

  1. 请求可用性检查 Shell
# 在 br-query-service 所在的主机上执行 curl 命令请求 elasticsearch 接口检查
curl -k -u {elasticsearch用户名}:{elasticsearch用户密码} https://{elasticsearch地址}:{elasticsearch端口}

# 如果报代理异常:CONNECT tunnel failed, response 403,则按如下操作将代理进行屏蔽
# 说明:如果客户启用了https,则下述命令需有{elasticsearch的证书CN}项,否则无需
# elasticsearch的证书CN查看命令:curl -v -k -u {elasticsearch用户名}:{elasticsearch用户密码} https://{elasticsearch地址}:{elasticsearch端口} 2>&1 | grep -i "subject"
echo 'export no_proxy="{主机IP},{elasticsearch的证书CN},localhost,127.0.0.1"' >> ~/.bashrc
source ~/.bashrc

# 再次curl检查
curl -k -u {elasticsearch用户名}:{elasticsearch用户密码} https://{elasticsearch地址}:{elasticsearch端口}

2.事前配置(Elasticsearch未开启https可略过此步骤)

Shell
# 执行以下命令通过elasticsearch接口获取elasticsearch的证书并保存为es.crt文件:
openssl s_client -showcerts -connect {elasticsearch地址}:{elasticsearch端口} </dev/null 2>/dev/null | openssl x509 -outform PEM > es.crt

# 将上述es.crt文件拷贝至br-query-service容器中
docker cp es.crt br-query-service:/data/

# 进入br-query-service容器(使用root用户登入)
docker exec -u root -it br-query-service bash

# 使用jdk中的命令生成es-truststore.jks文件
keytool -importcert -alias es-https -file /data/es.crt -keystore es-truststore.jks -storepass changeit -noprompt

# 将 es-truststore.jks 文件放置到对应目录下
mv es-truststore.jks /data/br/conf/query_service/

# 修改文件属主
cd /data/br/conf/query_service/ && chown bonree:bonree es-truststore.jks

# 修改 br-query-service JVM 启动参数,指定 Djavax.net.ssl.trustStore
vim /data/br/conf/query_service/query_service.env
# 在配置文件最后添加如下参数项:
# # ssl cert
# -Djavax.net.ssl.trustStore=/data/es-truststore.jks
# -Djavax.net.ssl.trustStorePassword=changeit

# 退出容器并重启query_service
exit
docker restart br-query-service

# 执行以下命令通过elasticsearch接口获取elasticsearch的证书设置的CN:
curl -v -k -u {elasticsearch用户名}:{elasticsearch用户密码} https://{elasticsearch地址}:{elasticsearch端口} 2>&1 | grep -i "subject"

# 将上述的CN添加到本地hosts文件中
vim /etc/hosts
# 在配置文件最后添加如下参数项:
# # es CN
# elasticsearch地址 获取到的CN名

3.修改nacos配置

配置文件:CONFIG_GLOBAL
修改节点:<private>
添加如下内容:
<oneservice>
<!-- ES集群信息 -->
<es>
<property name="cluster">
<list>
<!-- http设置为elasticsearch地址,https设置为elasticsearch证书的CN -->
<value>https://elasticsearch的CN:elasticsearch的端口</value>
</list>
</property>
<!-- es用户名如果无留空即可 -->
<property name="username" value="es用户名"/>
<!-- es密码如果无留空即可 -->
<property name="password" value="es用户密码"/>
</es>
</oneservice>
<framework>
<log>
<!-- 开启ELK外部索引特性 -->
<property name="externalIndexElk.status" value="1"/>
<property name="databaseElk" value="logs"/>
</log>
</framework>

4.添加Elasticsearch索引

1、通过浏览器或curl访问es接口,查看索引列表:https://172.16.51.79:9200/_cat/indices?v
2、根据具体索引名查看具体索引的mapping:https://172.16.51.79:9200/nginx-2026.06.23/_mapping?pretty
3、根据具体索引名查看具体索引里的日志记录:https://172.16.51.79:9200/nginx-2026.06.23/_search?pretty
4、根据索引名和mapping里的字段定义以及具体的日志记录详情到ONE平台外部索引中添加具体的外部索引;
5、到日志检索页面进行验证,同时点击日志详情也可以看到具体的日志记录中的日志字段的,如需添加字段映射可再次修改外部索引添加字段映射。