Gems/AWSMetrics/cdk/aws_metrics/aws_metrics_constants.py (71 lines of code) (raw):

""" Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. SPDX-License-Identifier: Apache-2.0 OR MIT """ # Constants for API Gateway Service API APIGATEWAY_STAGE = "api" # Constants for Kinesis Data Analytics application # The SQL code for the Kinesis analytics application. KINESIS_APPLICATION_CODE = "-- ** Continuous Filter **\n"\ "CREATE OR REPLACE STREAM \"DESTINATION_STREAM\" (\n"\ "METRIC_NAME VARCHAR(1024),\n"\ "METRIC_TIMESTAMP BIGINT,\n"\ "METRIC_UNIT_VALUE_INT BIGINT,\n"\ "METRIC_UNIT VARCHAR(1024),\n"\ "OUTPUT_TYPE VARCHAR(1024));\n"\ "CREATE OR REPLACE PUMP \"LOGIN_PUMP\" AS\n"\ "INSERT INTO \"DESTINATION_STREAM\" (METRIC_NAME, METRIC_TIMESTAMP, METRIC_UNIT_VALUE_INT, METRIC_UNIT, OUTPUT_TYPE)\n"\ "SELECT STREAM 'TotalLogins', UNIX_TIMESTAMP(TIME_WINDOW), COUNT(distinct_stream.login_count) AS unique_count, 'Count', 'metrics'\n"\ "FROM (\n"\ " SELECT STREAM DISTINCT\n"\ " ROWTIME as window_time,\n"\ " \"AnalyticsApp_001\".\"event_id\" as login_count,\n"\ " STEP(\"AnalyticsApp_001\".ROWTIME BY INTERVAL '1' MINUTE) as TIME_WINDOW\n"\ " FROM \"AnalyticsApp_001\"\n"\ " WHERE \"AnalyticsApp_001\".\"event_name\" = 'login'\n"\ ") as distinct_stream\n"\ "GROUP BY\n"\ " TIME_WINDOW,\n"\ " STEP(distinct_stream.window_time BY INTERVAL '1' MINUTE);\n" # Constants for the analytics processing and events processing lambda. LAMBDA_TIMEOUT_IN_MINUTES = 5 # The amount of memory available to the function at runtime. Range from 128 to 10240. # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-memorysize LAMBDA_MEMORY_SIZE_IN_MB: int = 256 # Constants for the Glue database and table. GLUE_TABLE_NAME = 'firehose_events' # Input/output format and serialization library for the Glue table (Same as the Game Analytics Pipeline solution). # The Firehose delivery stream will use this table to convert the metrics data to the parquet format. # Check https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html for converting # the input record format in Kinesis Data Firehose. GLUE_TABLE_INPUT_FORMAT = 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' GLUE_TABLE_OUTPUT_FORMAT = 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' GLUE_TABLE_SERIALIZATION_LIBRARY = 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' GLUE_TABLE_SERIALIZATION_LIBRARY_SERIALIZATION_FORMAT = '1' # Constants for the Glue crawler. CRAWLER_CONFIGURATION = '{'\ ' \"Version\":1.0,'\ ' \"CrawlerOutput\":'\ ' {'\ ' \"Partitions\":'\ ' {'\ ' \"AddOrUpdateBehavior\":\"InheritFromTable\"'\ ' },'\ ' \"Tables\":'\ ' {'\ ' \"AddOrUpdateBehavior\":\"MergeNewColumns\"'\ ' }'\ ' }'\ '}'\ # Constants for the Kinesis Data Firehose delivery stream. # Hints for the buffering to perform before delivering data to the destination. # These options are treated as hints, and therefore Kinesis Data Firehose might choose to # use different values when it is optimal. DELIVERY_STREAM_BUFFER_HINTS_INTERVAL_IN_SECONDS = 60 DELIVERY_STREAM_BUFFER_HINTS_SIZE_IN_MBS = 128 # Configuration for the destination S3 bucket. S3_DESTINATION_PREFIX = GLUE_TABLE_NAME + '/year=!{timestamp:YYYY}/month=!{timestamp:MM}/day=!{timestamp:dd}/' S3_DESTINATION_ERROR_OUTPUT_PREFIX = 'firehose_errors/year=!{timestamp:YYYY}/month=!{timestamp:MM}/' \ 'day=!{timestamp:dd}/!{firehose:error-output-type}' # Parquet format is already compressed with SNAPPY S3_COMPRESSION_FORMAT = 'UNCOMPRESSED' # Configuration for the data processor for an Amazon Kinesis Data Firehose delivery stream. # Set the length of time that Data Firehose buffers incoming data before delivering it to the destination. Valid Range: # Minimum value of 60. Maximum value of 900. # https://docs.aws.amazon.com/firehose/latest/APIReference/API_BufferingHints.html PROCESSOR_BUFFER_INTERVAL_IN_SECONDS = '60' # Buffer incoming data to the specified size before delivering it to the destination. Recommend setting this # parameter to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. # https://docs.aws.amazon.com/firehose/latest/APIReference/API_BufferingHints.html PROCESSOR_BUFFER_SIZE_IN_MBS = '3' # Number of retries for delivering the data to S3. # Minimum value of 1. Maximum value of 512. # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processorparameter.html PROCESSOR_BUFFER_NUM_OF_RETRIES = '3' PARQUET_SER_DE_COMPRESSION = 'SNAPPY' # Constants for the Athena engine # Directory name in S3 for the Athena query outputs ATHENA_OUTPUT_DIRECTORY = 'athena_query_results' # Constants for the CloudWatch dashboard # The start of the time range to use for each widget on the dashboard. Set a 15 minutes view. DASHBOARD_TIME_RANGE_START = '-PT15M' # The maximum amount of horizontal grid units the widget will take up. DASHBOARD_MAX_WIDGET_WIDTH = 24 # The amount of vertical grid units the global description widget will take up. DASHBOARD_GLOBAL_DESCRIPTION_WIDGET_HEIGHT = 3 # The time period used for metric data aggregations. DASHBOARD_METRICS_TIME_PERIOD = 1 # The global description for the CloudWatch dashboard DASHBOARD_GLOBAL_DESCRIPTION = "# Metrics Dashboard \n"\ "This dashboard contains near-real-time metrics sent from your client"\ " or dedicated server. \n You can edit the widgets using the AWS console"\ " or modify your CDK application code. Please note that redeploying"\ " the CDK application will overwrite any changes you made directly"\ " via the AWS console. \n For more information about using the AWS Metrics Gem"\ " and CDK application, please check the AWSMetrics gem document." # The description for the operational health shown on the CloudWatch dashboard DASHBOARD_OPERATIONAL_HEALTH_DESCRIPTION = "## Operational Health \n"\ "This section covers operational metrics for the data analytics pipeline "\ "during metrics event ingestion, processing and analytics." # The description for the real time analytics shown on the CloudWatch dashboard DASHBOARD_REAL_TIME_ANALYTICS_DESCRIPTION = "## Real-time Streaming Analytics \n"\ "This section covers real-time analytics metrics sent " \ "to the data analytics pipeline."