From de2893be067e11e0deae370ceb41f244eb0d6926 Mon Sep 17 00:00:00 2001 From: Akhil Dangore Date: Mon, 2 Dec 2024 18:11:13 +0530 Subject: [PATCH 01/10] Updated doc for AWS tag filters --- .../deploy-with-aws-cloudformation/index.md | 11 +++++---- .../deploy-with-terraform.md | 22 ++++++++++++++---- .../aws-kinesis-firehose-metrics-source.md | 2 ++ .../img/send-data/kinesis-aws-tag-filters.png | Bin 0 -> 105321 bytes 4 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 static/img/send-data/kinesis-aws-tag-filters.png diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index 5af0a70ec3..f853e9bbfd 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -84,11 +84,12 @@ You should only install the AWS Observability apps and alerts the first time you The below tables displays the response for each text box in this section. -| Prompt | Guideline | -|:--|:--| -| Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs). | -| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2.
AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | -| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md). | +| Prompt | Guideline | +|:-------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs). | +| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2.
AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | +| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md). | +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with it's tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source, see JSON format example. ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` | ## Step 6: Sumo Logic AWS ALB Log Source diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 6f9e4e5f28..4ca1fbc2d7 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -695,7 +695,8 @@ Supported namespaces are based on the type of CloudWatch Metrics Source you have "AWS/NetworkELB", "AWS/SQS", "AWS/SNS" - ], + ], + "tag_filters": [], "source_category": "aws/observability/cloudwatch/metrics", "source_name": "CloudWatch Metrics (Region)" } @@ -705,8 +706,8 @@ Supported namespaces are based on the type of CloudWatch Metrics Source you have The following override example collects only DynamoDB and Lambda namespaces with source_category set to `"aws/observability/cloudwatch/metrics/us-east-1"`: -```json -Cloudwatch_metrics_source_details = { +```json title="cloudwatch_metrics_source_details" +{ "bucket_details": { "bucket_name": "", "create_bucket": true, @@ -717,12 +718,25 @@ Cloudwatch_metrics_source_details = { "limit_to_namespaces": [ "AWS/DynamoDB", "AWS/Lambda" - ], + ], + "tag_filters": [{ + "type":"TagFilters", + "namespace" : "AWS/DynamoDB", + "tags": ["env=prod;dev"] + },{ + "type": "TagFilters", + "namespace": "AWS/Lambda", + "tags": ["env=prod"] + }], "source_category": "aws/observability/cloudwatch/metrics/us-east-1", "source_name": "CloudWatch Metrics us-east-1" } ``` +:::note +All namespaces specified in `tag_filters` must be included in `limit_to_namespaces`. +::: + #### cloudwatch_metrics_source_url Use this parameter if you are already collecting CloudWatch Metrics and want to use an existing Sumo Logic Collector Source. You need to provide the URL of the existing Sumo Logic CloudWatch Metrics Source. If the URL is for a AWS CloudWatch Metrics source, the "account" and "accountid" metadata fields will be added to the Source. If the URL is for the Kinesis Firehose for Metrics source, the "account" field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration). diff --git a/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md b/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md index 0c90798d5a..c72502153e 100644 --- a/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md +++ b/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md @@ -53,6 +53,8 @@ In this step, you create the AWS Kinesis Firehose for Metrics source. 1. Select **AWS Kinesis Firehose** for Metrics. 1. Enter a **Name** for the source. 1. (Optional) Enter a **Description**. +1. (Optional) Enter a **AWS Tag filters**. +**Example**
kinesis-aws-source.png 1. For **Source Category**, enter any string to tag the output collected from this Source. Category metadata is stored in a searchable field called `_sourceCategory`.
kinesis-aws-source.png 1. For **AWS Access** of a Kinesis Metric source, the role requires `tag:GetResources` permission. The Kinesis Log source does not require permissions. 1. Click **Save**. diff --git a/static/img/send-data/kinesis-aws-tag-filters.png b/static/img/send-data/kinesis-aws-tag-filters.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9ce4fe30c167550b648c77881ccec956699480 GIT binary patch literal 105321 zcmeFZXH-+`7B*@D#Dap z=hP`u_EV?MekLaaeiI0q0|9@X_Rvw3IR)>(vv}$h!zpDsX+3X?B`oQ?c>Vp3wba;^ z_{$E_WQ!Wo=krKNNLsK$AABEz;#vs zGWF{$)YOpKm6QKV_BDpWTvvvmQ)kHk_TzEs#jASlzSp%*zVs?^<(0o(^sgKJbLGFy z@sEc7@q~Xo;oso$f2Sur<$S)0*WU$AofdJQrSFQr*EHLmEE~(LO4EK{T=aKPee84| zz|+J73B+m*2*V^DOmdA?Bh3%|8rib+>f&*CZ8|bft?St}VV4PH%ab6>>95m_?kk^L zbm|{BpDK6Q7`~Y6>9-r`+S6&-F?!R2&oA}{w;n?wbkz$NMJIKyY3fjkMLnIZ&IMcP zdhGPNAUCk3Zq*A?pBZ)LJ#qKP%!~)kpI_+ZyHnD*KnjE#+F%h|*Me<~k}^@uSpLc~ zHkTm@%J3K4VBLRLU?LD>peYnaOf&S|ioyDAC2#j6va_rC9b%_I?aP(-~uCLQA z-?p6xmv|k<@nH`L&|RX9&-;B^cj5;1{=3)ixaa}N0K*?&B3P^DxT7zpTgGr0!aGBf z`MN88beZ(KZ`|7g-CTRLx_vCud|N=yWvZF0#!)X}N+BT7G7~a&be5=dWlE;t%H$&3 zm%H3fcv|~q1uY*h?83)SEqRXEeD|Zzuau~KD?Ahz_eTg`ULk(oTjw(U**FZ!JrJ_3 zdo{W1{L9b47}wBCNz_$TkJ5GXo{9JzCct?S8cuibjA!yx>@H2v{y8}Y%X6o>}F7^68Q-jaCZFSRn1sTNVC+3h@ zJ6n!-W?uO9pgImI^ zLRE)VaAzyA%UhqSI&?m+_wc=zPOga7|FeNnDkU9$1(50c|mZm@rSny4`jIZ6ps=GFJkXX1rF-? z{9v1xI!fwKz5j|h9|>-Rxp(UqmQuee$g_`;skEOX*?*Kid1$m=V6&M?Xj=Ks9DXyw zQqiB48db2qcSqtOi*z1rW!L{n+nY~2YcpNnVq|lD6T-J7qz>_>yU#yjwg%oy+SIxA zT(0z9ys+N5h{{VS3*_cwv{*GPr-DlL&T>@~&uTlj2InR@+ws{3?)<-sZxa_dQNcIt99%J6))ZC)0`f{2i3 z`|CJ3ebB|tAabIe;03J37ekM)7-7)O0}WxzpjZAH43K0QLa z{@^as}Iwi-AziPIOqQpCcX{^75FW7qTH^t_UuKP z;s$|u@!Vv$z%bvwB2FC8-nCgG5eYnMtah5*XfD@Xq|uw}%+Sx+b`N*T*{hLPyahU6 z?a5fUaai}XeQB4d*TKC-noWCtW#4=So2*TmpiVQKMBlvsxrCO`x!Q%clNS~G7To>q z$baoZYRGR+^5Qo6RlRVfI0HJH!B||(w`(kF55z`zC@Ie5up=zS>@2U;PK{_sKtTFY zVDDuGF6-sJNR4vgVoSvU8X8{2SKoDl>+3Egy#h&YYxAyJisVtDkEx=rEsxgNLCdYO znclFRK_6CY1p?MuY_SRLbw1XBsKr*$ul*ylSft}v_`{_ZRaPcx9zr9{# zHoeM9Gh~2-&Z}Uq!i}g0hQHVJXA~KhLR9G7j2iv9{4l2JvBG{XZDbcSp+kzI)y_9< zBKnL!7@1T<`vZ_ zr8uOh$OJp|QHtM874m>rFK=WY1~iEZT5m*6`C`vXkS5>_tDbrk)J!@WlrdQ;1gviQ zx>*>`9iRQ$s(2Jbz?7?QIT>3uwx_~zKC_utw#9+)G!eOi{Eq4cfn(^oE6U-=BkM>i zWFjbXC6hf=IsdaO3yuB%m)`eniQ)t=vVASvFa zb~K0G72}>iJ~SlG_THlj+SNH2G~Botb{4qpkG3!-P-1Vh9wSP`5-O%Qx&QDPT|1?0 z^ELC1k#Tq8ESre$kKEbL6!}isfg^HGahrjE1OEL9a(&CKicNDM@?8} z&{y`AIy|)lEkMknm+6@$rUIsh6!(>aNzV5QR(sRxwO5-T@NSM%l@!vypU;uKpgE-z+G&k?!nFp39t1!9yr(a zc62>WXln3kmVW~uicpg@0ZZ8&iaxr)E>V*@;~^O@mZWwF&E43267-f%YSg9ba2z9t zr)sW^L}uxfO)jj*lv-37^ruPK*~hY|-`~TvvK~(I(HhAcCYG6T$p+kJ=AZAa6K+C1 z6w_QW%SK9X2OQ!a?AJiB$VHA3K>>0UMNu>DUYzmkkqgrsUd3AP4^W$Q@8vqp(w*j@psA=&~=H?dY^~|7JeSEBP)I5cu$F) z`z3aMTP4>qyWMWF9@hnv#`S!8|K@t+lTETd>zVwrIj+OT5z6V2P{Tpegyw41NHWdN z=|ETt&u5Kv(dCWN7(QHj%$~_>>CCCo51jc1lL5^OHFg8052h$+*-UGfKM=AHOrOp|aT5!+@3VrpzZ2AdqVThT8mP$J>4mL$}3_L5RdG{NzGL({jmMr8n zu7J_0+zPCJ)0=sO^ndi7V|SzEP2^>R-b_cCvO<+FDUnMLRa&F5sVhzy&l0>QkLAcH zjs_138I$_c#8_1m%LJqXC(7%@G4IQurLcUz!Ue{y0eIjekkU`BLE_ee+99LcVw%*m zMrBxClVow0&apk_r8MF3S_3KPw{dXBR#v@EO8jRuKlBUs+3cn&VvbC*9TmWkf2vf0;gKvjn5 zc3vG8WI5pDMA|3Gzw0Lo{t)CV<}4BuiK z@N!~pQQv939JfiaJifXeM$Vs8QfQ@BG+h=DTAZw(z27*Auu9T{Z@z;r{akI~0})JA z9prB6?TvB6EJfuv)hO`8vD&R<$#qtaxW4&_0Jbg9mLoo=wgvm~DPLo}QDR*`UB z5m%t3Lp}9+?nS#Y1Z_+xHKwhYse{E1MS_a;-jY8$9L51zbRT-q;LrQuS$BiWSN^BH zQ9AF
  • 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

    Lny!AS8!-xX0x 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 h9k1SB!8EzilEv+YSd; Date: Mon, 2 Dec 2024 10:49:10 -0600 Subject: [PATCH 02/10] Updates from review --- .../deploy-with-aws-cloudformation/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index f853e9bbfd..65e2bc2c79 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -89,7 +89,7 @@ The below tables displays the response for each text box in this section. | Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | | Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | | Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md). | -| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with it's tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source, see JSON format example. ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` | +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` | ## Step 6: Sumo Logic AWS ALB Log Source From d5de42a86bc16fdfb3f22d88aa4bdc1bc97c79bc Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Wed, 4 Dec 2024 18:42:45 +0530 Subject: [PATCH 03/10] adding custom namespace changes --- .../deploy-with-aws-cloudformation/index.md | 6 +++--- .../deploy-with-terraform.md | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index 65e2bc2c79..00874146b6 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -87,9 +87,9 @@ The below tables displays the response for each text box in this section. | Prompt | Guideline | |:-------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | -| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | -| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md). | -| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` | +| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2. You can provide both AWS as well as custom namespaces.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | +| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md).| +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` .
    Filters are not supported for custom metrics.| ## Step 6: Sumo Logic AWS ALB Log Source diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 4ca1fbc2d7..21f2c15498 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -639,7 +639,7 @@ The following table provides a list of all source parameters and their default v ### Configure collection of CloudWatch metrics :::note -To migrate CloudWatch Metrics Source to Kinesis Firehose Metrics Source using Terraform, refer to [Migration Strategy using Terraform](/docs/observability/aws/deploy-use-aws-observability/migration-strategy-using-terraform). +To migrate from legacy CloudWatch Metrics Source to Kinesis Firehose Metrics Source using Terraform, refer to [Migration Strategy using Terraform](/docs/observability/aws/deploy-use-aws-observability/migration-strategy-using-terraform). ::: #### collect_cloudwatch_metrics @@ -668,7 +668,7 @@ collect_cloudwatch_metrics = "Kinesis Firehose Metrics Source" Provide details for the Sumo Logic CloudWatch Metrics source. If not provided, then defaults will be used. -* `limit_to_namespaces`. Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source. +* `limit_to_namespaces`. Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source. You can provide both AWS as well as custom namespaces. Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics) for details on which namespaces they support. @@ -717,7 +717,8 @@ The following override example collects only DynamoDB and Lambda namespaces with "fields": {}, "limit_to_namespaces": [ "AWS/DynamoDB", - "AWS/Lambda" + "AWS/Lambda", + "CWAgent" ], "tag_filters": [{ "type":"TagFilters", @@ -734,7 +735,7 @@ The following override example collects only DynamoDB and Lambda namespaces with ``` :::note -All namespaces specified in `tag_filters` must be included in `limit_to_namespaces`. +All namespaces specified in `tag_filters` must be included in `limit_to_namespaces`. Filters are not supported for custom metrics. ::: #### cloudwatch_metrics_source_url From 4b135c76fbfb951f208ed038ed0aeb3d95c52996 Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Wed, 4 Dec 2024 18:48:29 +0530 Subject: [PATCH 04/10] updated required terraform version --- .../aws/deploy-use-aws-observability/deploy-with-terraform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 21f2c15498..13b24743fd 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -60,7 +60,7 @@ System Files: Before you run the Terraform script, perform the following actions on a server machine of your choice: -1. Install [Terraform](https://www.terraform.io/) version [0.13.0](https://releases.hashicorp.com/terraform/) or later. To check the installed Terraform version, run the following command: +1. Install [Terraform](https://www.terraform.io/) version [1.6.0](https://releases.hashicorp.com/terraform/) or later. To check the installed Terraform version, run the following command: ```bash $ terraform --version ``` From 109f1d30b27b714897e44a4d4a87a3944a1327e5 Mon Sep 17 00:00:00 2001 From: Akhil Dangore Date: Mon, 9 Dec 2024 11:37:19 +0530 Subject: [PATCH 05/10] Updated doc for Subscribe Existing LogGroups by Tags --- .../deploy-with-aws-cloudformation/index.md | 4 +++- .../deploy-with-terraform.md | 9 ++++++--- .../autosubscribe-arn-destination.md | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index 00874146b6..ccecdce1fa 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -89,7 +89,8 @@ The below tables displays the response for each text box in this section. | Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | | Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2. You can provide both AWS as well as custom namespaces.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | | Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md).| -| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json { "AWS/ELB": { "tags": ["env=prod;dev"] }, "AWS/EC2": { "tags": ["env=dev"] }, "AWS/RDS": { "tags": ["env=dev"] } } ``` .
    Filters are not supported for custom metrics.| +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json json {"AWS/ELB":{"tags":["env=prod;dev"]},"AWS/EC2":{"tags":["env=dev","creator=john"]},"AWS/RDS":{"tags":["env=prod;dev","creator=himan"]},"All":{"tags":["env=dev"]}}``` .
    Filters are not supported for custom metrics.| + ## Step 6: Sumo Logic AWS ALB Log Source @@ -126,6 +127,7 @@ The below tables displays the response for each text box in this section. | Existing Sumo Logic Lambda CloudWatch Logs Source API URL | Required you already collect AWS Lambda CloudWatch logs. Provide the existing Sumo Logic AWS Lambda CloudWatch Source API URL. The account, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md). | | Subscribe log groups to destination (lambda or kinesis firehose delivery stream) |
    • **New** - Automatically subscribes new AWS Lambda log groups to Lambda, to send logs to Sumo Logic.
    • **Existing** - Automatically subscribes existing log groups to Lambda, to send logs to Sumo Logic.
    • **Both** - Automatically subscribes new and existing log groups.
    • **None** - Skips automatic subscription of log groups.
    | | Regex for AWS Log Groups | Default Value: **aws/(lambda\|apigateway\|rds)**
    With default value, log group names matching with lambda or rds will be subscribed and ingesting cloudwatch logs into sumo logic.
    Enter a regex for matching log group names. For more information, see [Configuring parameters](/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination/#configuringparameters) in the *Auto-Subscribe ARN (Amazon Resource Name) Destination* topic. +| Tags for filtering CloudWatch Log Groups | Enter comma separated key value pairs for filtering logGroups using tags. Ex KeyName1=string,KeyName2=string. This is optional leave it blank if tag based filtering is not needed. Visit https://help.sumologic.com/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination/#configuringparameters | :::note * Don't use forward slashes (`/`) to encapsulate the regex. While normally they are needed for raw code, it's not necessary here. diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 13b24743fd..91ae4660e4 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -1250,23 +1250,26 @@ auto_enable_logs_subscription="New" ### auto_enable_logs_subscription_options -`filter`. Enter regex for matching logGroups for AWS Lambda only. The regex will check the name. See [Configuring Parameters](/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination). +* `filter`. Enter regex for matching logGroups for AWS Lambda only. The regex will check the name. See [Configuring Parameters](/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination/#configuringparameters). +* `tags_filter`. Enter comma separated key value pairs for filtering logGroups using tags. Ex KeyName1=string,KeyName2=string. This is optional leave it blank if tag based filtering is not needed. See [Configuring Parameters](/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination/#configuringparameters) **Default value:** ```json { - "filter": "apigateway|lambda|rds" + "filter": "apigateway|lambda|rds", + "tags_filter": "" } ``` -**Default JSON:** +**Override Example JSON:** The following example includes all log groups that match `"lambda-cloudwatch-logs"`: ``` auto_enable_logs_subscription_options = { "filter": "lambda-cloudwatch-logs" + "tags_filter": "Environment=Production,Application=MyApp" } ``` diff --git a/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination.md b/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination.md index 7247d2c855..9fc6fcbace 100644 --- a/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination.md +++ b/docs/send-data/collect-from-other-data-sources/autosubscribe-arn-destination.md @@ -58,7 +58,7 @@ This section describes the parameters you can configure for the Lambda function. * **UseExistingLogs**—Controls whether this function will be used to create subscription filters for existing log groups. Select "True" if you want to use the function for subscribing to existing log groups. -* **LogGroupTags**: Enter comma-separated key-value pairs for filtering logGroups using tags. For Example, KeyName1=string,KeyName2=string. Only log groups that match any one of the key-value pairs will be subscribed by this Lambda function. Supported only when UseExistingLogs is set to false which means it works only for new log groups, not existing log groups. +* **LogGroupTags**: Enter comma-separated key-value pairs for filtering logGroups using tags. For Example, KeyName1=string,KeyName2=string. Supported only when UseExistingLogs is set to false. * **RoleArn:** Provide the AWS Role ARN which has permission to put data into the provided Kinesis Firehose data delivery stream. Keep the value empty, when the destination type is Lambda. From bad668555a0870a576ff5f2ddb40176ff6c0be4b Mon Sep 17 00:00:00 2001 From: Akhil Dangore Date: Mon, 9 Dec 2024 12:56:29 +0530 Subject: [PATCH 06/10] Correct alignment --- .../deploy-with-aws-cloudformation/index.md | 2 +- .../amazon-aws/amazon-cloudwatch-source-metrics.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index ccecdce1fa..ef46a89a41 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -89,7 +89,7 @@ The below tables displays the response for each text box in this section. | Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | | Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2. You can provide both AWS as well as custom namespaces.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | | Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md).| -| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json json {"AWS/ELB":{"tags":["env=prod;dev"]},"AWS/EC2":{"tags":["env=dev","creator=john"]},"AWS/RDS":{"tags":["env=prod;dev","creator=himan"]},"All":{"tags":["env=dev"]}}``` .
    Filters are not supported for custom metrics.| +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json {"AWS/ELB":{"tags":["env=prod;dev"]},"AWS/EC2":{"tags":["env=dev","creator=john"]},"AWS/RDS":{"tags":["env=prod;dev","creator=himan"]},"All":{"tags":["env=dev"]}}``` .
    Filters are not supported for custom metrics. | ## Step 6: Sumo Logic AWS ALB Log Source diff --git a/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md b/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md index 443c198cf7..e3afcc2568 100644 --- a/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md +++ b/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md @@ -73,7 +73,8 @@ AWS tag filtering is supported for the following AWS namespaces. * AWS/ES * AWS/Firehose * AWS/Inspector -* AWS/Kinesis AWS/KinesisAnalytics +* AWS/Kinesis +* AWS/KinesisAnalytics * AWS/KinesisVideo * AWS/KMS * AWS/Lambda From 939d7c8e9c3b8fe10f89af04dca3a4bffa7226fd Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Mon, 9 Dec 2024 21:21:30 +0530 Subject: [PATCH 07/10] updated the table and minor changes --- .../deploy-with-aws-cloudformation/index.md | 13 ++++++------- .../deploy-with-terraform.md | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md index ef46a89a41..919eb35f55 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-aws-cloudformation/index.md @@ -84,13 +84,12 @@ You should only install the AWS Observability apps and alerts the first time you The below tables displays the response for each text box in this section. -| Prompt | Guideline | -|:-------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | -| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2. You can provide both AWS as well as custom namespaces.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | -| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md).| -| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json {"AWS/ELB":{"tags":["env=prod;dev"]},"AWS/EC2":{"tags":["env=dev","creator=john"]},"AWS/RDS":{"tags":["env=prod;dev","creator=himan"]},"All":{"tags":["env=dev"]}}``` .
    Filters are not supported for custom metrics. | - +| Prompt | Guideline | +| :-- | :-- | +| Select the kind of CloudWatch Metrics Source to create | **Note:** Switching from one type of Metrics Source to another can result in re-computation of your Root Cause Explorer anomaly detection models. This re-computation can take a couple of days to finish and meanwhile you will not get new Events of Interest (EOIs).
    • **CloudWatch Metrics Source** - Creates Sumo Logic AWS CloudWatch Metrics Sources.
    • **Kinesis Firehose Metrics Source (Recommended)** - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source.
      **Note:** This new source has cost and performance benefits over the CloudWatch Metrics Source is therefore recommended.
    • **None** - Skips the Installation of both the Sumo Logic Sources
    | +| Sumo Logic AWS Metrics Namespaces | Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources.
    The default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, and AWS/EC2. You can provide both AWS as well as custom namespaces.
    AWS/AutoScaling will be appended to Namespaces for Inventory Sources.
    Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics.md) for details on which namespaces they support. | +| Existing Sumo Logic Metrics Source API URL | You must supply this URL if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](/docs/send-data/use-json-configure-sources/local-configuration-file-management/view-download-source-json-configuration.md).| +| Sumo Logic AWS Metrics Tag Filters | Provide JSON format of the namespaces with its tags values to add filters to your metrics. Use semicolons to separate multiple values for the same tag key. AWS Tag Filters will be added to the Source. See JSON format example: ```json {"AWS/ELB":{"tags":["env=prod;dev"]},"AWS/EC2":{"tags":["env=dev","creator=john"]},"AWS/RDS":{"tags":["env=prod;dev","creator=himan"]},"All":{"tags":["env=dev"]}}``` .
    Filters are not supported for custom metrics. | ## Step 6: Sumo Logic AWS ALB Log Source diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 91ae4660e4..10a35b6d94 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -668,7 +668,7 @@ collect_cloudwatch_metrics = "Kinesis Firehose Metrics Source" Provide details for the Sumo Logic CloudWatch Metrics source. If not provided, then defaults will be used. -* `limit_to_namespaces`. Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source. You can provide both AWS as well as custom namespaces. +* `limit_to_namespaces`. Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source. You can provide both AWS and custom namespaces. Supported namespaces are based on the type of CloudWatch Metrics Source you have selected above. See the relevant docs for the [Kinesis Firehose Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source) and the [CloudWatch Metrics Source](/docs/send-data/hosted-collectors/amazon-aws/amazon-cloudwatch-source-metrics) for details on which namespaces they support. From 07b7796cea23e31ac5933233df51a8374da2542e Mon Sep 17 00:00:00 2001 From: Akhil Dangore Date: Tue, 10 Dec 2024 18:46:33 +0530 Subject: [PATCH 08/10] Updated AWSO doc for rds app --- .../aws/integrations/amazon-rds.md | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/docs/observability/aws/integrations/amazon-rds.md b/docs/observability/aws/integrations/amazon-rds.md index 0bfdc6100f..b50247936a 100644 --- a/docs/observability/aws/integrations/amazon-rds.md +++ b/docs/observability/aws/integrations/amazon-rds.md @@ -11,7 +11,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; [Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/) is a managed database service, optimized to run in the cloud. The RDS Amazon Web Service (AWS) simplifies the setup, operation, and scaling of relational database instances for use in applications throughout your infrastructure. -The Sumo Logic Amazon RDS app dashboards provide visibility into the performance and operations of your Amazon Relational Database Service (RDS). Preconfigured dashboards allow you to monitor critical metrics of your RDS instance(s) or cluster(s) including CPU, memory, storage, network transmits and receive throughput, read and write operations, database connection count, disk queue depth, and more. CloudTrail Audit dashboards help you monitor activities performed on your RDS infrastructure. MySQL Logs dashboards helps you monitor database errors, slow queries, audit sql queries and generic activities. PostgreSQL logs dashboard help you to monitor database errors, slow queries, database security, and query execution timings. MSSQL Logs dashboards helps you monitor error logs and basic infrastructure details. +The Sumo Logic Amazon RDS app dashboards provide visibility into the performance and operations of your Amazon Relational Database Service (RDS). Preconfigured dashboards allow you to monitor critical metrics of your RDS instance(s) or cluster(s) including CPU, memory, storage, network transmits and receive throughput, read and write operations, database connection count, disk queue depth, and more. CloudTrail Audit dashboards help you monitor activities performed on your RDS infrastructure. MySQL Logs dashboards helps you monitor database errors, slow queries, audit sql queries and generic activities. PostgreSQL logs dashboard help you to monitor database errors, slow queries, database security, and query execution timings. MSSQL Logs dashboards helps you monitor error logs and basic infrastructure details. Oracle CloudTrail and CloudWatch Logs dashboards provide monitoring for error logs and essential infrastructure details. ## Log and metrics types @@ -21,6 +21,7 @@ The Amazon RDS app uses the following logs and metrics: * [Publishing RDS CloudWatch Logs, RDS Database logs for Aurora MySQL, RDS MySQL, MariaDB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.html). * [Publishing RDS CloudWatch logs, RDS Database logs for Aurora PostgreSQL, and RDS PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.PostgreSQL.html#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs) * [Publishing RDS CloudWatch logs, RDS Database logs for RDS MSSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.SQLServer.html#USER_LogAccess.SQLServer.PublishtoCloudWatchLogs) +* [Publishing RDS CloudWatch logs, RDS Database logs for RDS Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.Oracle.html#USER_LogAccess.Oracle.PublishtoCloudWatchLogs) ### Sample CloudTrail log message
    @@ -271,6 +272,35 @@ account=* region=* namespace=aws/rds dbidentifier=* _sourceHost=/aws/rds/*Error | sort by _timeslice ``` +```sql title="Engine and Its DB Instance (Oracle CloudTrail log based)" +account=* region=* namespace=aws/rds "\"eventSource\":\"rds.amazonaws.com\"" !errorCode +| json "eventTime", "eventName", "eventSource", "awsRegion", "userAgent", "recipientAccountId", "userIdentity", "requestParameters", "responseElements", "errorCode", "errorMessage", "requestID", "sourceIPAddress" as eventTime, event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, error_code, error_message, requestID, src_ip nodrop +| where event_source = "rds.amazonaws.com" +| json "requestParameters.engine", "responseElements.engine" as engine1, engine2 nodrop +| if (!isEmpty(engine1), engine1, engine2) as engine +| where !isEmpty(engine) and engine contains "oracle" +| json field=userIdentity "accountId", "arn", "userName", "type" as accountId, arn, username, type nodrop +| parse field=arn ":assumed-role/*" as user nodrop | parse field=arn "arn:aws:iam::*:*" as accountId, user nodrop +| json field=requestParameters "dBInstanceIdentifier", "resourceName", "dBClusterIdentifier" as dBInstanceIdentifier1, resourceName, dBClusterIdentifier1 nodrop +| json field=responseElements "dBInstanceIdentifier" as dBInstanceIdentifier3 nodrop +| parse field=resourceName "arn:aws:rds:*:db:*" as f1, dBInstanceIdentifier2 nodrop +| if (resourceName matches "arn:aws:rds:*:db:*", dBInstanceIdentifier2, if (!isEmpty(dBInstanceIdentifier1), dBInstanceIdentifier1, dBInstanceIdentifier3) ) as dBInstanceIdentifier +| where !isEmpty(dBInstanceIdentifier) +| count as freq by engine, dBInstanceIdentifier +| sort by dBInstanceIdentifier, engine asc +| fields -freq +``` + + +```sql title="ORA Messages Over Time (Oracle CloudWatch log based)" +account=* region=* namespace=aws/rds dbidentifier=* _sourceHost=/aws/rds/*alert ORA-* +| json "message" nodrop | if (_raw matches "{*", message, _raw) as message +| parse regex field=message "(?ORA-\d{5}): (?.*)" multi +| timeslice 1s +| count as eventCount by oraerr, _timeslice +| transpose row _timeslice column oraerr +``` + ## Viewing the RDS dashboards import FilterDashboards from '../../../reuse/filter-dashboards.md'; @@ -542,3 +572,36 @@ Use this dashboard to: * Track recent terminations of SQL Server instances and monitor the creation of new databases. Amazon RDS dashboard + + +### 20. Oracle Logs - Alert Logs Analysis + +The **Amazon RDS - Oracle Logs - Alert Logs Analysis** dashboard provides details on Oracle errors, including counts of various error types, ORA messages, Oracle instance states, and other data derived from the Oracle Alert log. + +Use this dashboard to: +* Monitor Amazon Oracle RDS errors through CloudWatch Events. +* Monitor ORA and TNS message events. +* Monitor log switch activities, archival errors, tablespace extension issues, failures, warnings, and errors occurring on the Oracle RDS instance. + +Amazon RDS dashboard + +### 21. Oracle Logs - Audit Logs Analysis + +The **Amazon RDS - Oracle Logs - Audit Logs Analysis** dashboard provides details on syslog audit trail, including successful and failed activities, and top usage by client, database user, and privileges used. + +Use this dashboard to: +* Monitor successful and failed Amazon Oracle RDS events. +* Monitor top usage by client, database user, and privileges on Oracle RDS instance. + +Amazon RDS dashboard + + +### 22. Oracle Logs - Listener Troubleshooting + +The **Amazon RDS - Oracle Logs - Listener Troubleshooting** dashboard provides insights into Oracle listener process activity, including database connections by host and application, connection failures, command execution statuses and trends, and additional data from the Oracle Listener log. + +Use this dashboard to: +* Monitor listener process activity on Oracle RDS instance. +* Monitor database connections by host and application, track connection failures, analyze command execution statuses and trends, and gather insights from the Oracle Listener log. + +Amazon RDS dashboard From 27c71a37961784f3b184b05c33f2b471dc14ac48 Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Tue, 17 Dec 2024 16:55:07 +0530 Subject: [PATCH 09/10] Minor fix in cw metric override json --- .../aws/deploy-use-aws-observability/deploy-with-terraform.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md index 10a35b6d94..21baefefe8 100644 --- a/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md +++ b/docs/observability/aws/deploy-use-aws-observability/deploy-with-terraform.md @@ -707,7 +707,7 @@ Supported namespaces are based on the type of CloudWatch Metrics Source you have The following override example collects only DynamoDB and Lambda namespaces with source_category set to `"aws/observability/cloudwatch/metrics/us-east-1"`: ```json title="cloudwatch_metrics_source_details" -{ +cloudwatch_metrics_source_details = { "bucket_details": { "bucket_name": "", "create_bucket": true, From 4eb18ec544d1635d63568f9479818f79b3af87d1 Mon Sep 17 00:00:00 2001 From: Akhil Dangore Date: Mon, 6 Jan 2025 14:45:46 +0530 Subject: [PATCH 10/10] Corrected order --- .../amazon-aws/aws-kinesis-firehose-metrics-source.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md b/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md index c72502153e..48db1e5f3a 100644 --- a/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md +++ b/docs/send-data/hosted-collectors/amazon-aws/aws-kinesis-firehose-metrics-source.md @@ -53,9 +53,9 @@ In this step, you create the AWS Kinesis Firehose for Metrics source. 1. Select **AWS Kinesis Firehose** for Metrics. 1. Enter a **Name** for the source. 1. (Optional) Enter a **Description**. -1. (Optional) Enter a **AWS Tag filters**. -**Example**
    kinesis-aws-source.png 1. For **Source Category**, enter any string to tag the output collected from this Source. Category metadata is stored in a searchable field called `_sourceCategory`.
    kinesis-aws-source.png +1. For **AWS Tag Filters** (Optional) , enter keys and values to add filters to your metrics. AWS Tag filters are supported for AWS namespaces but not for custom namespaces. +**Example**
    kinesis-aws-source.png 1. For **AWS Access** of a Kinesis Metric source, the role requires `tag:GetResources` permission. The Kinesis Log source does not require permissions. 1. Click **Save**.