跳转到主要内容

为guillotina提供elasticsearch目录支持

项目描述

GUILLOTINA_ELASTICSEARCH

https://travis-ci.org/guillotinaweb/guillotina_elasticsearch.svg?branch=master

Guillotina 对 Elasticsearch 的集成。支持 Elasticsearch 7.x 和 8.x

安装

pip install guillotina_elasticsearch 默认支持 Elasticsearch 8.x。

配置

config.yaml 文件可以包含 elasticsearch 部分

elasticsearch:
  index_name_prefix: "guillotina-"
  connection_settings:
    hosts:
      - "http://127.0.0.1:9200"
    sniffer_timeout: 0.5
    sniff_on_start: true
  security_query_builder: "guillotina_elasticsearch.queries.build_security_query"

示例自定义 security_query_builder 设置

async def security_query_builder(container, request):
    return {
        'query': {
            'bool': {
                'filter': {
                    'bool': {
                        'should': [{'match': {'access_roles': "foobar"}}],
                        'minimum_should_match': 1
                    }
                }
            }
        }
    }

开发和测试

为 >=3,8 的版本设置 Python 虚拟环境。已测试 3.8, 3.9 和 3.10

# Linux
pip install -e ".[test]"
pytest tests/

默认情况下,测试运行 ES 固定版本 8。如果您想为 ES 版本 7 运行测试,请在 conftest.py 中更改图像版本。

站点安装

POST SITE_URL/@catalog

{}

站点卸载

DELETE SITE_URL/@catalog

{}

迁移命令

guillotina_elasticsearch 随带一个 es-migrate Guillotina 命令

./bin/g es-migrate

此命令将在索引上执行实时迁移。它通过在另一个索引仍然活跃的同时对新索引执行重新索引来实现。

在实时迁移期间,对两个索引都执行新索引和删除请求。

它还非常智能地处理迁移,通过对映射执行 diff,只重新索引已更改的字段。

8.0.0中的重大更改

在此版本中,库 elasticsearch 7 已升级到 elasticsearch 8。在旧 Elasticsearch 配置文件设置中需要考虑一些更改。

  • Guillotina 的配置文件中的 hosts 字段需要包含方案:http 或 https

  • Guillotina 的配置文件中的 sniffer_timeout 不能为 None

  • 已删除 doc_type。在请求中指定类型不再受支持。

  • 已删除 include_type_name 参数。

config.yaml 文件中的 elasticsearch 字段直接传递给实例化 AsyncElasticsearch。类定义与同步版本相同,要了解如何配置您的 ES,请参阅:https://elasticsearch-py.elastic.ac.cn/en/v8.12.0/api/elasticsearch.html#elasticsearch.Elasticsearch

2.0中的重大更改

  • ES 6 不支持 doc 类型

  • aioes 已弃用

  • IElasticSearchUtility 变更

    • 查询:doc_type 参数不再使用

  • IElasticSearchUtility.conn 变更

    • put_mapping

    • put_settings

    • put_alias

    • get:需要 doc_type=DOC_TYPE

    • bulk:需要 doc_type=DOC_TYPE

    • conn.transport.get_connection(): ._session -> .session, ._base_url -> .base_url

    • conn.transport.get_connection().[method] -> 需要包含 content-type: application/json

测试

如果容器 es (elasticsearch) 在运行测试时启动失败,您应增加 max_map_count。命令

# Linux
sudo sysctl -w vm.max_map_count=262144

索引映射

当将映射应用到 Elastic Search 时,所有映射都进行了扁平化。

Elasticsearch 不支持不同类型的不同映射。

如果有冲突的映射,此插件将选择最后在 applications 列表中列出的插件中的映射,这遵循 Guillotina 允许最后列出的应用程序覆盖先前列出应用程序设置的 guillotina 实践

安全配置

elasticsearch:
  index_name_prefix: "guillotina-"
  connection_settings:
    hosts:
      - "127.0.0.1:9200"
    sniffer_timeout: 0.5
    sniff_on_start: true
    use_ssl: true
    http_auth: admin:admin

8.0.6 (2024-10-01)

  • 在更新 [nilbacardit26] 时,每次数据批量插入时都记录日志结果

