Zephyrnet-logo

Bouw en implementeer aangepaste connectoren voor Amazon Redshift met Amazon Lookout for Metrics

Datum:

Amazon Lookout voor statistieken detecteert uitbijters in uw tijdreeksgegevens, bepaalt de onderliggende oorzaken en stelt u in staat snel actie te ondernemen. Gebouwd op basis van dezelfde technologie die wordt gebruikt door Amazon.com, Lookout for Metrics weerspiegelt 20 jaar expertise in uitbijterdetectie en machine learning (ML). Lees onze GitHub repo voor meer informatie over hoe u over uw gegevens kunt nadenken bij het instellen van een anomaliedetector.

In dit bericht bespreken we hoe u aangepaste connectoren kunt bouwen en implementeren voor: Amazon roodverschuiving met behulp van Lookout for Metrics.

Inleiding tot tijdreeksgegevens

U kunt tijdreeksgegevens gebruiken om waarden te meten en te bewaken die van het ene punt in de tijd naar het andere verschuiven. Een eenvoudig voorbeeld zijn aandelenkoersen over een bepaald tijdsinterval of het aantal klanten dat per dag in een garage wordt gezien. U kunt deze waarden gebruiken om trends en patronen te herkennen en betere beslissingen te nemen over waarschijnlijke toekomstige gebeurtenissen. Met Lookout for Metrics kunt u belangrijke gegevens structureren in een tabelvorm (zoals een spreadsheet of databasetabel), historische waarden bieden om van te leren en continue gegevenswaarden leveren.

Koppel uw gegevens aan Lookout for Metrics

Sinds de lancering ondersteunt Lookout for Metrics het verstrekken van gegevens van de volgende AWS-services:

Het ondersteunt ook externe gegevensbronnen zoals Salesforce, Marketo, Dynatrace, ServiceNow, Google Analytics en Amplitude, allemaal via Amazon-app-stroom.

Deze connectoren ondersteunen allemaal de continue levering van nieuwe gegevens aan Lookout for Metrics om te leren een model te bouwen voor anomaliedetectie.

Native connectors zijn een effectieve optie om snel aan de slag te gaan met CloudWatch, Amazon S3 en via Amazon AppFlow voor de externe diensten. Bovendien werken deze uitstekend voor uw relationele databasebeheersysteem (RDBMS)-gegevens als u uw informatie in een enkele tabel hebt opgeslagen, of u kunt een procedure maken om die tabel in de toekomst te vullen en te onderhouden.

Wanneer een aangepaste connector gebruiken?

In gevallen waarin u meer flexibiliteit wilt, kunt u aangepaste Lookout for Metrics-connectoren gebruiken. Als uw gegevens zich in een staat bevinden die een extract-, transformatie- en laadproces (ETL) vereist, zoals het samenvoegen van meerdere tabellen, het transformeren van een reeks waarden in een samengestelde of het uitvoeren van complexe nabewerkingen voordat de gegevens aan Lookout for Metrics worden geleverd , kunt u aangepaste connectoren gebruiken. Als u begint met gegevens in een RDBMS en u wilt Lookout for Metrics een historisch voorbeeld geven om van te leren, moet u bovendien een aangepaste connector gebruiken. Hiermee kunt u eerst een groot deel van de geschiedenis invoeren, waarbij u de koude start eisen en sneller tot een model van hogere kwaliteit te komen.

Voor dit bericht gebruiken we Amazon Redshift als ons RDBMS, maar je kunt deze aanpak voor andere systemen aanpassen.

In de volgende situaties moet u aangepaste connectoren gebruiken:

  • Uw gegevens zijn verspreid over meerdere tabellen
  • U moet complexere transformaties of berekeningen uitvoeren voordat het past in de configuratie van een detector
  • U wilt al uw historische gegevens gebruiken om uw detector te trainen

Voor een snellere start kunt u in de volgende situaties ingebouwde connectoren gebruiken:

  • Uw gegevens staan ​​in een enkelvoudige tabel die alleen informatie bevat die wordt gebruikt door uw anomaliedetector
  • U bent vertrouwd met het gebruik van uw historische gegevens en wacht vervolgens op de koudestartperiode te verstrijken voordat de anomaliedetectie begint

Overzicht oplossingen

