APM 事件索引集创建
0x01 关键信息
a. 适用场景
为 APM 应用创建事件索引集,关联流水线事件、K8s 事件、系统事件等。
0x02 代码片段
a. 创建多事件源索引集
python
from apps.log_search.handlers.index_set import IndexSetHandler
bk_biz_id = 2
space_uid = "bkcc__2"
storage_cluster_id = 5
IndexSetHandler.create(
index_set_name=f"{bk_biz_id} APM Test Events",
space_uid=space_uid,
storage_cluster_id=storage_cluster_id,
scenario_id="es",
view_roles=None,
indexes=[
{
"bk_biz_id": bk_biz_id,
# 流水线事件
"result_table_id": f"{bk_biz_id}_bkmonitor_event_1574596_*",
"result_table_name": None,
"time_field": "time",
},
{
"bk_biz_id": bk_biz_id,
# [k8s]蓝鲸7.0(BCS-K8S-00000)
"result_table_id": f"{bk_biz_id}_bkmonitor_event_1573196_*",
"result_table_name": None,
"time_field": "time",
},
{
"bk_biz_id": bk_biz_id,
# 系统事件
"result_table_id": "gse_system_event*",
"result_table_name": None,
"time_field": "time",
}
],
username="admin",
time_field="time",
)b. 创建单事件源索引集
python
from apps.log_search.handlers.index_set import IndexSetHandler
bk_biz_id = 2
space_uid = "bkcc__2"
storage_cluster_id = 5
IndexSetHandler.create(
index_set_name="[k8s]蓝鲸7.0(BCS-K8S-00000)",
space_uid=space_uid,
storage_cluster_id=storage_cluster_id,
scenario_id="es",
view_roles=None,
indexes=[
{
"bk_biz_id": bk_biz_id,
"result_table_id": f"{bk_biz_id}_bkmonitor_event_1573196_*",
"result_table_name": None,
"time_field": "time",
},
],
username="admin",
time_field="time",
)c. 蓝盾项目空间索引集
python
from apps.log_search.handlers.index_set import IndexSetHandler
bk_biz_id = -4220213
space_uid = "bkci__bkdevops"
storage_cluster_id = 166
IndexSetHandler.create(
index_set_name="[测试]蓝盾 dev_rbac",
space_uid=space_uid,
storage_cluster_id=storage_cluster_id,
scenario_id="es",
view_roles=None,
indexes=[
{
"bk_biz_id": bk_biz_id,
"result_table_id": f"bkmonitor_{-bk_biz_id}_bkmonitor_event_1581075_*",
"result_table_name": None,
"time_field": "time",
},
],
username="admin",
time_field="time",
)d. 扩展蓝盾事件字段
python
from metadata import models
table_id = "bkmonitor_event_1581128"
bk_data_id = models.DataSourceResultTable.objects.get(table_id=table_id).bk_data_id
es_properties_o = models.ResultTableFieldOption.objects.get(
table_id=table_id, field_name="event", name="es_properties"
)
es_properties_o.value = '{"content":{"type":"text"},"count":{"type":"integer"},"extra": {"type": "object"}}'
es_properties_o.save()
self = models.ESStorage.objects.get(table_id=table_id)
self.update_index_v2()
self.create_or_update_aliases()
models.ResultTableOption.objects.update_or_create(
table_id=table_id,
name="event_content",
bk_tenant_id='system',
defaults={"value_type": "dict", "value": '{"content":{},"count":{},"extra":{}}'}
)
data_source = models.DataSource.objects.get(bk_data_id=bk_data_id)
data_source.refresh_consul_config()