华为云用户手册
-
批量设置多个接入配置 支持同时批量设置多个接入配置,操作简单,不用重复配置即可快速完成多个场景的接入配置。 在“接入管理”页面,单击“批量创建”,进入配置详情页面。 接入类型:选择云主机 E CS -文本日志。 规则列表: 在输入框填写接入配置数量,单击“添加接入配置”。 在规则列表下方默认已有1个接入配置,最多支持再添加99个数量,因此支持同时添加100个接入配置。 在右侧配置项下方自定义填写“规则名称”,配置项设置完成后,也可以双击左侧接入配置的名称自定义命名。规则名称只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。长度为1-64个字符。 鼠标放在接入配置上面,单击即可直接复制接入配置。 鼠标放在接入配置上面,单击,在弹出的提示框单击“确定”删除接入配置。 配置项: 左侧显示接入配置的信息,最多支持添加99个配置。 右侧显示配置接入的内容,详细请参考步骤3:采集配置进行设置。 一个接入配置设置完成后,单击“应用于其他接入配置”即可将该接入配置复制到其他接入配置。 单击“参数检查”,检查成功后,单击“提交”,批量接入设置完成。 例如添加了4个接入配置,批量创建成功后,在“接入管理”下方,就会显示4条接入配置数量。 (可选)支持对接入配置任务进行以下操作: 勾选多个已创建成功的接入配置,单击“批量编辑”进入配置详情页面,通过选择不同接入类型,修改对应的接入配置信息。 勾选多个接入配置开关显示关闭的接入配置,单击“接入配置开启/关闭”,选择“开启”即可批量开启接入配置任务。 勾选多个接入配置开关显示开启的接入配置,单击“接入配置开启/关闭”,选择“关闭”。接入配置状态关闭后不会继续采集日志,请谨慎操作。 勾选多个已创建成功的接入配置,单击删除按钮即可批量删除接入配置。
-
示例代码 const miniSDK = require('lts-mini-sdk').default; // import miniSDK from 'lts-mini-sdk'; App({ onLaunch(options) { // 初始化 const wxmini = new miniSDK({ // 上报region region: string, // 华为云项目ID projectId: string, // 上报地址 url: string, // LTS日志组ID groupId: string, // LTS日志流ID streamId: string, // 调试日志等级 debug: string, // 当前小程序所属平台 platform: string, // 上报条数阈值 cacheThreshold: number, // 上报时间阈值 timeInterval: number, }); // 立即上报单条带标签 wxmini.reportImmediately({ 'name': 'xiaoming', 'age': 18 }, { 'key': 'value' }); // 立即上报单条 不带标签 wxmini.reportImmediately([{ key: 'value', number: 1, array: [], json: { json: 'json' } }, { 'key': 'value' }]); // 缓存上报多条 带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { 'name': 'xiaobai', 'age': 20 }], { 'key': 'value' }); // 缓存上报多条 不带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { key: 'value', number: 1, array: [], json: { json: 'json' } }]); // 缓存上报多条 带多个标签(最多50个) wxmini.report([{ 'name': 'xiaohong', 'name': 'xiaolan' }], {'version': '1.0.0', 'render': 'mini', 'link': '/', from: 'wx'}); } });
-
版本更新说明 表1 版本更新说明 版本号 更新说明 1.0.24 支持更多region:华东-上海一、华南-广州。 1.0.23 新增支持快应用上报。 1.0.21 废弃config方法,优先使用new SDK创建一个新的实例。 去除代码中对三方包的依赖和存在的中文符号。 1.0.19 修改时间阈值的范围从1-60改为1-1800,其默认值从30改为3。 1.0.18 调整日志级别等级。 支持labels嵌套。 1.0.15 新增多实例。
-
内置保留字段 在采集日志时, 云日志 服务会将采集时间、日志类型、主机IP等信息以Key-Value对的形式添加到日志中,这些字段是云日志服务的内置字段。 使用API写入日志数据或添加ICAgent配置时,请不要将字段名称设置为内置保留字段,否则可能会造成字段名称重复、查询不精确等问题。 云日志服务为日志数据增加的内置保留字段当前免费。更多信息请参见价格计算器。 用户自定义日志字段名称中不能使用双下划线__,否则无法配置索引。 表4 内置保留字段说明 内置保留字段 数据格式 索引与统计设置 说明 collectTime 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为collectTime创建字段索引,索引数据类型为long类型。 查询时输入collectTime : xxx。 采集时间,指日志被采集器ICAgent采集时的时间。 例如示例中的"collectTime":"1681896081334",转换成标准时间是2023-04-19 17:21:21 __time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为time创建字段索引,索引数据类型为long类型。该字段不支持查询。 日志时间,指的是日志在控制台页面展示的日志时间。 例如示例中的"__time__":"1681896081334",转换成标准时间是2023-04-19 17:21:21 日志时间默认使用采集时间,也支持自定义日志时间。 lineNum 整型 索引设置:开启索引后,日志服务默认为lineNum创建字段索引,索引数据类型为long类型。 行号(偏移量),用来排序日志。 非高精度日志会根据collectTime生成,默认是collectTime * 1000000 + 1,高精度日志就是用户上报的纳秒值。 例如示例中的"lineNum":"1681896081333991900"。 category 字符串 索引设置:开启索引后,日志服务默认为category创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入category: xxx。 日志类型,表示该日志的来源。 例如ICAgent采集的日志该字段为LTS,某云服务例如DCS上报的日志该字段为DCS。 clusterName 字符串 索引设置:开启索引后,日志服务默认为clusterName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterName: xxx。 集群名称,k8s场景下集群名称。 例如示例中的"clusterName":"epstest"。 clusterId 字符串 索引设置:开启索引后,日志服务默认为clusterId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterId: xxx。 集群ID,k8s场景下集群ID。例如示例中的"clusterId":"c7f3f4a5-xxxx-11ed-a4ec-0255ac100b07"。 nameSpace 字符串 索引设置:开启索引后,日志服务默认为nameSpace创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入nameSpace: xxx。 命名空间,k8s场景下命名空间。 例如示例中的"nameSpace":"monitoring"。 appName 字符串 索引设置:开启索引后,日志服务默认为appName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入appName: xxx。 组件名称,k8s场景下工作负载的名称。 例如示例中的"appName":"alertmanager-alertmanager"。 serviceID 字符串 索引设置:开启索引后,日志服务默认为serviceID创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入serviceID: xxx。 工作负载ID,k8s场景下工作负载ID。 例如示例中的"serviceID":"cf5b453xxxad61d4c483b50da3fad5ad"。 podName 字符串 索引设置:开启索引后,日志服务默认为podName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podName: xxx。 POD名称,k8s场景下POD名称。 例如示例中的"podName":"alertmanager-alertmanager-0"。 podIp 字符串 索引设置:开启索引后,日志服务默认为podIp创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podIp: xxx。 pod的ip,k8s场景下pod的IP地址。 例如示例中的"podIp":"10.0.0.145"。 containerName 字符串 索引设置:开启索引后,日志服务默认为containerName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入containerName: xxx。 容器名称,k8s场景下容器名称。 例如示例中的"containerName":"config-reloader"。 hostName 字符串 索引设置:开启索引后,日志服务默认为hostName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostName: xxx。 主机名称,ICAgent所在主机的名称。 例如示例中的"hostName":"epstest-xx518"。 hostId 字符串 索引设置:开启索引后,日志服务默认为hostId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostId: xxx。 主机ID,ICAgent所在主机的id,该id由ICAgent生成。例如示例中的"hostId":"318c02fe-xxxx-4c91-b5bb-6923513b6c34"。 hostIP 字符串 索引设置:开启索引后,日志服务默认为hostIP创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIP: xxx。 主机IP,日志采集器所在主机的ip(适用于ipv4场景) 例如示例中的"hostIP":"192.168.0.31"。 hostIPv6 字符串 索引设置:开启索引后,日志服务默认为hostIPv6创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIPv6: xxx。 主机IP,日志采集器所在主机的ip(适用于ipv6场景) 例如示例中的"hostIPv6":""。 pathFile 字符串 索引设置:开启索引后,日志服务默认为pathFile创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入pathFile: xxx。 文件路径,采集的日志文件的路径。 例如示例中的"pathFile":"stdout.log"。 content 字符串 索引设置:开启全文索引后,会使用全文索引定义的分词符对content字段的value进行分词;不支持将content字段配置到字段索引中。 日志原文, 例如示例中的"content":"level=error ts=2023-04-19T09:21:21.333895559Z" __receive_time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为__receive_time__创建字段索引,索引数据类型为long类型。 上报日志的服务端时间,相当于LTS采集端接收到日志的时间。 __client_time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为__client_time__创建字段索引,索引数据类型为long类型。 端侧日志的客户端上报时间。 _content_parse_fail_ 字符串 索引设置:开启索引后,日志服务默认为_content_parse_fail_创建字段索引,索引数据类型为string类型,分词字符为默认分词符。查询时输入_content_parse_fail_: xxx。 上报日志解析失败的日志内容。 __time 整型,Unix时间戳(毫秒) 不支持将__time字段配置到字段索引中。 不涉及。 logContent 字符串 不支持将logContent字段配置到字段索引中。 不涉及。 logContentSize 整型 不支持将logContentSize字段配置到字段索引中。 不涉及。 logIndexSize 整型 不支持将logIndexSize字段配置到字段索引中。 不涉及。 groupName 字符串 不支持将groupName字段配置到字段索引中。 不涉及。 logStream 字符串 不支持将logStream字段配置到字段索引中。 不涉及。
-
配置字段索引 创建字段索引时,最多支持添加500个字段。其中JSON类型字段,最多支持添加100个子字段。 设置快速分析采样条数,默认值10万条,最小值为10万条,最大值1000万条。通过采样快速统计字段值取值分布,并非对全量数据进行分析,采样条数越多分析数据越慢。 自动配置字段索引。在索引配置页面的字段索引下方,单击“自动配置”, 云日志服务LTS 会根据近15分钟的第一条日志内容或常见内置保留字段(例如hostIP、hostName、pathFile)自动生成字段索引,您可以根据自己的需要增加或者删除字段。 在索引配置页面单击“自动配置”时,默认获取最近15分钟的原始日志和内置字段的交集,LTS自动将原始日志和内置字段的交集、当前结构化字段、tag字段一起组成字段索引下方的表格数据。 若15分钟内没有原始日志,则获取hostIP、hostName、pathFile、结构化字段、tag字段结合共同组成字段索引下方的表格数据。 ECS接入选择结构化配置时,进入索引配置页面,若没有单击“自动配置”,则会自动加上如下字段:category、 hostName、hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。 CCE接入选择结构化配置时,进入索引配置页面,若没有单击“自动配置”,则会自动加上如下字段:category、 clusterId、 clusterName、 nameSpace、 podName、 containerName、 appName、 hostName、 hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。 单个添加字段索引。在索引配置页面的字段索引下方,单击“添加字段”,配置字段索引。具体的参数配置请参考表3。 字段索引的参数配置仅对该字段生效。 当添加的字段在日志内容中不存在时,则配置的该索引字段无效。 表3 自定义字段索引配置参数 参数 说明 字段名称 日志字段名称,例如示例日志中的level。 字段名称只支持输入英文、数字、中划线、下划线及小数点,不能以小数点开头或结尾且不能以双下线结尾。 日志服务默认会对部分内置保留字段开启字段索引,请参见内置保留字段。 若是内置字段,在字段名称后会显示“内置”字眼,方便用户识别。 执行操作 显示字段的添加状态:新增、不修改、修改、删除。索引字段有变动后,单击“修改对比”,即可查看原配置内容与修改后配置内容的差异。 显示新增的字段不支持修改执行操作。 修改类型、别名、大小写敏感、自定义分词符、特殊分词符、包含中文、快速分析时,会与原索引配置中的字段进行对比,若任意一项不同,则执行操作变为“修改”。 索引配置单击确定后,不会保存执行操作为“删除”的字段。 在字段索引下方的搜索框,支持按字段名称、执行操作、类型搜索字段。 勾选多个字段后,单击“批量配置”,支持批量配置如下操作:执行操作、类型、大小写敏感、自定义分词符、特殊分词符、包含中文、快速分析。 类型 日志字段值(Value)的数据类型,可选值为string、long、float、json。 long类型和float类型不支持设置大小写敏感、包含中文、分词符。 别名 支持为字段名称设置别名,合理设置字段别名可以显著提高日志的可读性、可维护性和查询效率。 设置别名后,只支持使用别名进行SQL搜索分析,不支持使用别名进行关键字搜索。 说明: 该功能仅支持华北-北京四、华北-乌兰察布一、华东-上海一、中国-香港、亚太-新加坡区域,其他局点暂不支持该功能。 大小写敏感 查询时是否区分英文字母的大小写。 打开大小写敏感开关,则查询时区分大小写。例如示例日志message字段中含有Know,那么您只能使用message:Know才能查询到该日志。 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志message字段中含有Know,那么您使用关键字message:KNOW和message:know都能查到该日志。 自定义分词符 根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。 如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。 例如示例日志message字段内容为:I Know 今天是星期一。 如果不设置任何分词符,整条日志被作为一个词I Know 今天是星期一,您只能通过完整字符串message:I Know 今天是星期一或模糊查询message:I Know 今天是*查找该日志。 如果设置分词符为空格,则原始日志被拆分为I、Know、今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如message:Know或message:今天是星期一。 特殊分词符 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 包含中文 查询时是否区分中英文。 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。 一元分词是指将中文字符串拆分为单个独立的中文字。 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。 关闭包含中文开关后,按照分词符的设置拆分所有内容。 例如示例日志message字段内容为:I Know 今天是星期一。 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为I、Know、今天是星期一,您可以通过message:Know或message:今天是星期一查找该日志。 打开包含中文开关后,日志服务后台分词器将日志拆分为I、Know、今、天、是、星、期、一,您通过message:Know或message:今天等词都可以查找到该日志。 快速分析 默认为开启状态,开启后,可以对字段值做采样统计,请参见创建快速分析。 快速分析的原理是对搜索命中的日志采样10万条进行数据统计,不是全量统计。 快速分析的字段长度最大为2000字节。 快速分析字段展示前100条数据。 操作 单击,删除添加的自定义字段。 完成后,单击“确定”。
-
配置全文索引 登录云日志服务控制台,进入“日志管理”页面。 单击目标日志组或日志流名称,进入日志流详情页面。 在“日志搜索”页面,单击快速分析旁边的进入“索引配置”页面。 图1 配置索引 在索引配置页面中,默认开启“全文索引”按钮,参考表2配置各参数信息。 表2 自定义全文索引配置参数 参数 说明 全文索引 打开全文索引开关,表示创建全文索引。 大小写敏感 查询时是否区分英文字母的大小写。 打开大小写敏感开关,则查询时区分大小写。例如示例日志含有Know,那么您只能使用Know才能查询到该日志。 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志含有Know,那么您使用关键字KNOW和know都能查到该日志。 包含中文 查询时是否区分中英文。 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。 一元分词是指将中文字符串拆分为单个独立的中文字。 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。 关闭包含中文开关后,按照分词符的设置拆分所有内容。 例如示例日志内容为: error,400,I Know 今天是星期一。 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为error、400、I、Know、今天是星期一,您可以通过error或今天是星期一查找该日志。 打开包含中文开关后,日志服务后台分词器将日志拆分为error、400、I、Know、今、天、是、星、期、一,您通过error或今天等词都可以查找到该日志。 分词符 根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。 如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。 单击“预览”,查看分词预览效果。 例如示例日志内容为: error,400,I Know 今天是星期一。 如果不设置任何分词符,整条日志被作为一个词error,400,I Know 今天是星期一,您只能通过完整字符串error,400,I Know 今天是星期一或模糊查询error,400,I K*查找该日志。 如果设置分词符为逗号(,),则原始日志被拆分为error、400、I Know 今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如error、400、I Kn*、今天是*。 如果设置分词符为逗号(,)和空格,则原始日志被拆分为error、400、I、Know、今天是星期一5个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如Know、今天是*。 特殊分词符 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 全文索引配置完成后,单击“确定”。 如果没有开通管道符方式,需要使用SQL 日志分析 功能,请开启“日志分析”。 图2 日志分析 “日志分析”功能即将下线,建议直接使用管道符方式进行分析,详细请参考日志搜索与分析(管道符方式-邀测)。 开通管道符方式后,新建的日志流在索引配置页面不显示“日志分析”开关。
-
索引类型 云日志服务LTS支持全文索引和字段索引,详细请参考表1。 表1 索引类型 索引类型 说明 全文索引 开启全文索引后,日志服务根据您设置的分词符将整条日志所有字段值拆分成多个词并构建索引。 用户上传的自定义标签(label)字段,不包含在全文索引中,如果您需要搜索自定义标签字段,请添加对应的字段索引。 LTS内置保留字段,不包含在全文索引中,您需要通过字段索引Key:Value的方式进行搜索,请参考内置保留字段。 字段索引 配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。 日志服务默认为部分内置保留字段创建字段索引,请参考内置保留字段。 如果您的某个字段单独配置了字段索引,那么该字段值的分词符以字段索引配置为准。 结构化配置中的快速分析列已被移除,如果您要使用快速分析功能,则必须配置字段索引且开启对应字段的快速分析按钮。 例如以下日志示例,如果配置了level和status两个字段索引,其中level是string类型,字段值是error,单独配置了分词符,status是long类型,不需要配置分词符;您可以使用level:error的方式精确搜索level字段值为error的所有日志。 例如以下日志示例,云日志服务LTS会默认为hostName、hostIP、pathFile这些内置保留字段创建字段索引。 以下是一条典型日志示例,content字段值是日志原文,使用分隔符逗号将原始日志解析成3个字段level、status、message。 示例日志中的hostName、hostIP、pathFile是常见的内置保留字段,详细内置字段请参考内置保留字段。 { "hostName":"epstest-xx518", "hostIP":"192.168.0.31", "pathFile":"stdout.log", "content":"error,400,I Know XX", "level":"error", "status":400, "message":"I Know XX" }
-
注意事项 全文索引属性和字段索引属性必须至少启用一种。 创建索引会产生索引流量和索引存储空间,费用说明请参见价格计算器。 关闭索引后,历史索引的存储空间将在当前日志流的数据保存时间到期后,自动被清除。 云日志服务默认已为部分内置保留字段创建字段索引,请参见内置保留字段。 不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。全文索引和字段索引互不影响。 索引配置修改后,对新写入的日志数据生效,历史日志数据不会生效。 在字段索引功能上线前,SQL分析支持的字段来自于云端结构化解析;在字段索引功能上线后,只要用户配置了字段索引,SQL分析支持的字段将来自于字段索引,因此修改字段索引可能对现有的可视化图表、仪表盘、SQL告警、定时SQL、Grafana接入中的查询结果产生影响,请谨慎操作!
-
版本更新说明 表1 版本更新说明 版本号 更新说明 1.0.24 支持更多region:华东-上海一、华南-广州。 1.0.23 新增支持快应用上报。 1.0.21 废弃config方法,优先使用new SDK创建一个新的实例。 去除代码中对三方包的依赖和存在的中文符号。 1.0.19 修改时间阈值的范围从1-60改为1-1800,其默认值从30改为3。 1.0.18 调整日志级别等级。 支持labels嵌套。 1.0.15 新增多实例上报。
-
示例代码 const miniSDK = require('lts-mini-sdk').default; // import miniSDK from 'lts-mini-sdk'; App({ onLaunch(options) { // 初始化 const ddmini = new miniSDK({ // 上报region region: string, // 华为云项目ID projectId: string, // 上报地址 url: string, // LTS日志组ID groupId: string, // LTS日志流ID streamId: string, // 调试日志等级 debug: string, // 当前小程序所属平台 platform: 'dd', // 上报条数阈值 cacheThreshold: number, // 上报时间阈值 timeInterval: number, }); // 立即上报单条带标签 ddmini.reportImmediately({ 'name': 'xiaoming', 'age': 18 }, { 'key': 'value' }); // 立即上报单条 不带标签 ddmini.reportImmediately([{ key: 'value', number: 1, array: [], json: { json: 'json' } }, { 'key': 'value' }]); // 缓存上报多条 带标签 ddmini.report([{ 'name': 'xiaohong', 'age': 18 }, { 'name': 'xiaobai', 'age': 20 }], { 'key': 'value' }); // 缓存上报多条 不带标签 ddmini.report([{ 'name': 'xiaohong', 'age': 18 }, { key: 'value', number: 1, array: [], json: { json: 'json' } }]); // 缓存上报多条 带多个标签(最多50个) ddmini.report([{ 'name': 'xiaohong', 'name': 'xiaolan' }], {'version': '1.0.0', 'render': 'mini', 'link': '/', from: 'dd'}); } });
-
配置参数说明 表4 初始化参数说明 参数名称 类型 是否必填 默认值 描述 projectId NSString 必填 - 华为云账号的项目ID。 accessKey NSString 必填 - 华为云账号的访问密钥,简称AK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 secretKey NSString 必填 - 华为云账号的秘密访问密钥,简称SK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 region NSString 必填 - LTS的服务区域。 groupId NSString 必填 - LTS的日志组ID。 streamId NSString 必填 - LTS的日志流ID。 url NSString 选填 nil 用于上报的公网地址 域名 ,支持带端口号,比如:https://lts-access.cn-north-4.myhuaweicloud.com:443;如未设置url,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com cacheThreshold NSUInteger 选填 200条 当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。 timeInterval NSUInteger 选填 3秒 定时器每隔该值会触发上报,取值范围为1-1800秒。 reportWhenEnterBackgroundEnabled BOOL 选填 YES 是否开启APP切后台上报功能。 reportWhenAPPLaunchEnabled BOOL 选填 NO 是否开启APP启动时上报功能。如需开启,请在UIApplicationDidFinishLaunchingNotification通知发送前完成配置。
-
开启调试 在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。在初始化LTSSDK之前,调用类方法+(void)setLogLevel:(LTSLoggerLevel)logLevel设置调试级别:Debug、Info、Warn、Error、Off。 Objective-C语言示例代码: #ifdef DEBUG [LTSSDK setLogLevel:LTSLoggerLevelDebug]; #endif
-
版本更新说明 SDK如何处理个人信息请参考华为云日志服务移动端日志采集SDK隐私声明。 您集成和使用的SDK时需要遵从个人信息保护基本要求,详情请参考华为云日志服务移动端日志采集SDK开发者合规指南。 表1 版本更新说明 版本号 下载地址 检验信息下载地址 更新说明 系统 1.0.27 单击下载 单击下载 优化性能。 iOS10、Xcode11及以上。 1.0.26 单击下载 单击下载 优化性能。 iOS10、Xcode11及以上。 1.0.24 单击下载 单击下载 支持更多region:华东-上海一、华南-广州。 优化内存使用、日志发送等。 iOS10、Xcode11及以上。 1.0.21 单击下载 单击下载 优化初始化函数initWithConfig。 为配置函数config添加废弃声明。 iOS10、Xcode11及以上。 1.0.19 单击下载 单击下载 调整配置项阈值。 修复兼容性问题。 iOS10、Xcode11及以上。 1.0.18 单击下载 单击下载 增加设置调试日志级别接口:setLogLevel。 在控制台输出配置项、上报接口参数、请求发送内容。 上报接口参数labels支持嵌套。 请求发送控制、数据库大小限制等优化。 iOS10、Xcode11及以上。 1.0.15 单击下载 单击下载 首次发布,提供四个接口:初始化 initWithConfig、配置 config、上报日志 report、立即上报日志 reportImmediately。 iOS10、Xcode11及以上。
-
创建多台跳板机通过ELB进行负载均衡 单跳板机可能发生单点故障带来运维的不稳定性,此时可以创建多个跳板机并通过 ELB负载均衡 将流量分摊到不同的跳板机上,提高接入的可靠性。 创建Linux操作系统的ECS弹性云服务器作为跳板机。 登录弹性云服务器控制台,创建一个Linux操作系统的ECS。创建ECS的具体步骤,请参考购买弹性云服务器。如果您已有符合条件ECS,可直接使用作为跳板机,不需要再次创建。 推荐CentOS 6.5 64bit及其以上版本的镜像, 最低规格为1vCPUs | 1GB,推荐规格为2vCPUs | 4GB。 如果跳板机使用公网与区域外主机互通,那么需要开通EIP;如果跳板机使用云专线VPC对等连接方式与区域外主机互通,那么不需要开通EIP。 跳板机的区域要与LTS当前Region一致。 添加跳板机ECS使用的安全组规则,开放入方向对应端口,保证区域外主机到跳板机数据连通。 登录弹性云服务器控制台,查看弹性云服务器列表,找到作为跳板机的弹性云服务器。 单击跳板机名称进入ECS详情,单击安全组名称,进入安全组详情页。 在该安全组详情页,选择“入方向规则”页签,单击“添加规则 ”。请按照表4设置端口,更多参数可根据业务网络需求填写。详情请参考添加安全组规则。 表4 安全组规则 策略 协议 端口 说明 允许 TCP 8149,8102,8923,30200,30201,80 ICAgent发送数据到跳板机的端口列表,保证非本区域主机到跳板机ECS的数据连通性。 返回弹性云服务器列表,找到1中作为跳板机的弹性云服务器,可以查看到私有IP及弹性IP(如跳板机开通EIP,此处会显示弹性IP)。 图5 复制私有IP 登录云日志服务控制台,在左侧导航栏选择“主机管理 ”,单击“安装ICAgent”,在“安装ICAgent”页面中输入跳板机私有IP,生成跳板机转发命令。跳板机私有IP是指VPC内网IP。 在“安装ICAgent”页面单击“复制命令”,复制SSH Tunnel转发命令。 ssh -f -N -L {跳板机私有IP}:8149:{LTS上报IP}:8149 -L {跳板机私有IP}:8102:{LTS上报IP}:8102 -L {跳板机私有IP}:8923:{LTS上报IP}:8923 -L {跳板机私有IP}:30200:{LTS上报IP}:30200 -L {跳板机私有IP}:30201:{LTS上报IP}:30201 -L {跳板机私有IP}:80:icagent-{region}.{obs_domain}:80 {跳板机私有IP} 以root用户登录跳板机,执行复制的SSH Tunnel转发命令。 重复以上步骤创建多个跳板机,并且将多个跳板机放入同一个VPC中。即在创建弹性云服务器,进行网络配置时,选择同一个虚拟私有云。 登录弹性负载均衡控制台,创建弹性负载均衡ELB。具体请参见创建弹性负载均衡,在创建时需注意以下几点。 创建ELB,在网络配置时,选择与跳板机ECS相同的VPC。 新建弹性公网IP,ELB的弹性公网IP将作为跳板机连接IP。 带宽根据业务量申请,并进行适配。 分别为TCP的端口30200、30201、8149、8923、8102、80添加监听器。具体请参见添加TCP监听器。 创建一个后端服务器组,并将所有的跳板机放置在同一个后端服务器组,具体请参见添加后端云服务器。 返回云日志服务控制台,在“安装ICAgent”页面,将ELB的弹性公网IP填写到“跳板机连接IP”中,复制安装命令,在对应区域外主机上执行即可。
-
使用限制 Linux环境:ICAgent安装支持的Linux操作系统。 Windows环境:仅支持在如下64位系统的Windows环境中安装ICAgent。 Windows Server 2016 R2 Datacenter Windows Server 2016 R2 Standard Windows Server 2016 Datacenter English Windows Server 2016 R2 Standard English Windows Server 2012 R2 Datacenter Windows Server 2012 R2 Standard Windows Server 2012 Datacenter English Windows Server 2012 R2 Standard English Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Standard Windows Server 2008 Enterprise English Windows Server 2008 R2 Standard English Windows环境不支持在云日志服务的主机页面对ICAgent进行升级和卸载操作,只支持日志采集功能。如果需要使用新版本,请先卸载旧版本ICAgent,再安装新版本ICAgent即可。
-
示例代码 const miniSDK = require('lts-mini-sdk').default; // import miniSDK from 'lts-mini-sdk'; App({ onLaunch(options) { // 初始化 const baidumini = new miniSDK({ // 上报region region: string, // 华为云项目ID projectId: string, // 上报地址 url: string, // LTS日志组ID groupId: string, // LTS日志流ID streamId: string, // 日志所属组 group: string, // 调试日志等级 debug: string, // 当前小程序所属平台 platform: string, // 上报条数阈值 cacheThreshold: number, // 上报时间阈值 timeInterval: number, }); // 立即上报单条带标签 baidumini.reportImmediately({ 'name': 'xiaoming', 'age': 18 }, { 'key': 'value' }); // 立即上报单条 不带标签 baidumini.reportImmediately([{ key: 'value', number: 1, array: [], json: { json: 'json' } }, { 'key': 'value' }]); // 缓存上报多条 带标签 baidumini.report([{ 'name': 'xiaohong', 'age': 18 }, { 'name': 'xiaobai', 'age': 20 }], { 'key': 'value }); // 缓存上报多条 不带标签 baidumini.report([{ 'name': 'xiaohong', 'age': 18 }, { key: 'value', number: 1, array: [], json: { json: 'json' } }]); // 缓存上报多条 带多个标签(最多50个) baidumini.report([{ 'name': 'xiaohong', 'name': 'xiaolan' }], {'version': '1.0.0', 'render': 'mini', 'link': '/', from: 'baidu'}); } });
-
版本更新说明 表1 版本更新说明 版本号 更新说明 1.0.24 支持更多region:华东-上海一、华南-广州。 1.0.23 新增支持快应用上报。 1.0.21 废弃config方法,优先使用new SDK创建一个新的实例。 去除代码中对三方包的依赖和存在的中文符号。 1.0.19 修改时间阈值的范围从1-60改为1-1800,其默认值从30改为3。 1.0.18 调整日志级别等级。 支持labels嵌套。 1.0.15 新增多实例上报。
-
接入调试 在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。 需要通过调用LTSSDK的静态方法来修改,SDK支持Debug、Info、Warning 、 Error 和 Off 5个级别的默认为静默输出(Off)。5个级别分别对应的参数:LogLevel.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.OFF。代码示例如下: LTSSDK.setLogLevel(LogLevel.DEBUG)
-
配置参数说明 表4 初始化参数说明 参数名称 类型 是否必填 默认值 描述 projectId String 必填 - 华为云账号的项目ID。 accessKey String 必填 - 华为云账号的访问密钥,简称AK。 认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 说明: 认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 secretKey String 必填 - 华为云账号的秘密访问密钥,简称SK。注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 region String 必填 - LTS的服务区域。 groupId String 必填 - LTS的日志组ID。 streamId String 必填 - LTS的日志流ID。 url String 选填 null 用于上报的公网地址域名,如未设置,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com cacheThreshold Long 选填 200条 当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。 timeInterval Long 选填 3秒 定时器每隔该值会触发上报,取值范围为1-1800秒。 isReportBackground boolean 选填 true 是否开启APP切入后台时上报功能。 isReportLaunch boolean 选填 false 是否开启APP启动时上报功能。
-
版本更新说明 SDK如何处理个人信息请参考华为云日志服务移动端日志采集SDK隐私声明。 您集成和使用的SDK时需要遵从个人信息保护基本要求,详情请参考华为云日志服务移动端日志采集SDK开发者合规指南。 表1 版本更新说明 版本号 下载地址 检验信息下载地址 更新说明 系统 1.0.28 单击下载 单击下载 修复了1.0.26版本以来工程配置导致的配置冲突。 Android 7 及以上 0.0.5 请通过mavenCentral下载。 - 功能与1.0.28版本相同,可支持kotlin 1.3.x。 Android 7 及以上。 1.0.27 单击下载 单击下载 优化了缓存效率。 Android 7 及以上 0.0.4 请通过mavenCentral下载。 - 功能与1.0.27版本相同,可支持kotlin 1.3.x。 Android 7 及以上。 1.0.26 单击下载 单击下载 修复了因异步修改入参导致数据异常的问题。 Android 7 及以上。 1.0.25 单击下载 单击下载 增强代码强壮性,添加参数保护。 Android 7 及以上。 1.0.24 单击下载 单击下载 支持更多region:华东-上海一、华南-广州。 修改了程序目录,修改为com.cloud.lts.*。 Android 7 及以上。 1.0.21 单击下载 单击下载 废弃setconfig方法,使用LTSSDK的构造方法代替。 Android 7 及以上。 1.0.19 单击下载 单击下载 修改了上报时间间隔阈值。 修复了修改配置信息后导致无法获取缓存的问题。 Android 7 及以上。 1.0.18 单击下载 单击下载 增强代码强壮性,修复多实例时可能会产生的崩溃。 修复最低 Android API 支持版本定义错误的问题。 增加设置调试日志级别接口:setLogLevel。 修改了 日志发送的入参 label 的类型,支持多层嵌套。 日志发送入参 content 支持数组类型,方便使用。 添加缓存存储条目最大值支持,如果超过会丢弃后再存储。 修改了请求失败时的控制策略,支持递进式等待。 对本地错误日志输出做了整理。 Android 7 及以上。 1.0.17 单击下载 单击下载 首次发布,提供四个接口:初始化、配置config、上报日志report、立即上报日志reportImmediately。 Android 7 及以上。
-
准备工作 注册华为云并实名认证。 如果您已有一个华为账户,请跳到下一个任务。如果您还没有华为账户,请参考以下步骤创建。 打开华为云官网,单击“注册”。 根据提示信息完成注册,详细操作请参见如何注册华为云管理控制台的用户?。 注册成功后,系统会自动跳转至您的个人信息界面。 参考实名认证完成个人或企业账号实名认证。 为账户充值。 使用事件转储至OBS功能会产生额外费用,您需要确保账户有足够金额。 关于OBS服务的价格,请参见 对象存储服务 价格详情。 关于充值,请参见如何给华为账户充值。 为用户添加操作权限。 如果您是以主账号登录华为云,请跳到下一个任务。 如果您是以 IAM 用户登录华为云,需要联系 CTS 管理员(主账号或admin用户组中的用户)对IAM用户授予CTS FullAccess权限。授权方法请参见给IAM用户授权。
-
在LTS日志流中查看历史事件记录 您已经配置了system追踪器将事件转储至LTS日志流,系统立即以新的规则开始记录操作,您现在可以在LTS日志流中查看历史事件文件。 在追踪器页面,system追踪器的“存储服务”一栏,会显示您在配置转储时设置的LTS日志流“CTS/system-trace”,单击日志流名称,页面跳转到云日志服务控制台上“CTS/system-trace”日志流界面。 图4 单击日志流名称 在“CTS/system-trace”日志流界面,您可以查看历史操作事件日志信息。 关于 云审计 服务事件结构的关键字段详解,请参见事件结构和事件样例。 图5 system-trace日志流页面 单击按钮,您可以下载日志文件到本地。
-
使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS)或云日志服务(LTS),才可在OBS桶或LTS日志组里面查看历史事件信息。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。 CTS新版事件列表不显示数据类审计事件,您需要在旧版事件列表查看数据类审计事件。 云审计控制台对用户的操作事件日志保留7天,过期自动删除,不支持人工删除。
-
配置方法 在编排流水线任务时,添加“第三方接口调用v2”插件。 图1 第三方接口调用v2插件 根据需要配置任务参数,参数说明如下: 参数项 说明 名称 插件名称。 支持中文、大小写英文字母、数字、“-”、“_”、“,”、“;”、“:”、“.”、“/”、“(”、“)”、“(”、“)”和空格。 至少输入一个字符。 请求方式 可选择GET、POST、PATCH、PUT或DELETE。 请求路径 能被公网调用的接口,需要证书校验。 请求头 请求头,添加键值对。 请求参数 请求参数,添加键值对。 请求体 如果请求方式是POST、PATCH或PUT,则输入json格式的body体。 输出 根对象名是response,可输出多个output。 如果要拿到具体的请求返回码,并且输出的key是code,示例如下。 如果返回的请求头中有date字段,并且需要拿到date时间的值,则输出处添加示例如下。 如果要输出整个body,示例如下 如果返回的json体如下,并且要取field对应的value值,示例如下。 { "result": { "field": "value", "field1": "value1" } } 插件运行完毕,如果想使用输出output,请参考流水线上下文。
-
其他操作 解决方案提供商可以驳回客户的代付订单申请,驳回后,客户可以自行支付订单。 单个驳回 选择“待付订单”页签,单击订单“操作”列的“驳回”。 在系统弹出“驳回”对话框中,填写“驳回原因”,确认驳回的订单信息,单击“确定”。 系统提示驳回成功。 批量驳回 选择“待付订单”页签,勾选所有需要驳回的订单,单击“批量驳回”。 在系统弹出“驳回”对话框中,填写“驳回原因”,确认驳回的订单信息,单击“确定”。 系统提示驳回成功。
-
codearts-extension.json文件定义 codearts-extension.json文件示例: { "type": "Task", "name": "demo_plugin", "friendlyName": "示例插件", "description": "这是一个示例插件", "category": "Gate", "version": "0.0.2", "versionDescription": "0.0.1初始化版本", "dataSourceBindings": [], "inputs": [ { "name": "samplestring", # 如插件业务脚本中使用${samplestring}获取运行者在流水线上配置的值 "type": "input", # 不同类型信息对应不同展示功能,可选项见下文 "description": "Sample String", # input条目的描述信息,用于描述其值含义 "defaultValue": "00", # 默认值,required属性为false时,如不在流水线上重新输入,则默认使用此值 "required": true, # true则流水线编辑时必须重新填值,false则不填使用默认值 "label": "测试输入框", # input条目在流水线编辑页面显示的名称信息 "validation": { "requiredMessage": "请输入值", # (可选) 如required字段为true,未填写时的提示信息 "regex": "^[a-zA-Z0-9-_\\u4e00-\\u9fa5]{1,32}$", #(可选)可填写正则校验的内容 "regexMessage": "类型错误" # (可选) 如正则校验失败的提示信息 } } ], "execution": { "type": "Shell", "target": "scripts/execution.sh" }, "outputs": [{ "name": "okey", # 输出名称 "type": "output", # 输出类型,output/metrics "description": "描述", "prop": { "defaultValue": "123" # 默认值 } }, { "name": "mkey", "type": "metrics", "description": "描述", "prop": { "defaultValue": "213", "group": "213" # 对应准出规则中的分组名称 } } ] } codearts-extension.json文件参数说明如下: 表2 codearts-extension.json文件参数说明 参数项 说明 type 填写固定值“Task”,标识为一个插件类型。 name 请与注册插件时页面填写的基本信息“唯一标识”字段一致。 friendlyName 请与注册插件时页面填写的基本信息“插件名称”字段一致。 category 请与注册插件时页面填写的基本信息“插件类型”字段一致,包括以下可选值: Build:对应“构建”插件类型。 Test:对应“测试”插件类型。 Gate:对应“代码检查”插件类型。 Normal:对应“通用”插件类型。 Deploy:对应“部署”插件类型。 version 插件版本,支持填写3组0-99的数字,如需新增正式版本,请修改此字段。 description 插件的描述信息。 versionDescription 此版本插件的描述信息,建议体现每个版本的差异点。 dataSourceBindings 此字段暂时未启用,请将值设置为“[]”。 inputs 插件输入内容,对应流水线页面插件展示格式,其值可在业务脚本中通过引用环境变量的方式引用。 execution 业务插件执行内容,其中type字段为业务脚本语言类型,target字段为执行文件入口,建议放在scripts文件夹下。 outputs 插件输出内容,在插件运行结束后写入此处定义值,可对应用作门禁指标metrics,不同的展示结果output。
-
准备自定义插件包 插件包结构 图1 插件包结构 文件结构 extension.zip # 插件zip包 | -- scripts # (可选)脚本文件夹,用于存放包含插件执行逻辑的脚本 | | -- xxx # 包含插件执行逻辑的脚本 | -- i18n # (可选)多语言,存放所有文案信息 | | -- zh-cn # 中文环境内容 | | -- resources.json # 对应语言的国际化资源 | | -- en-us # 英文环境内容 | | -- resources.json # 对应语言的国际化资源 | -- codearts-extension.json # (必选)插件执行定义文件,Json格式,包括扩展插件的基本信息+input+execution 注意事项 插件包必须为.zip后缀。 插件包根目录下必须包含元数据文件codearts-extension.json,codearts-extension.json文件介绍请参考codearts-extension.json文件定义。 resources.json文件只能使用utf-8进行编码,不支持中文标点符号与其他编码形式,若输入则为乱码展示。
-
配置方法 在编排流水线任务时,添加“创建仓库标签”插件。 图1 创建仓库标签 根据需要配置任务参数,参数说明如下: 参数项 说明 名称 插件名称。 支持中文、大小写英文字母、数字、“-”、“_”、“,”、“;”、“:”、“.”、“/”、“(”、“)”、“(”、“)”及空格。 至少输入一个字符。 标签名 标签名称。 仓库 选择对应的代码仓。 单击,开启“标签存在时继续”,若创建的标签在代码仓中已存在,则不报错,继续运行流水线,否则执行失败。
-
数据库连接 使用DDS时,可能会遇到因为Mongod/dds mongos的连接数满了,导致客户端无法连接的问题。在Mongod/dds mongos的服务端,收到一个新的连接由一个单独的线程来处理,每个线程配置了1MB的栈空间,当网络连接数太多时,过多的线程会导致上下文切换开销变大,同时内存开销也会上涨。 客户端连接数据库的时候,要计算业务一共有多少个客户端,每个客户端配置的连接池大小是多少,总的连接数不要超过当前实例能承受的最大连接数的80%。 客户端与数据库的连接应尽量保持相对稳定的状态,每秒新增连接数建议保持在10以下。 建议客户端的连接超时时间至少设置为最大业务执行时长的3倍。 对于副本集实例,客户端需要同时配置主备节点的IP地址;对于集群实例,至少配置两个dds mongos的IP地址。 DDS默认提供rwuser用户,使用rwuser用户登录时认证库必须是admin。
-
性能相关 规范 业务程序禁止执行全表扫描的查询。 执行查询时,只选择需要返回的字段,不需要的字段不要返回。从而减少网络和进程处理的负载,修改数据时,只修改变化需要修改的字段,不要整个对象直接存储全部修改。 避免使用$not。DDS并不会对缺失的数据进行索引,因此$not的查询条件将会要求在一个结果集中扫描所有记录。如果$not是唯一的查询条件,会对集合执行全表扫描。 用$and时把匹配最少结果的条件放在最前面,用$or时把匹配最多结果的条件放在最前面。 单个实例中,数据库的总的个数不要超过200个,总的集合个数不要超过500个。集合数量过多会导致内存压力变高,并且集合数量多会导致重启以及主备倒换性能变差,影响紧急情况下的高可用性能。 业务上线前,一定要对数据库进行性能压测,评估业务峰值场景下,对数据库的负载情况。 禁止同时执行大量并发事务,且长时间不提交。 业务正式上线前, 所有的查询类别,都应该先执行查询计划检查查询性能。 建议 每个连接在后台都是由一个单独线程处理,每个线程会分配1MB的栈内存。所以连接数不宜过多,否则会占用过多的内存。 使用连接池,避免频繁地建立连接和断开连接,否则会导致CPU过高。 减少磁盘读写:避免使用不必要的upsert命令,避免查询不必要的数据。 优化数据分布:对数据进行分片,同时分散热点数据,均衡地使用实例资源。如何进行数据分片,请参见设置数据分片。 减少锁冲突:避免对同一个Key过于频繁地操作。 减少锁等待:避免前台创建索引。 注意 开发过程中对集合的每一个操作都要通过执行explain()检查其执行计划,如: db.T_DeviceData.find({"deviceId":"ae4b5769-896f"}).explain(); db.T_DeviceData.find({"deviceId":"77557c2-31b4"}).explain("executionStats"); 对于查询而言,因为覆盖查询不需要读取文档,而是直接从索引中返回结果,这样的查询性能好,所以尽可能使用索引覆盖查询。如果explain()的输出显示indexOnly字段为真,则说明这个查询就被一个索引覆盖。 执行计划解析: 看执行时间:executionStats.executionStages.executionTimeMillisEstimate和executionStats.executionStages.inputStage. executionTimeMillisEstimate时间越短越好。 executionStats.executionTimeMillis表示执行计划选择和执行的所有时间。 executionStats.executionStages.executionTimeMillisEstimate表示执行计划的执行完成时间。 executionStats.executionStages.inputStage. executionTimeMillisEstimate表示执行计划下的子阶段执行完成时间。 看扫描条数:三个条目数相同为最佳。 executionStats. nReturned表示匹配查询条件的文档数。 executionStats .totalKeysExamined表示索引扫描条目数。 executionStats .totalDocsExamined表示文档扫描条目数。 看Stage状态,性能较好的Stage状态组合如下。 Fetch+IDHACK Fetch+ixscan Limit+(Fetch+ixscan) PROJECTION+ixscan 表1 状态说明 状态名称 描述 COLLSCAN 全表扫描 SORT 内存中进行排序 IDHACK 根据_id进行查询 TEXT 全文索引 COUNTSCAN 未用索引计数 FETCH 索引扫描 LIMIT 使用Limit限制返回数 SUBPLA 未用索引的$or查询阶段 PROJECTION 限定返回字段时stage的返回 COUNT_SCAN 使用索引计数
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- ...
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333