Alle inhoud die in dit bericht wordt besproken, wordt gehost op de GitHub repo.

Voor dit bericht gaan we ervan uit dat je je gegevens opslaat in Amazon Redshift over een paar tabellen en dat je deze wilt verbinden Lookout for Metrics voor anomaliedetectie.

Het volgende diagram illustreert onze oplossingsarchitectuur.

Oplossingsarchitectuur

Op hoog niveau beginnen we met een AWS CloudFormatie sjabloon die de volgende componenten implementeert:

  • An Amazon Sage Maker notebook-instantie die de aangepaste connectoroplossing implementeert.
  • An AWS Stap Functies werkstroom. De eerste stap voert een historische verkenning van uw gegevens uit; de tweede configureert uw detector (het getrainde model en eindpunt voor Lookout for Metrics).
  • Een S3-emmer voor al je AWS Lambda functioneert zoals ingezet (weggelaten uit het architectuurdiagram).
  • Een S3-bucket voor al uw historische en continue gegevens.
  • Een CloudFormation-sjabloon en Lambda-functie die uw gegevens volgens een schema begint te crawlen.

Als u deze oplossing wilt aanpassen aan uw eigen omgeving, werkt u het volgende bij:

  • Een JSON-configuratiesjabloon die beschrijft hoe uw gegevens eruit moeten zien bij Lookout for Metrics en de naam van uw AWS-geheimenmanager locatie die wordt gebruikt om authenticatiegegevens op te halen.
  • Een SQL-query die uw historische gegevens ophaalt.
  • Een SQL-query die uw continue gegevens ophaalt.

Nadat u die onderdelen hebt gewijzigd, kunt u de sjabloon implementeren en binnen een uur aan de slag gaan.

Implementeer de oplossing

Om deze oplossing van begin tot eind verkend te maken, hebben we een CloudFormation-sjabloon toegevoegd die een productie-achtig Amazon Redshift-cluster implementeert. Het zit vol met voorbeeldgegevens om te testen met Lookout for Metrics. Dit is een voorbeeld van een e-commercedataset die ongeveer 2 jaar in de toekomst projecteert vanaf de publicatie van dit bericht.

Creëer uw Amazon Redshift-cluster

Implementeer de meegeleverde sjabloon om de volgende bronnen in uw account te maken:

  • Een Amazon Redshift-cluster in een VPC
  • Secrets Manager voor authenticatie
  • Een SageMaker-notebookinstantie die alle installatieprocessen uitvoert voor de Amazon Redshift-database en het aanvankelijk laden van de dataset
  • Een S3-bucket die wordt gebruikt om gegevens in Amazon Redshift te laden

Het volgende diagram illustreert hoe deze componenten samenwerken.

Productie roodverschuiving instellen

We bieden Secrets Manager referentiegegevens voor uw database, die worden doorgegeven aan het levenscyclusbeleid van een SageMaker-notebook dat bij het opstarten wordt uitgevoerd. Eenmaal opgestart, maakt de automatisering tabellen in uw Amazon Redshift-cluster en laadt gegevens van Amazon S3 in het cluster voor gebruik met onze aangepaste connector.

Voer de volgende stappen uit om deze resources te implementeren:

  1. Kies Start Stack:
  2. Kies Volgende.
    Installatiestap beschreven door tekst
  3. Laat de stapeldetails op hun standaard staan ​​en kies Volgende weer.Installatiestap beschreven door tekst
  4. Laat de stapelopties op hun standaard staan ​​en kies Volgende weer.Installatiestap beschreven door tekst
  1. kies Ik erken dat AWS CloudFormation IAM-bronnen kan creëren, kies dan Maak een stapel.Installatiestap beschreven door tekst

De taak duurt een paar minuten om te voltooien. U kunt de voortgang volgen op de AWS CloudFormation-console.

CloudFormation-status

Wanneer de status verandert in CREATE_COMPLETE, bent u klaar om de rest van de oplossing te implementeren.

Stapel voltooid

Gegevensstructuur

We hebben onze standaard e-commerce dataset genomen en opgesplitst in drie specifieke tabellen, zodat we ze later kunnen toevoegen via de aangepaste connector. Naar alle waarschijnlijkheid zijn uw gegevens verspreid over verschillende tabellen en moeten ze op een vergelijkbare manier worden genormaliseerd.