8.0.5 (2024-10-01)

  • 如果没有要显示的结果,则不记录日志,以防止错误 [nilbacardit26]

8.0.4 (2024-07-19)

  • 在迁移时添加错误的理由

  • 在 get_doc_count 协程中添加查询参数 [nilbacardit26]

8.0.3 (2024-04-10)

  • 添加搜索分析器功能 [nilbacardit26]

8.0.2 (2024-03-25)

  • 能够使用多字段搜索 [nilbacardit26]

8.0.1 (2024-03-21)

  • 在迁移过程中删除索引时添加缺少的索引 kwarg [nilbacardit26]

8.0.0 (2024-01-23)

  • 支持 Elasticsearch 8。

  • 将 ES 固定版本更改为 bitnami 版本 8。两个版本都通过测试

  • 从 get 调用中删除已弃用的 doc_type 参数。

  • 停止支持 elastic search 6.x [nilbacardit26]

7.0.5 (2023-12-20)

  • 修复 __init__.py 中的应用程序:从其中删除 guillotina_elasticsearch

7.0.4 (2023-12-15)

  • 如果已从基本解析器中包含,则不在解析器的 __start 修饰符中添加斜杠。

7.0.3 (2023-02-08)

  • 添加多字段功能,可以将mutlifields参数传递给index_field。当需要以不同方式索引同一字段时很有用。

7.0.2 (2022-11-23)

  • 能够使用规范化器构建映射属性 [nilbacardit26]

7.0.1 (2022-10-28)

  • 修复当full=True和reindex_security=True时的潜在索引错误 [masipcat]

  • 能够使用分析器构建映射属性 [nilbacardit26]

7.0.0 (2022-03-16)

  • 适配guillotina_elasticserach代码以适应guillotina 6.4的重大变更 [masipcat]

7.0.0a7 (2021-09-14)

  • 修复guillotina_elasticserach 7.0.0a6不再自动加载目录的问题 [masipcat]

7.0.0a6 (2021-09-13)

  • [重大变更] 移除“子索引”逻辑 [masipcat]

  • 对ElasticSearchUtility进行微小更改 [masipcat]

  • 移除已废弃的参数‘doc_type’ [masipcat]

  • ElasticSearchUtility:移除了过时的方法get_by_uuid(),get_by_uuids(),get_by_type()和get_by_type() [masipcat]

  • ElasticSearchUtility:移除了未使用的内部方法_get_type_query() [masipcat]

  • 解决在具有相同路径开头的上下文中搜索时的错误。例如:/container/folder/type_one和/container/folder/type。 [nilbacardit26]

  • 增加等待ES docker容器最大时间的限制。当使用xdist和多线程传递测试时很有用。 [nilbacardit26]

7.0.0a5 (2021-07-30)

  • 修改解析器,使其能够将__or字段解析为元素列表。例如:catalog_utility.search({"type_name__or": ["Folder", "Item"]}) [nilbacardit26]

7.0.0a4 (2021-07-15)

  • 在解析器中添加路径作为通配符。将使用端点@search在相同上下文中执行搜索。注意:如果未指定深度,则查询将解析大于或等于上下文内容深度的查询加一 [nilbacardit26]

7.0.0a3 (2021-06-22)

  • 修复日期解析器。使用默认格式strict_date_optional_time而不是使用epoch_millis,这会导致错误:无法解析日期字段[1.624173663E9]。

7.0.0a2 (2021-06-09)

  • 在解析器中添加__or。这样我们就可以使用或运算符查询关键词,例如:type_name=Item&__or=id=foo_item&id=foo_item2 [nilbacardit26]

7.0.0a1 (2021-06-04)

  • 向search_raw添加无限制参数,以便以root身份进行搜索 [nilbacardit26]

7.0.0a0 (2021-05-03)

  • 将aioelasticsearch替换为elasticsearchpy [masipcat]

  • 停止支持Elasticsearch 6.x [masipcat]

6.0.3 (2021-04-30)

  • 禁用动态映射(如v3.x中那样) [masipcat]

  • 修复迁移取消时tm为None的问题 [masipcat]

6.0.2 (2021-04-21)

  • 允许在上下文对象上进行搜索 [bloodbare]

  • 修复测试未通过的问题 [masipcat]

