Alarm policy description
Used by actions: DescribeAlarms.
Name | Type | Description |
---|---|---|
Name | String | Alarm policy name |
AlarmTargets | Array of AlarmTargetInfo | Monitoring object list |
MonitorTime | MonitorTime | Monitoring task running time point |
Condition | String | Trigger condition |
TriggerCount | Integer | Alarm persistence cycle. An alarm will be triggered only after the corresponding trigger condition is met for the number of times specified by TriggerCount . Value range: 1–10. |
AlarmPeriod | Integer | Repeated alarm interval in minutes. Value range: 0–1440. |
AlarmNoticeIds | Array of String | List of associated alarm notification templates |
Status | Boolean | Enablement status |
AlarmId | String | Alarm policy ID |
CreateTime | String | Creation time |
UpdateTime | String | Last update time |
MessageTemplate | String | Custom notification template Note: this field may return null , indicating that no valid values can be obtained. |
CallBack | CallBackInfo | Custom callback template Note: this field may return null , indicating that no valid values can be obtained. |
Analysis | Array of AnalysisDimensional | Multi-Dimensional analysis settings Note: this field may return null , indicating that no valid values can be obtained. |
Alarm notification template type
Used by actions: DescribeAlarmNotices.
Name | Type | Description |
---|---|---|
Name | String | Alarm notification template name |
Type | String | Alarm template type. Valid values:Trigger : alarm triggeredRecovery : alarm clearedAll : alarm triggered and alarm cleared |
NoticeReceivers | Array of NoticeReceiver | Information of the recipient in alarm notification template Note: this field may return null , indicating that no valid values can be obtained. |
WebCallbacks | Array of WebCallback | Callback information of alarm notification template Note: this field may return null , indicating that no valid values can be obtained. |
AlarmNoticeId | String | Alarm notification template ID Note: this field may return null , indicating that no valid values can be obtained. |
CreateTime | String | Creation time Note: this field may return null , indicating that no valid values can be obtained. |
UpdateTime | String | Last update time Note: this field may return null , indicating that no valid values can be obtained. |
Monitoring object
Used by actions: CreateAlarm, ModifyAlarm.
Name | Type | Required | Description |
---|---|---|---|
TopicId | String | Yes | Log topic ID |
Query | String | Yes | Query statement |
Number | Integer | Yes | Monitoring object number, which is incremental from 1. |
StartTimeOffset | Integer | Yes | Offset of the query start time from the alarm execution time in minutes. The value cannot be positive. Value range: -1440–0. |
EndTimeOffset | Integer | Yes | Offset of the query end time from the alarm execution time in minutes. The value cannot be positive and must be greater than StartTimeOffset . Value range: -1440–0. |
LogsetId | String | Yes | Logset ID |
Alarm object
Used by actions: DescribeAlarms.
Name | Type | Description |
---|---|---|
LogsetId | String | Logset ID |
LogsetName | String | Logset name |
TopicId | String | Log topic ID |
TopicName | String | Log topic name |
Query | String | Query statement |
Number | Integer | Monitoring object number |
StartTimeOffset | Integer | Offset of the query start time from the alarm execution time in minutes. The value cannot be positive. Value range: -1440–0. |
EndTimeOffset | Integer | Offset of the query end time from the alarm execution time in minutes. The value cannot be positive and must be greater than StartTimeOffset . Value range: -1440–0. |
Multi-Dimensional analysis dimension
Used by actions: CreateAlarm, DescribeAlarms, ModifyAlarm.
Name | Type | Required | Description |
---|---|---|---|
Name | String | Yes | Analysis name |
Type | String | Yes | Analysis type. Valid values: query , field |
Content | String | Yes | Analysis content |
Callback configuration
Used by actions: CreateAlarm, DescribeAlarms, ModifyAlarm.
Name | Type | Required | Description |
---|---|---|---|
Body | String | Yes | Body during callback |
Headers | Array of String | No | Headers during callbackNote: this field may return null , indicating that no valid values can be obtained. |
Information of the CKafka instance to ship to
Used by actions: CreateConsumer, DescribeConsumer, ModifyConsumer.
Name | Type | Required | Description |
---|---|---|---|
Vip | String | Yes | CKafka VIP |
Vport | String | Yes | CKafka Vport |
InstanceId | String | Yes | CKafka instance ID |
InstanceName | String | Yes | CKafka instance name |
TopicId | String | Yes | CKafka topic ID |
TopicName | String | Yes | CKafka topic name |
Column attribute of log analysis
Used by actions: GetAlarmLog, SearchLog.
Name | Type | Description |
---|---|---|
Name | String | Column name |
Type | String | Column attribute |
Compression configuration of shipped log
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
Format | String | Yes | Compression format. Valid values: gzip , lzop , none (no compression) |
Collection rule configuration information
Used by actions: DescribeConfigs, DescribeMachineGroupConfigs.
Name | Type | Description |
---|---|---|
ConfigId | String | Collection rule configuration ID |
LogFormat | String | Log formatting method Note: this field may return null , indicating that no valid values can be obtained. |
Path | String | Log collection path Note: this field may return null , indicating that no valid values can be obtained. |
LogType | String | Type of the log to be collected. Valid values: json_log : log in JSON format; delimiter_log : log in delimited format; minimalist_log : minimalist log; multiline_log : log in multi-line format; fullregex_log : log in full regex format. Default value: minimalist_log Note: this field may return null , indicating that no valid values can be obtained. |
ExtractRule | ExtractRuleInfo | Extraction rule. If ExtractRule is set, LogType must be setNote: this field may return null , indicating that no valid values can be obtained. |
ExcludePaths | Array of ExcludePathInfo | Collection path blocklist Note: this field may return null , indicating that no valid values can be obtained. |
Output | String | Log topic ID (TopicId) of collection configuration |
UpdateTime | Timestamp | Update time Note: this field may return null , indicating that no valid values can be obtained. |
CreateTime | Timestamp | Creation time |
UserDefineRule | String | Custom parsing string Note: this field may return null , indicating that no valid values can be obtained. |
Shipping content
Used by actions: CreateConsumer, DescribeConsumer, ModifyConsumer.
Name | Type | Required | Description |
---|---|---|---|
EnableTag | Boolean | Yes | Whether to ship tag information Note: This field may return null , indicating that no valid value was found. |
MetaFields | Array of String | Yes | List of metadata to ship. Only __SOURCE__, __FILENAME__, and __TIMESTAMP__ are supported. Note: This field may return null, indicating that no valid values can be obtained. |
TagJsonNotTiled | Boolean | No | This parameter is required if EnableTag is true , and is used to specify whether the tag information is JSON tiled. Valid values: true (not tiled); false (tiled)Note: This field may return null , indicating that no valid value was found. |
TimestampAccuracy | Integer | No | Shipping timestamp precision in seconds (default) or milliseconds Note: This field may return null, indicating that no valid values can be obtained. |
Format configuration of shipped log content
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
Format | String | Yes | Content format. Valid values: json , csv |
Csv | CsvInfo | No | CSV format content description Note: this field may return null , indicating that no valid values can be obtained. |
Json | JsonInfo | No | JSON format content description Note: this field may return null , indicating that no valid values can be obtained. |
Parquet | ParquetInfo | No | Parquet format descriptionNote: This field may return null , indicating that no valid value can be obtained. |
CSV content description
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
PrintKey | Boolean | Yes | Whether to print key on the first row of the CSV file |
Keys | Array of String | Yes | Names of keys Note: this field may return null , indicating that no valid values can be obtained. |
Delimiter | String | Yes | Field delimiter |
EscapeChar | String | Yes | Escape character used to enclose any field delimiter in field content. You can enter only a single quotation mark, double quotation mark, or an empty string. |
NonExistingField | String | Yes | Content used to populate non-existing fields |
Blocklist path information
Used by actions: CreateConfig, DescribeConfigs, DescribeMachineGroupConfigs, ModifyConfig.
Name | Type | Required | Description |
---|---|---|---|
Type | String | Yes | Type. Valid values: File , Path |
Value | String | Yes | Specific content corresponding to Type |
Log export information
Used by actions: DescribeExports.
Name | Type | Description |
---|---|---|
TopicId | String | Log topic ID |
ExportId | String | Log export task ID |
Query | String | Log export query statement |
FileName | String | Log export filename |
FileSize | Integer | Log file size |
Order | String | Log export time sorting |
Format | String | Log export format |
Count | Integer | Number of logs to be exported |
Status | String | Log download status. Valid values: Processing : exporting; Complete : completed; Failed : failed; Expired : expired (3-day validity period). |
From | Integer | Log export start time |
To | Integer | Log export end time |
CosPath | String | Log export path |
CreateTime | String | Log export creation time |
Log extraction rule
Used by actions: CreateConfig, DescribeConfigs, DescribeMachineGroupConfigs, ModifyConfig.
Name | Type | Required | Description |
---|---|---|---|
TimeKey | String | No | Time field key name. time_key and time_format must appear in pairsNote: this field may return null , indicating that no valid values can be obtained. |
TimeFormat | String | No | Time field format. For more information, please see the output parameters of the time format description of the strftime function in C languageNote: this field may return null , indicating that no valid values can be obtained. |
Delimiter | String | No | Delimiter for delimited log, which is valid only if log_type is delimiter_log Note: this field may return null , indicating that no valid values can be obtained. |
LogRegex | String | No | Full log matching rule, which is valid only if log_type is fullregex_log Note: this field may return null , indicating that no valid values can be obtained. |
BeginRegex | String | No | First-Line matching rule, which is valid only if log_type is multiline_log or fullregex_log Note: this field may return null , indicating that no valid values can be obtained. |
Keys | Array of String | No | Key name of each extracted field. An empty key indicates to discard the field. This parameter is valid only if log_type is delimiter_log . json_log logs use the key of JSON itselfNote: this field may return null , indicating that no valid values can be obtained. |
FilterKeyRegex | Array of KeyRegexInfo | No | Log keys to be filtered and the corresponding regex Note: this field may return null , indicating that no valid values can be obtained. |
UnMatchUpLoadSwitch | Boolean | No | Whether to upload the logs that failed to be parsed. Valid values: true : yes; false : noNote: this field may return null , indicating that no valid values can be obtained. |
UnMatchLogKey | String | No | Unmatched log key Note: this field may return null , indicating that no valid values can be obtained. |
Backtracking | Integer | No | Size of the data to be rewound in incremental collection mode. Default value: -1 (full collection) Note: this field may return null , indicating that no valid values can be obtained. |
Filter
Used by actions: DescribeAlarmNotices, DescribeAlarms, DescribeConfigs, DescribeLogsets, DescribeMachineGroups, DescribeShippers, DescribeTopics.
Name | Type | Required | Description |
---|---|---|---|
Key | String | Yes | Field to be filtered |
Values | Array of String | Yes | Value to be filtered |
Filter rule for shipped log
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
Key | String | Yes | Filter rule key |
Regex | String | Yes | Filter rule |
Value | String | Yes | Filter rule value |
Full-Text index configuration
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
CaseSensitive | Boolean | Yes | Case sensitivity |
Tokenizer | String | Yes | Separator of the full-text index. Each character represents a separator; Supports only English punctuation marks and (\n\t\r); We recommend you use (@&?|#()='",;:<>[]{}/ \n\t\r) as separators; |
ContainZH | Boolean | No | Whether Chinese characters are contained Note: this field may return null , indicating that no valid values can be obtained. |
Histogram details
Used by actions: DescribeLogHistogram.
Name | Type | Description |
---|---|---|
Count | Integer | The number of logs within the statistical period |
BTime | Integer | Unix timestamp rounded by period , in milliseconds |
JSON type description
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
EnableTag | Boolean | Yes | Enablement flag |
MetaFields | Array of String | Yes | Metadata information list. Valid values: SOURCE; FILENAME; TIMESTAMP Note: This field may return null , indicating that no valid value was found. |
Log keys to be filtered and the corresponding regex
Used by actions: CreateConfig, DescribeConfigs, DescribeMachineGroupConfigs, ModifyConfig.
Name | Type | Required | Description |
---|---|---|---|
Key | String | Yes | Log key to be filtered |
Regex | String | Yes | Filter rule regex corresponding to key |
Field information of key value or metafield index
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
Key | String | Yes | When a key value or metafield index needs to be configured for a field, the metafield Key does not need to be prefixed with __TAG__. and is consistent with the one when logs are uploaded. __TAG__. will be prefixed automatically for display in the console. |
Value | ValueInfo | Yes | Field index description information |
Log context information
Used by actions: DescribeLogContext.
Name | Type | Description |
---|---|---|
Source | String | Log source device |
Filename | String | Collection path |
Content | String | Log content |
PkgId | String | Log package number |
PkgLogId | Integer | Log number in log package |
BTime | Integer | Log timestamp |
HostName | String | Source host name of logs Note: This field may return null , indicating that no valid value was found. |
Log result information
Used by actions: GetAlarmLog, SearchLog.
Name | Type | Description |
---|---|---|
Time | Integer | Log time in milliseconds |
TopicId | String | Log topic ID |
TopicName | String | Log topic name |
Source | String | Log source IP |
FileName | String | Log filename |
PkgId | String | ID of the request package for log reporting |
PkgLogId | String | Log ID in request package |
LogJson | String | Serialized JSON string of log content Note: this field may return null , indicating that no valid values can be obtained. |
HostName | String | Source host name of logs Note: This field may return null , indicating that no valid value was found. |
Key-Value pair in log
Used by actions: GetAlarmLog, SearchLog.
Name | Type | Description |
---|---|---|
Key | String | Log key |
Value | String | Log value |
LogItem
array
Used by actions: GetAlarmLog, SearchLog.
Name | Type | Description |
---|---|---|
Data | Array of LogItem | Key-Value pair returned in analysis result |
Logset information
Used by actions: DescribeLogsets.
Name | Type | Description |
---|---|---|
LogsetId | String | Logset ID |
LogsetName | String | Logset name |
CreateTime | String | Creation time |
Tags | Array of Tag | Tag bound to logset Note: this field may return null , indicating that no valid values can be obtained. |
TopicCount | Integer | Number of log topics in logset |
RoleName | String | If AssumerUin is not empty, it indicates the service provider who creates the logset |
Machine group information
Used by actions: DescribeConfigMachineGroups, DescribeMachineGroups.
Name | Type | Description |
---|---|---|
GroupId | String | Machine group ID |
GroupName | String | Machine group name |
MachineGroupType | MachineGroupTypeInfo | Machine group type |
CreateTime | String | Creation time |
Tags | Array of Tag | List of tags bound to machine group Note: this field may return null , indicating that no valid values can be obtained. |
AutoUpdate | String | Whether to enable automatic update for the machine group Note: this field may return null , indicating that no valid values can be obtained. |
UpdateStartTime | String | Update start time. We recommend you update LogListener during off-peak hours. Note: this field may return null , indicating that no valid values can be obtained. |
UpdateEndTime | String | Update end time. We recommend you update LogListener during off-peak hours. Note: this field may return null , indicating that no valid values can be obtained. |
ServiceLogging | Boolean | Whether to enable the service log to record the logs generated by the LogListener service itself. After it is enabled, the internal logset cls_service_logging and the loglistener_status , loglistener_alarm , and loglistener_business log topics will be created, which will not incur fees.Note: this field may return null , indicating that no valid values can be obtained. |
Machine group type description
Used by actions: CreateMachineGroup, DescribeConfigMachineGroups, DescribeMachineGroups, ModifyMachineGroup.
Name | Type | Required | Description |
---|---|---|---|
Type | String | Yes | Machine group type. Valid values: ip : the IP addresses of collection machines are stored in Values of the machine group; label : the tags of the machines are stored in Values of the machine group |
Values | Array of String | Yes | Machine description list |
Machine status information
Used by actions: DescribeMachines.
Name | Type | Description |
---|---|---|
Ip | String | Machine IP |
Status | Integer | Machine status. Valid values: 0 : exceptional; 1 : normal |
OfflineTime | String | Machine disconnection time. If the value is empty, the machine is normal. If the machine is exceptional, a specific value will be returned. |
AutoUpdate | Integer | Whether to enable automatic update for the machine. Valid values: 0 : no; 1 : yes |
Version | String | Current machine version number |
UpdateStatus | Integer | Machine update feature status |
ErrCode | Integer | Machine update result flag |
ErrMsg | String | Machine update result information |
Monitoring task execution time point in alarm policy
Used by actions: CreateAlarm, DescribeAlarms, ModifyAlarm.
Name | Type | Required | Description |
---|---|---|---|
Type | String | Yes | Valid values:Period : periodic executionFixed : scheduled execution |
Time | Integer | Yes | Execution interval or scheduled time point in minutes. Value range: 1–1440. |
Alarm notification recipient information
Used by actions: CreateAlarmNotice, DescribeAlarmNotices, ModifyAlarmNotice.
Name | Type | Required | Description |
---|---|---|---|
ReceiverType | String | Yes | Recipient type. Valid values:Uin : user IDGroup : user group IDCurrently, other recipient types are not supported. |
ReceiverIds | Array of Integer | Yes | Recipient |
ReceiverChannels | Array of String | Yes | Notification methodEmail : emailSms : SMSWeChat : WeChatPhone : phone |
StartTime | String | No | Start time for allowed message receipt |
EndTime | String | No | End time for allowed message receipt |
Index | Integer | No | Index |
Parquet
contents
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
ParquetKeyInfo | Array of ParquetKeyInfo | Yes | ParquetKeyInfo array |
Parquet
content description
Used by actions: CreateShipper, DescribeShippers, ModifyShipper.
Name | Type | Required | Description |
---|---|---|---|
KeyName | String | Yes | Key name |
KeyType | String | Yes | Supported data types: string, boolean, int32, int64, float, and double |
KeyNonExistingField | String | Yes | Assignment information returned upon resolution failure Note: This field may return null , indicating that no valid value can be obtained. |
Log topic partition information
Used by actions: DescribePartitions, MergePartition, SplitPartition.
Name | Type | Description |
---|---|---|
PartitionId | Integer | Partition ID |
Status | String | Partition status. Valid values: readwrite , readonly |
InclusiveBeginKey | String | Partition hash start key |
ExclusiveEndKey | String | Partition hash end key |
CreateTime | String | Partition creation time |
LastWriteTime | String | Last modified of read-only partition Note: this field may return null , indicating that no valid values can be obtained. |
Index rule. At least one of the FullText
, KeyValue
, and Tag
parameters must be valid.
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
FullText | FullTextInfo | No | Full-Text index configuration Note: this field may return null , indicating that no valid values can be obtained. |
KeyValue | RuleKeyValueInfo | No | Key-Value index configuration Note: this field may return null , indicating that no valid values can be obtained. |
Tag | RuleTagInfo | No | Metafield index configuration Note: this field may return null , indicating that no valid values can be obtained. |
Key-Value index configuration
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
CaseSensitive | Boolean | Yes | Case sensitivity |
KeyValues | Array of KeyValueInfo | No | Key-Value pair information of the index to be created. Up to 100 key-value pairs can be configured. |
Metafield index configuration
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
CaseSensitive | Boolean | Yes | Case sensitivity |
KeyValues | Array of KeyValueInfo | Yes | Field information in the metafield index configuration |
Shipping rule
Used by actions: DescribeShippers.
Name | Type | Description |
---|---|---|
ShipperId | String | Shipping rule ID |
TopicId | String | Log topic ID |
Bucket | String | Bucket address shipped to |
Prefix | String | Shipping prefix directory |
ShipperName | String | Shipping rule name |
Interval | Integer | Shipping time interval in seconds |
MaxSize | Integer | Maximum size of shipped file in MB |
Status | Boolean | Whether it takes effect |
FilterRules | Array of FilterRuleInfo | Filter rule for shipped log Note: this field may return null , indicating that no valid values can be obtained. |
Partition | String | Partition rule of shipped log, which can be represented in strftime time format |
Compress | CompressInfo | Compression configuration of shipped log Note: this field may return null , indicating that no valid values can be obtained. |
Content | ContentInfo | Format configuration of shipped log content Note: this field may return null , indicating that no valid values can be obtained. |
CreateTime | String | Creation time of shipped log |
Shipping task information
Used by actions: DescribeShipperTasks.
Name | Type | Description |
---|---|---|
TaskId | String | Shipping task ID |
ShipperId | String | Shipping information ID |
TopicId | String | Log topic ID |
RangeStart | Integer | Start timestamp of the current batch of shipped logs in milliseconds |
RangeEnd | Integer | End timestamp of the current batch of shipped logs in milliseconds |
StartTime | Integer | Start timestamp of the current shipping task in milliseconds |
EndTime | Integer | End timestamp of the current shipping task in milliseconds |
Status | String | Result of the current shipping task. Valid values: success , running , failed |
Message | String | Result details |
Description of the tag pair bound to a resource instance when it is created
Used by actions: CreateLogset, CreateMachineGroup, CreateTopic, DescribeConfigMachineGroups, DescribeLogsets, DescribeMachineGroups, DescribeTopics, ModifyLogset, ModifyMachineGroup, ModifyTopic.
Name | Type | Required | Description |
---|---|---|---|
Key | String | Yes | Tag key |
Value | String | Yes | Tag value |
Log topic information
Used by actions: DescribeTopics.
Name | Type | Description |
---|---|---|
LogsetId | String | Logset ID |
TopicId | String | Log topic ID |
TopicName | String | Log topic name |
PartitionCount | Integer | Number of topic partitions |
Index | Boolean | Whether index is enabled |
CreateTime | String | Creation time |
Status | Boolean | Whether collection is enabled in the log topic |
Tags | Array of Tag | Information of tags bound to log topic Note: this field may return null , indicating that no valid values can be obtained. |
AutoSplit | Boolean | Whether automatic split is enabled for this topic Note: this field may return null , indicating that no valid values can be obtained. |
MaxSplitPartitions | Integer | Maximum number of partitions to split into for this topic if automatic split is enabled Note: this field may return null , indicating that no valid values can be obtained. |
StorageType | String | Log topic storage class Note: this field may return null , indicating that no valid values can be obtained. |
Period | Integer | Lifecycle in days. Value range: 1-3600 (3640 indicates permanent retention) Note: This field may return null , indicating that no valid value was found. |
Index description information of the field for which key-value index needs to be enabled
Used by actions: CreateIndex, DescribeIndex, ModifyIndex.
Name | Type | Required | Description |
---|---|---|---|
Type | String | Yes | Field type. Valid values: long , text , double |
Tokenizer | String | No | Separator of fields. Each character represents a separator; Supports only English punctuation marks and (\n\t\r); long and double fields need to be null;We recommend you use (@&?|#()='",;:<>[]{}/ \n\t\r\) as separators for text fields; |
SqlFlag | Boolean | No | Whether the analysis feature is enabled for the field |
ContainZH | Boolean | No | Whether Chinese characters are contained Note: this field may return null , indicating that no valid values can be obtained. |
Callback address
Used by actions: CreateAlarmNotice, DescribeAlarmNotices, ModifyAlarmNotice.
Name | Type | Required | Description |
---|---|---|---|
Url | String | Yes | Callback address |
CallbackType | String | Yes | Callback type. Valid values: |
Method | String | No | Callback method. Valid values: Default value: POST . This parameter is required if CallbackType is Http .Note: This field may return null , indicating that no valid value was found. |
Headers | Array of String | No | Request header Note: This parameter is disused. To specify request headers, see CallBack in CreateAlarmNotice.Note: This field may return null , indicating that no valid value was found. |
Body | String | No | Request content Note: This parameter is disused. To specify request content, see CallBack in CreateAlarmNotice.Note: This field may return null , indicating that no valid value was found. |
Index | Integer | No | Number |
Was this page helpful?