De eerste tabel geeft het platform van de gebruiker aan (wat voor soort apparaat gebruikers gebruiken, zoals telefoon of webbrowser).

ID Naam
1 pc_web

De volgende tabel geeft onze marktplaats aan (waar de gebruikers zich bevinden).

ID Naam
1 JP

Onze e-commercetabel toont de totale waarden voor weergaven en inkomsten op dit moment.

ID TS Platform Marktplaats keer bekeken Inkomsten
1 01/10/2022 10:00:00 1 1 90 2458.90

Wanneer we later in dit bericht query's uitvoeren, zijn ze tegen een database met deze structuur.

Een aangepaste connector implementeren

Nadat u de vorige sjabloon hebt geïmplementeerd, voert u de volgende stappen uit om een ​​aangepaste connector te implementeren:

  1. Navigeer op de AWS CloudFormation-console naar de Uitgangen tabblad van de sjabloon die u eerder hebt geïmplementeerd.
    Uitgangen Link:
  2. Let op de waarde van RedshiftCluster en RedshiftSecreten sla ze vervolgens op in een tijdelijk bestand om ze later te gebruiken.
    Uitvoerwaarden
  3. Kies Start stapel om uw resources te implementeren met AWS CloudFormation:
  4. Kies Volgende.
    CloudFormation-configuratie
  5. Werk de waarde voor de RedshiftCluster bij en RedshiftSecret met de informatie die u eerder hebt gekopieerd.
  6. Kies Volgende.CloudFormation-configuratie
  7. Laat de stapelopties op hun standaard staan ​​en kies Volgende.Cloudformation-configuratie
  8. kies Ik erken dat AWS CloudFormation IAM-bronnen kan creëren, kies dan Maak een stapel.Cloudformation-configuratie

Het proces duurt 30-40 minuten, waarna u een volledig geïmplementeerde oplossing heeft met de demo-omgeving.

Bekijk uw anomaliedetector

Nadat u de oplossing heeft geïmplementeerd, kunt u uw detector lokaliseren en eventuele gevonden afwijkingen bekijken.

  1. Meld u aan bij de Lookout for Metrics-console in us-east-1.
  2. Kies in het navigatievenster Detectoren.Zoek naar metrische detectoren Link

De Detectoren pagina toont al uw actieve detectoren.

  1. Kies de detector l4m-custom-redshift-connector-detector.

Nu kunt u de configuratie van uw detector bekijken, waarschuwingen configureren en afwijkingen bekijken.

Om afwijkingen te bekijken, kiest u ofwel: Afwijkingen in de navigatiepagina of kies Anomalieën bekijken op de detectorpagina.
Link naar afwijkingen bekijken

Na verloop van tijd, meestal niet meer dan een paar dagen, zou u een lijst met anomalieën op deze pagina moeten zien. U kunt ze diepgaand onderzoeken om te zien hoe de verstrekte gegevens abnormaal leken. Als u uw eigen dataset heeft aangeleverd, kunnen de afwijkingen pas verschijnen na een ongebruikelijke gebeurtenis.

Lijst met anomalieën

Nu de oplossing is geïmplementeerd en actief is, gaan we dieper in op hoe deze connector werkt.

Hoe een aangepaste connector werkt

In deze sectie bespreken we de kerncomponenten van de connector. We laten ook zien hoe u een aangepaste connector bouwt, authenticeert bij Amazon Redshift, query's wijzigt en de detector en dataset wijzigt.

Kern onderdelen

U kunt de volgende componenten uitvoeren en wijzigen om aan uw gegevensbehoeften te voldoen:

Wanneer u implementeert ai_ops/l4m-redshift-solution.yaml, het creëert het volgende:

  • Een S3-emmer voor het opbergen van alle Lambda-functies.
  • Een rol voor een SageMaker-notebook die toegang heeft om alle relevante bronnen te wijzigen.
  • Een SageMaker-configuratie voor de levenscyclus van een notebook die het opstartscript bevat om alle automatisering naar de notebook te klonen en het params.json-bestand te beheren. En voert het shellscript uit (ai_ops/deploy_custom_connector.sh) om de AWS SAM-applicaties te implementeren en de params.json bestand.