6.0.1 (2021-03-02)

  • 在Parser的__call__中将_from替换为from [nilbacardit26]

6.0.0 (2020-07-10)

  • 修改es_requester测试用例,使其仅清理与‘index_name_prefix’匹配的索引

6.0.0a2 (2020-05-12)

  • 支持es6和es7 [lferran]

  • 添加github actions并移除travis [lferran]

  • 添加设置‘refresh’ [masipcat]

  • 检查代码格式 [acatlla]

6.0.0a1 (2020-03-25)

  • 将默认设置定义移动到函数default_settings()中 [masipcat]

6.0.0a0 (2020-03-12)

  • 支持Guillotina 6 [masipcat]

  • 支持Elasticsearch 7.0 [jordic]

  • 确保在ES中保存子索引更改 [vangheem]

  • 修复默认索引设置 [vangheem]

  • 将aioelasticsearch锁定在<0.6.0 [masipcat]

  • 能够导入类型 [vangheem]

  • 在删除查询时重试冲突错误

  • 注意pg中的废置对象

  • 修复使用缺失属性self.request的命令

  • ISecurityInfo可以是异步的

  • 修复在Elasticsearch中未遍历所有内容索引的错误 [vangheem]

  • build_security_query():将‘query.bool.filter’更改为使用列表而不是单个对象 [masipcat]

  • 修复发布

  • 在执行真空操作时缺少pg连接锁 [vangheem]

  • 在可能的情况下,在索引进度时传递请求

  • 修复发布

  • 在真空操作中不需要请求对象 [vangheem]

  • G5支持 [vangheem]

  • 在创建/删除时不要关闭索引 [vangheem]

  • 在真空操作中处理另一个索引未找到错误 [vangheem]

  • 日志记录 [vangheem]

  • 处理索引未找到错误 [vangheem]

5.0.0 (2019-10-21)

  • 最终

5.0.0a3 (2019-10-21)

  • 更多的G5修复

5.0.0a2 (2019-06-21)

  • 添加解析器以与g5自动解析一起工作

  • 在结果结果中使用@id而不是@absolute_url

5.0.0a1 (2019-06-19)

[lferran]

3.4.0 (2019-05-28)

  • 支持Elasticsearch 7 [bloodbare]

3.3.1 (2019-05-20)

  • 在真空操作中处理ModuleNotFoundError错误 [vangheem]

3.3.0 (2019-04-10)

  • 能够自定义创建ES连接对象的方式 [vangheem]

  • 默认不加载工具,避免未配置工具时崩溃 [bloodbare]

  • 支持OpenDistro [vangheem]

3.2.6 (2019-02-18)

  • 确保在真空操作中使用事务锁 [vangheem]

3.2.5 (2019-02-08)

  • 通过自定义elasticsearch[“security_query_builder”]设置来自定义安全查询。 [vangheem]

3.2.4 (2019-02-05)

  • 在结果中包含高亮内容 [vangheem]

3.2.3 (2019-01-31)

  • 将‘creation_date’,‘modification_date’,‘tags’添加到存储字段 [vangheem]

  • 记录索引错误 [vangheem]

3.2.2 (2019-01-26)

  • 以更智能的方式解决映射冲突,允许插件覆盖基础包/guillotina [vangheem]

3.2.1 (2019-01-25)

  • 真空操作应与自定义的pg表名一起工作 [vangheem]

  • 使用游标遍历数据 [vangheem]

3.2.0 (2018-12-12)

  • MigratorReindexer中的kw参数cache=True添加到以选择是否覆盖txn._cache [masipcat]

  • 防止多个索引字段定义不同的映射 [masipcat]

  • 删除使用clear_conn_statement_cache [vangheem]

3.1.0 (2018-11-20)

  • 升级到guillotina >= 4.3.0 [vangheem]

  • 修复对象尚未存在于索引中的索引问题 [vangheem]

  • 修复真空操作中的tid检查 [vangheem]

3.0.26 (2018-07-19)

  • guillotina.async在python 3.7中是语法错误 [vangheem]

  • 不要在CREATE_INDEX时失败

3.0.25 (2018-06-18)

  • 如果tid不在数据中,则不要重新处理 [vangheem]

  • 重试冲突错误和线程池超过错误 [vangheem]

3.0.24 (2018-06-13)

  • 添加pg索引以加快真空操作速度 [vangheem]

3.0.23 (2018-06-11)

  • 在真空操作中处理TypeError [vangheem]

3.0.22 (2018-06-08)

  • 升级真空命令以处理未正确重新索引的移动内容 [vangheem]

3.0.21 (2018-06-07)

  • 修复与guillotina 4的兼容性 [vangheem]

3.0.20 (2018-05-31)

  • 修复最后一个问题

3.0.19 (2018-05-31)

  • 利用ignore_unavailable对Elasticsearch查询进行操作 [vangheem]

3.0.18 (2018-05-30)

  • 在迁移数据时也处理ModuleNotFoundError [vangheem]

3.0.17 (2018-05-29)

  • 处理现有索引不存在时的运行迁移 [vangheem]

  • 在写入之前确保刷新对象 [vangheem]

3.0.16 (2018-05-29)

  • 引发QueryErrorException而不是返回它 [vangheem]

3.0.15 (2018-05-25)

  • 修复update_by_query索引参数 [vangheem]

3.0.14 (2018-05-25)

  • 能够为update_by_query提供上下文 [vangheem]

3.0.13 (2018-05-25)

  • 修复使用子索引的真空操作 [vangheem]

3.0.12 (2018-05-24)

  • 更好地处理列表字段中的format_hit处理 [vangheem]

3.0.11 (2018-05-24)

  • 提供format_hit实用程序 [vangheem]

3.0.10 (2018-05-23)

  • 添加更多存储字段 [vangheem]

3.0.9 (2018-05-23)

  • 为某些Elasticsearch操作添加回退 [vangheem]

3.0.8 (2018-05-22)

  • 使IIndexManager.get_schemas异步 [vangheem]

3.0.7 (2018-05-21)

  • 处理缺失的__parent__ [vangheem]

3.0.6 (2018-05-21)

  • 修复重新索引子索引子项的安全问题 [vangheem]

3.0.5 (2018-05-21)

  • 修复发布问题 [vangheem]

3.0.4 (2018-05-21)

  • cleanup_es接受一个前缀值 [vangheem]

3.0.3 (2018-05-21)

  • 提供get_index_for实用程序 [vangheem]

  • 提供cleanup_es测试实用程序 [vangheem]

  • 修复在子索引上存储注释数据 [vangheem]

  • get_by_path应接受索引参数 [vangheem]

3.0.2 (2018-05-21)

  • 修复发布问题 [vangheem]

  • 添加utils.get_all_indexes_identifier [vangheem]

3.0.1 (2018-05-21)

  • 使用mappings/indexes创建索引而不是在创建后更新它们 [vangheem]

  • 添加es-fields命令以检查配置的字段 [vangheem]

3.0.0 (2018-05-19)

  • 添加对子索引的支持 [vangheem]

  • 引发异常而不是返回ErrorResponse [vangheem]

  • 将滚动支持添加到查询 [gitcarbs]

2.0.1 (2018-05-10)

  • 为迁移添加更多日志 [vangheem]

  • 添加IIndexProgress到重新索引过程钩子

  • 添加重新索引开始时的新事件。

  • IIndexProgress事件添加了上下文 [jordic]

2.0.0 (2018-05-06)

  • 将aioes(不支持)替换为aioelasticsearch [vangheem]

  • Elasticsearch 6兼容性。 [vangheem]

1.3.13 (2018-05-02)

  • 像源结果一样格式化存储字段结果 [vangheem]

1.3.12 (2018-05-01)

  • 更多真空改进

1.3.11 (2018-04-30)

  • 更多真空改进 [vangheem]

1.3.10 (2018-04-30)

  • 迁移脚本不应使用事务 [vangheem]

1.3.9 (2018-04-30)

  • 优化真空脚本以使用 tid 排序,这应该可以防止需要浏览大量文档来完成真空检查 [vangheem]

1.3.8 (2018-04-27)

  • 在结果中提供 @name [vangheem]

1.3.7 (2018-04-26)

  • 将搜索结果中的 @id 更改为 @uid [vangheem]

  • 添加对分析字符过滤器的支持 [gitcarbs]

1.3.6 (2018-04-18)

  • 与 store=true 映射一起工作 [vangheem]