ai_ops/deploy_custom_connector.sh begint met het implementeren van ai_ops/template.yaml, wat het volgende creëert:

  • Een S3-emmer voor het opbergen van de params.json bestand en alle invoergegevens voor Lookout for Metrics.
  • Een S3-bucketbeleid waarmee Lookout for Metrics kan communiceren met Amazon S3.
  • Een Lambda-functie die wordt aangeroepen op de emmer wanneer de params.json bestand wordt geüpload en start de Step Functions-statusmachine.
  • An AWS Identiteits- en toegangsbeheer (IAM)-rol om de statusmachine uit te voeren.
  • Een gedeelde Lambda-laag met ondersteunende functies.
  • Een rol voor Lookout for Metrics om toegang te krijgen tot gegevens in Amazon S3.
  • Een Lambda-functie om alle historische gegevens te crawlen.
  • Een Lambda-functie om een ​​Lookout for Metrics-detector te maken en te activeren.
  • Een toestandsmachine die de stroom beheert tussen het maken van die historische dataset en de detector.

Na ai_ops/deploy_custom_connector.sh maakt de eerste batch items aan, het werkt de params.json bestand met nieuwe relevante informatie van de detector en de IAM-rollen. Het wijzigt ook het Amazon Redshift-cluster zodat de nieuwe rol van Lookout for Metrics kan communiceren met het cluster. Na 30 seconden te hebben geslapen om IAM-propagatie te vergemakkelijken, kopieert het script de params.json bestand naar de S3-bucket, die de reeds ingezette state-machine aanroept.

Vervolgens implementeert het script een andere AWS SAM-toepassing die is gedefinieerd in l4m-redshift-continuous-crawl.yaml. Deze eenvoudige applicatie definieert en implementeert een gebeurtenistrigger om het crawlen van live gegevens volgens een schema te starten (bijvoorbeeld elk uur) en een Lambda-functie die de crawl uitvoert.

Zowel de historische gecrawlde data als de continu gecrawlde data komen binnen in dezelfde S3-bucket. Lookout for Metrics gebruikt de informatie eerst voor training en vervolgens als inferentiegegevens, waar het wordt gecontroleerd op afwijkingen zodra het binnenkomt.

Elke Lambda-functie bevat ook een query.sql bestand dat p
levert de basisquery die aan Amazon Redshift wordt overhandigd. Later voegen de functies UNLOAD toe aan elke query en leveren de gegevens via CSV aan Amazon S3.

Een aangepaste connector bouwen

Begin door deze repository in uw eigen account te plaatsen of een kopie te downloaden voor privéontwikkeling. Wanneer u substantiële wijzigingen aanbrengt, zorg er dan voor dat de verwijzingen naar deze specifieke repository in de volgende bestanden worden bijgewerkt en verwijzen naar openbaar toegankelijke eindpunten voor Git:

  • README.md – Dit bestand, in het bijzonder de Start stapel knoppen, gaat ervan uit dat je de live-versie gebruikt die je alleen in deze repository ziet
  • ai_ops/l4m-redshift-solution.yaml – In deze sjabloon definieert een Jupyter-notebooklevenscyclusconfiguratie de te klonen repository (implementeert de aangepaste connector)
  • sample_resources/redshift/l4m-redshift-sagemakernotebook.yaml – In deze sjabloon definieert een Amazon SageMaker Notebook-levenscyclusconfiguratie de te klonen repository (implementeert het productievoorbeeld van Amazon Redshift).

Authenticeren bij Amazon Redshift

Wanneer u onderzoekt hoe u dit kunt uitbreiden naar uw eigen omgeving, is het eerste waar u aan moet denken de authenticatie naar uw Amazon Redshift-cluster. U kunt dit bereiken door gebruik te maken van de Amazon Redshift-gegevens-API en door de inloggegevens erin op te slaan AWS Secrets beherenr.

In Secrets Manager zoekt deze oplossing naar de bekende geheime naam redshift-l4mintegration en bevat een JSON-structuur zoals de volgende:

{ "password": "DB_PASSWORD", "username": "DB_USERNAME", "dbClusterIdentifier": "REDSHIFT_CLUSTER_ID", "db": "DB_NAME", "host": "REDSHIFT_HOST", "port": 8192
}