1.3.5 (2018-04-15)

  • 为 es 真空命令使用更小的批量大小 [vangheem]

1.3.4 (2018-04-15)

  • 真空时的某些性能修复 [vangheem]

1.3.3 (2018-04-14)

  • 在结果中提供配置文件数据 [gitcarbs]

1.3.2 (2018-04-03)

  • 将测试升级到使用 pytest-docker-fixtures [vangheem]

1.3.1 (2018-03-14)

  • 注意 index_data 配置 [vangheem]

1.3.0 (2018-03-14)

  • 升级以支持 guillotina 2.4.x [vangheem]

1.2.11 (2018-03-09)

  • 实现语句缓存清除 [vangheem]

1.2.10 (2018-03-02)

  • 真空时不要使用缓存语句 [vangheem]

1.2.9 (2018-02-07)

  • 处理 es 真空时解冻对象时出现的错误 [vangheem]

1.2.8 (2018-01-11)

  • 确保更改命令的事务策略 [vangheem]

1.2.7 (2018-01-08)

  • 确保在命令中关闭连接 [vangheem]

1.2.6 (2017-12-18)

  • 使用 traverse 而不是 do_traverse [vangheem]

1.2.5 (2017-12-08)

  • 更新时在冲突情况下重试 [vangheem]

1.2.4 (2017-12-06)

  • 使用 futures 而不是 threads 进行迁移 [vangheem]

1.2.3 (2017-11-21)

  • 使用最新的 guillotina 升级测试基础设施 [vangheem]

1.2.2 (2017-11-08)

  • 修复 Jenkins 上的测试设置 [vangheem]

1.2.1 (2017-11-08)

  • 使日志不那么嘈杂 [vangheem]

1.2.0 (2017-11-06)

  • 升级到 guillotina 2.0.0 [vangheem]

1.1.24 (2017-10-12)

  • 在真空命令完成后关闭连接 [vangheem]

1.1.23 (2017-10-09)

  • 确保在手动调用使用会话对象的 Elasticsearch API 时使用 async with 语法 [vangheem]

1.1.22 (2017-09-28)

  • 对运行迁移时缺失的索引进行另一项调整 [vangheem]

1.1.21 (2017-09-21)

  • 所有索引/删除操作已经在 future 中,因此无需将 future 添加到操作中 [vangheem]

1.1.20 (2017-09-21)

  • 使用最新的 guillotina futures 请求 API [vangheem]

1.1.19 (2017-09-14)

  • 更改 esvacuum 的页面大小和滚动以防止超时 [vangheem]

1.1.18 (2017-08-22)

  • 修复在迁移期间编辑注册表时发生的 TIDConflictError [vangheem]

1.1.17 (2017-08-11)

  • 更好地处理迁移时映射更改导致的缺失类型 [vangheem]

1.1.16 (2017-08-09)

  • 搜索结果应返回排序值 [gitcarbs]

1.1.15 (2017-07-28)

  • 修复真空时迭代所有键时出现的空滚动错误 [vangheem]

1.1.14 (2017-07-21)

  • 修复迁移活动时的死锁问题 [vangheem]

1.1.13 (2017-07-12)

  • 在运行迁移之前等待一段时间,以便使用异步计算动态类型的插件可以加载

1.1.12 (2017-07-12)

  • 修复升级映射时文档类型缺失的场景 [vangheem]

1.1.11 (2017-07-10)

  • 添加 update_by_query 方法 [vangheem]

1.1.10 (2017-07-06)

  • 添加 reindex 命令 [vangheem]

1.1.9 (2017-07-06)

  • 修复迁移脚本中的无效导入 [vangheem]

1.1.8 (2017-07-05)

  • 为真空添加更多日志 [vangheem]

1.1.7 (2017-06-29)

  • 添加真空命令 [vangheem]

1.1.6 (2017-06-23)

  • 修复组查询,以防止在安全查询中为组预先附加 'group:' [vangheem]

1.1.5 (2017-06-21)

  • 修复在迁移时对象被删除的情况,这些对象被认为是孤立的 [vangheem]

1.1.4 (2017-06-20)

  • 防止自动映射元数据 [bloodbare]

1.1.3 (2017-06-15)

  • 修复重新索引 [vangheem]

1.1.2 (2017-06-15)

  • 修复客户端异常 aiohttp 错误的导入 [vangheem]

1.1.1 (2017-06-09)

  • 将 fixtures 从 conftest.py 移出,放入自己的模块。这可能会破坏依赖于它的测试![vangheem]

1.1.0 (2017-06-09)

  • 添加 Reindexer 工具,专门用于重新索引,而不是使用 migrator [vangheem]

1.0.29 (2017-06-08)

  • 在比较之前清理映射,以防止检测映射差异时的误报 [vangheem]

1.0.28 (2017-06-08)

  • 能够仅迁移映射并跳过网站上内容的处理 [vangheem]

1.0.27 (2017-06-07)

  • 确保在调用 reindex_all_content 时刷新重新索引的项目 [vangheem]

1.0.26 (2017-05-26)

  • 在构建查询时添加组时,确保为每个组预先附加“group:”,这样我们就可以区分组和用户,并且可以避免他们添加一个他们是成员的“root”组 [vangheem]

1.0.25 (2017-05-26)

  • 处理你在重新索引时数据正在变化的问题 [vangheem]

1.0.24 (2017-05-26)

  • 修复原始索引有问题时会导致索引差异计算错误的问题 [vangheem]

  • 修复在新索引上翻转之前发生的迁移失败问题 [vangheem]

1.0.23 (2017-05-25)

  • 修复安全更改时的重新索引问题 [vangheem]

1.0.22 (2017-05-19)

  • 能够取消迁移并执行一些清理操作 [vangheem]

1.0.21 (2017-05-19)

  • 一系列迁移修复以提高其鲁棒性 [vangheem]

1.0.20 (2017-05-18)

  • 实现实时迁移命令 [vangheem]

1.0.19 (2017-05-16)

  • 使用清洁选项重新索引应删除,重新创建索引 [vangheem]

1.0.18 (2017-05-16)

  • 对所有请求类型使用虚拟缓存进行重新索引 [vangheem]

1.0.17 (2017-05-16)

  • 在重新索引时禁用缓存 [vangheem]

1.0.16 (2017-05-15)

  • 在Elasticsearch上进行批量索引时使用线程,以确保Elasticsearch始终保持忙碌状态。 [vangheem]

  • 强制更新映射 [bloodbare]

1.0.15 (2017-05-12)

  • 关闭和打开索引以定义设置 [bloodbare]

1.0.14 (2017-05-12)

  • 启用按类型查询的大小 [bloodbare]

1.0.13 (2017-05-11)

  • 也在强制映射上设置设置 [bloodare]

1.0.12 (2017-05-11)

  • 将权限名称更改为guillotina [bloodbare]

1.0.11 (2017-05-11)

  • 在映射突变的情况下,有选项设置映射而不重新索引 [bloodbare]

1.0.10 (2017-05-09)

  • 修复 –update-missing 参数与 es-reindex 命令 [vangheem]

1.0.9 (2017-05-09)

  • 修复删除节点时的错误 [bloodbare]

1.0.8 (2017-05-08)

  • 通过使用asyncio.gather遍历子树并同时索引来提高布什内容重新索引的性能。 [vangheem]

  • 改进重新索引命令的选项 [vangheem]

1.0.7 (2017-05-04)

  • reindex_all_content现在接受update和update_missing参数 [vangheem]

1.0.6 (2017-05-03)

  • 能够从现有的重新索引中更新 [vangheem]

1.0.5 (2017-05-02)

  • 需要避免在重新索引时使用长时间运行的查询,因为对于非常大的文件夹,它们可能会超时 [vangheem]

1.0.4 (2017-05-02)

  • 进一步优化重新索引 [vangheem]

1.0.3 (2017-05-02)

  • 更内存高效的重新索引 [vangheem]

1.0.2 (2017-05-02)

  • 修复重新索引内容 [vangheem]

1.0.1 (2017-04-25)

  • 提供异步实用程序,因为它允许我们在对象销毁时关闭连接 [vangheem]

1.0.0 (2017-04-24)

  • 初始版本

项目详细信息


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

guillotina_elasticsearch-8.0.6.tar.gz (56.9 kB 查看哈希值)

上传时间: 源代码

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页