Als u een andere geheime naam wilt gebruiken dan de opgegeven naam, moet u de waarde bijwerken in ai_ops/l4m-redshift-solution.yaml. Als u de namen van de andere parameters wilt wijzigen, moet u ernaar zoeken in de repository en hun referenties dienovereenkomstig bijwerken.

Wijzig zoekopdrachten naar Amazon Redshift

Deze oplossing maakt gebruik van de Amazon Redshift Data API om queries mogelijk te maken die asynchroon kunnen worden uitgevoerd vanaf de client die ze aanroept.

In het bijzonder kan een Lambda-functie een query starten met de database en vervolgens de DB-engine alles laten beheren, inclusief het schrijven van de gegevens in een gewenst formaat naar Amazon S3. Omdat we de DB-engine dit laten afhandelen, vereenvoudigen we de bewerkingen van onze Lambda-functies en hoeven we ons geen zorgen te maken over runtime-limieten. Als je complexere transformaties wilt uitvoeren, wil je misschien meer op Step Functions gebaseerde AWS SAM-applicaties bouwen om dat werk af te handelen, misschien zelfs met Docker-containers over Lambda.

Voor de meeste wijzigingen kunt u de querybestanden bewerken die zijn opgeslagen in de twee beschikbare Lambda-functies:

Besteed aandacht aan de continue crawl om ervoor te zorgen dat de datumbereiken samenvallen met uw gewenste detectie-interval. Bijvoorbeeld:

select ecommerce.ts as timestamp, ecommerce.views, ecommerce.revenue, platform.name as platform, marketplace.name as marketplace
from ecommerce, platform, marketplace
where ecommerce.platform = platform.id and ecommerce.marketplace = marketplace.id and ecommerce.ts < DATEADD(hour, 0, getdate()) and ecommerce.ts > DATEADD(hour, -1, getdate())

Het voorgaande codefragment is onze demo-continue crawl-functie en gebruikt de DATEADD-functie om gegevens van het afgelopen uur te berekenen. In combinatie met de CloudWatch Events-trigger die deze functie elk uur plant, kunnen we betrouwbaar gegevens naar Lookout for Metrics streamen.

Het werk gedefinieerd in de query.sql bestanden is slechts een deel van de uiteindelijke berekende query. De volledige query wordt gebouwd door de respectieve Python-bestanden in elke map en voegt het volgende toe:

  • IAM-rol voor Amazon Redshift om te gebruiken voor de query
  • S3-bucketinformatie voor waar de bestanden moeten worden geplaatst
  • CSV-bestand export gedefinieerd

Het ziet eruit als de volgende code:

unload ('select ecommerce.ts as timestamp, ecommerce.views, ecommerce.revenue, platform.name as platform, marketplace.name as marketplace
from ecommerce, platform, marketplace
where ecommerce.platform = platform.id and ecommerce.marketplace = marketplace.id and ecommerce.ts < DATEADD(hour, 0, getdate()) and ecommerce.ts > DATEADD(hour, -1, getdate())') to 's3://BUCKET/ecommerce/live/20220112/1800/' iam_role 'arn:aws:iam::ACCOUNT_ID:role/custom-rs-connector-LookoutForMetricsRole-' header CSV;

Zolang uw voorbereide query kan worden ingekapseld door de UNLOAD-instructie, zou deze zonder problemen moeten werken.

Als u de frequentie wilt wijzigen voor hoe vaak de continue detectorfunctie wordt uitgevoerd, werkt u de cron-expressie bij in ai_ops/l4m-redshift-continuous-crawl.yaml. Het is in de laatste regel gedefinieerd als Schedule: cron(0 * * * ? *).

Pas de Lookout for Metrics-detector en dataset aan

De laatste componenten richten zich op Lookout for Metrics zelf, voornamelijk de detector- en datasetconfiguraties. Ze zijn allebei gedefinieerd in ai_ops/params.json.

Het bijgevoegde bestand ziet eruit als de volgende code:

{ "database_type": "redshift", "detector_name": "l4m-custom-redshift-connector-detector", "detector_description": "A quick sample config of how to use L4M.", "detector_frequency": "PT1H", "timestamp_column": { "ColumnFormat": "yyyy-MM-dd HH:mm:ss", "ColumnName": "timestamp" }, "dimension_list": [ "platform", "marketplace" ], "metrics_set": [ { "AggregationFunction": "SUM", "MetricName": "views" }, { "AggregationFunction": "SUM", "MetricName": "revenue" } ], "metric_source": { "S3SourceConfig": { "FileFormatDescriptor": { "CsvFormatDescriptor": { "Charset": "UTF-8", "ContainsHeader": true, "Delimiter": ",", "FileCompression": "NONE", "QuoteSymbol": """ } }, "HistoricalDataPathList": [ "s3://id-ml-ops2-inputbucket-18vaudty8qtec/ecommerce/backtest/" ], "RoleArn": "arn:aws:iam::ACCOUNT_ID:role/id-ml-ops2-LookoutForMetricsRole-IZ5PL6M7YKR1", "TemplatedPathList": [ "" ] } }, "s3_bucket": "", "alert_name": "alerter", "alert_threshold": 1, "alert_description": "Exports anomalies into s3 for visualization", "alert_lambda_arn": "", "offset": 300, "secret_name": "redshift-l4mintegration"
}

ai_ops/params.json beheert de volgende parameters:

  • database_type
  • detectornaam
  • detector_description
  • detector_frequentie
  • timestamp_column en details
  • dimensie_lijst
  • metrische_set
  • compenseren

Niet elke waarde kan van tevoren statisch worden gedefinieerd; deze zijn bijgewerkt door ai_ops/params_builder.py:

  • HistorischDataPadLijst
  • RolArn
  • SjabloonpadLijst
  • s3_bucket

Om een ​​van deze entiteiten te wijzigen, moet u het bestand bijwerken dat ervoor verantwoordelijk is en uw detector wordt dienovereenkomstig aangepast.

Opruimen

Volg de stappen in deze sectie om alle resources die door deze oplossing zijn gemaakt op te schonen en ervoor te zorgen dat u niet wordt gefactureerd na evaluatie of gebruik van de oplossing.

  1. Leeg alle gegevens van de S3-buckets die zijn gemaakt op basis van hun respectievelijke sjablonen:
    1. ProductieRoodverschuivingDemo - S3ContentBucket
    2. CustomRedshift-connector - S3LambdaBucket
    3. aangepaste RS-connector - InputBucket
  2. Verwijder uw detector via de Lookout for Metrics-console.
  3. Verwijder de CloudFormation-stacks in de volgende volgorde (wacht tot er een is voltooid voordat u naar de volgende gaat):
    1. aangepaste rs-connector-crawl
    2. aangepaste RS-connector
    3. CustomRedshift-connector
    4. ProductieRoodverschuivingDemo

Conclusie

U hebt nu gezien hoe u een Amazon Redshift-database kunt verbinden met Lookout for Metrics met behulp van de native Amazon Redshift Data API's, CloudWatch Events en Lambda-functies. Met deze aanpak kunt u relevante datasets maken op basis van uw informatie in Amazon Redshift om in slechts enkele minuten anomaliedetectie op uw tijdreeksgegevens uit te voeren. Als u de SQL-query kunt opstellen om de informatie te verkrijgen, kunt u ML-aangedreven anomaliedetectie voor uw gegevens inschakelen. Van daaruit moeten uw afwijkingen afwijkende gebeurtenissen laten zien en u helpen te begrijpen hoe een afwijking kan worden veroorzaakt of beïnvloed door anderen, waardoor u minder tijd nodig heeft om problemen te begrijpen die van cruciaal belang zijn voor uw bedrijf of werklast.


Over de auteurs

Chris koning is Principal Solutions Architect in Applied AI bij AWS. Hij heeft een speciale interesse in het lanceren van AI-services en hielp bij het groeien en bouwen van Amazon Personalize en Amazon Forecast voordat hij zich richtte op Amazon Lookout for Metrics. In zijn vrije tijd houdt hij van koken, lezen, boksen en het bouwen van modellen om de uitkomst van vechtsporten te voorspellen.

Alex Kim is een Sr. Product Manager voor Amazon Forecast. Zijn missie is om AI / ML-oplossingen te leveren aan alle klanten die hiervan kunnen profiteren. In zijn vrije tijd geniet hij van alle soorten sporten en het ontdekken van nieuwe eetgelegenheden.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?