Prometheus est une application utilisée pour la surveillance des systèmes et les alertes. Prometheus stocke les mesures sous forme de séries chronologiques, chaque mesure étant associée à un nom. Prometheus collecte des données à l'aide d'un modèle d'extraction, en interrogeant une liste de sources de données à une fréquence d'interrogation spécifiée. Dans Prometheus, le stockage local a une limite de taille. Dans Prometheus, le stockage peut être augmenté en utilisant des solutions de stockage à distance. L'Amazon Timestream pour LiveAnalytics permet à Prometheus d'utiliser Timestream pour LiveAnalytics comme système de stockage à distance.
En intégrant Prometheus à Timestream for LiveAnalytics, vous pouvez exploiter tout le potentiel de vos données de surveillance, ce qui vous permet de mieux comprendre le comportement du système et de prendre des décisions plus éclairées. Plus précisément, Timestream for LiveAnalytics offre les avantages suivants :
Sans serveur et évolutivité : Grâce à l'architecture sans serveur de Timestream for LiveAnalytics, stockez de grandes quantités de données de séries temporelles sans vous soucier des limites de stockage local, ce qui permet une conservation plus longue et une analyse plus complète.
Corrélation et analyse : Intégrez les données Prometheus à d'autres sources de données dans Timestream, ce qui permet d'obtenir des informations plus approfondies et d'établir des corrélations entre différents ensembles de données.
Requête SQL : Accédez rapidement aux données Prometheus et analysez-les à l'aide de SQL, ce qui simplifie l'exécution de requêtes ad hoc, la création de tableaux de bord personnalisés et l'élaboration de rapports.
Exploration améliorée des données : Utilisez les fonctions d'analyse avancées de Timestream for LiveAnalytics, telles que l'agrégation, le filtrage et le regroupement, pour mieux comprendre les performances et le comportement du système.
Rentabilité : Réduisez les coûts de stockage en transférant les données Prometheus vers une solution de stockage évolutive basée sur le cloud.
Le code source du connecteur Prometheus de Timestream for LiveAnalytics et une documentation supplémentaire sont disponibles dans le document Amazon Timestream for LiveAnalytics Prometheus Connector dans le référentiel Amazon Timestream for LiveAnalytics Prometheus Connector.
Dans cet article, nous montrons comment utiliser le connecteur Prometheus Timestream for LiveAnalytics pour utiliser Timestream for LiveAnalytics comme stockage distant pour Prometheus avec un déploiement en un clic.
Présentation de la solution
Le connecteur Prometheus Timestream for LiveAnalytics fait office de traducteur entre Prometheus et Timestream for LiveAnalytics. Le connecteur Prometheus reçoit et envoie des données de séries temporelles entre Prometheus et Timestream for LiveAnalytics par le biais des fonctions de Prometheus d'écriture et de lecture à distance de Prometheus de Prometheus. L'image suivante donne un aperçu de l'architecture du connecteur.
Le connecteur peut être exécuté localement, en tant que conteneur Docker ou déployé en tant qu'application AWS Lambda AWS Lambda. Cet article se concentre sur l'option recommandée, le déploiement en un clic, qui déploie le connecteur en tant que fonction Lambda à l'aide d'un fichier AWS CloudFormation AWS CloudFormation stocké dans un espace de stockage public Amazon Simple Storage Service (Amazon S3) (Amazon S3). L'image suivante donne un aperçu des ressources créées lorsque le connecteur est déployé en tant que pile CloudFormation stack avec déploiement en un clic.
L'image suivante montre les ressources déployées par la pile CloudFormation lorsqu'elle est utilisée.
La pile CloudFormation peut prendre environ cinq minutes pour terminer la création des ressources. Vous pouvez consulter la progression dans la console AWS CloudFormation sur l'onglet Événements de la pile. Une fois la création terminée, l'état de la pile s'affiche comme suit CREATE_COMPLETE. La pile déploie les ressources suivantes :
Le connecteur Amazon Timestream for LiveAnalytics Prometheus en tant que fonction Lambda, qui agit comme une couche de traduction entre Prometheus et Timestream for LiveAnalytics.
Une Amazon API Gatewayqui achemine les demandes entrantes de Prometheus et renvoie les réponses.
Un rôle AWS IAM, utilisé pour autoriser le déploiement de la fonction Lambda et de la passerelle API.
Une politique AWS IAM, utilisée pour envoyer les journaux à Amazon CloudWatch.
La pile CloudFormation fournit les paramètres suivants :
APIGatewayStageName: Le nom d'étape par défaut de la passerelle API. La valeur par défaut est "dev".MemorySize: La taille de la mémoire en Mo de la fonction Lambda. La valeur par défaut est 512.ApiGatewayTimeoutInMillis: La durée maximale en millisecondes pendant laquelle un événement API Gateway attendra avant de s'arrêter. La valeur par défaut est 30000.LambdaTimeoutInSeconds: La durée en secondes pour exécuter le connecteur sur AWS Lambda avant l'expiration du délai. La valeur par défaut est 30.ReadThrottlingBurstLimit: Le nombre de demandes de lecture en rafale par seconde que la passerelle API autorise. La valeur par défaut est 1200.WriteThrottlingBurstLimit: Le nombre de demandes d'écriture en rafale par seconde que la passerelle API autorise. La valeur par défaut est 1200.DefaultDatabase: Nom de la base de données Prometheus par défaut. La valeur par défaut est "PrometheusDatabase".DefaultTable: Nom de la table par défaut de Prometheus. La valeur par défaut est "PrometheusMetricsTable".ExecutionPolicyName: Le nom de la politique d'exécution de base créée pour AWS Lambda. La valeur par défaut est "LambdaExecutionPolicy".LogLevel: Le niveau de sortie des journaux. Les valeurs valides sont info, warn, debug et error. La valeur par défaut est info.
Les coûts des services AWS utilisés dans cette solution sont à votre charge.
Utilisation du connecteur Prometheus Timestream for LiveAnalytics :
Cet article est destiné à servir de guide de démarrage et ne couvre pas la configuration du cryptage TLS entre Prometheus et Amazon API Gateway. Le cryptage TLS est fortement recommandé lorsque le connecteur Prometheus est déployé pour la production. Pour activer le cryptage TLS pour la production, voir Configuration de l'authentification TLS mutuelle pour une API HTTP.
Conditions préalables
Quelques conditions préalables sont requises avant d'utiliser le connecteur.
1. S'inscrire à AWS - Créez un compte AWS avant de commencer. Pour plus d'informations sur la création d'un compte AWS et la récupération de vos informations d'identification AWS, voir S'inscrire à AWS.
2. Créer un utilisateur IAM - Créez un utilisateur IAM disposant des autorisations nécessaires pour déployer le connecteur avec le déploiement en un clic. Voir la section "Configuration de l'utilisateur IAM"ci-dessous.
3. Amazon Timestream - Créez une base de données nommée PrometheusDatabase avec une table nommée PrometheusMetricsTable dans la région de déploiement cible pour Amazon Timestream for LiveAnalytics. Pour créer des bases de données et des tables dans Amazon Timestream, voir Accès à Timestream pour LiveAnalytics et la page Tutoriel Amazon Timestream pour LiveAnalytics.
4. Prometheus - Téléchargez Prometheus à partir du site téléchargement version minimale 0.0. Pour télécharger Prometheus sur un serveur Amazon Elastic Compute Cloud (Amazon EC2) utilisez wget. Par exemple, sur Amazon Linux 2023 :
wget https://github.com/prometheus/prometheus/releases/download/v2.52.0-rc.1/prometheus-2.52.0-rc.1.linux-amd64.tar.gz && \ tar -xvf prometheus-2.52.0-rc.1.linux-amd64.tar.gz
Pour en savoir plus sur Prometheus, consultez leur documentation d'introduction.
Configuration de l'utilisateur IAM
Afin d'utiliser Timestream for LiveAnalytics comme stockage à distance pour Prometheus, une clé d'accès doit être générée et les autorisations de déploiement et d'exécution doivent être configurées.
Clé d'accès
Une clé d'accès est nécessaire pour permettre à Prometheus de lire et d'écrire dans Timestream. L'utilisateur IAM utilisé pour l'exécution doit disposer d'une clé d'accès. Bien que l'utilisation de rôles plutôt que de clés d'accès soit une pratique exemplaire en matière de sécurité AWS, un rôle IAM ne peut pas être utilisé à la place d'une clé d'accès en raison d'une limitation de Prometheus. Le MFA n'est pas pris en charge actuellement.
Pour créer une clé d'accès
1. Accédez à la console AWS IAM.
2. Dans le volet de navigation, choisissez Gestion des accès, Utilisateurs.
3. Sélectionnez ou Créer l'utilisateur que vous souhaitez utiliser pour l'exécution dans la liste des utilisateurs.
4. Sous l'onglet Résumé sélectionnez Créer une clé d'accès.
5. Pour Cas d'utilisation sélectionner Autre et choisissez Suivant.
6. Si vous le souhaitez, donnez une description à la clé d'accès.
7. Sélectionnez Créer une clé d'accès.
8. Notez l'ID de votre clé d'accès et enregistrez votre clé d'accès secrète dans un fichier nommé secretAccessKey.txt.
Autorisations de déploiement
L'utilisateur qui déploie ce projet doit disposer des autorisations suivantes. Ces autorisations de déploiement permettent de s'assurer que la pile CloudFormation peut déployer les ressources nécessaires. Assurez-vous que les valeurs de account-id et région dans la section des ressources sont mises à jour avant d'utiliser directement ce modèle.
Remarque - Toutes les autorisations ont des ressources limitées, à l'exception des actions qui ne peuvent pas être limitées à une ressource spécifique. Les actions API Gateway ne peuvent pas limiter les ressources car le nom de la ressource est généré automatiquement par le modèle. Voir les liens de documentation suivants pour les limitations d'actions de CloudFormation, SNS et IAM : CloudFormation, SNSet IAM.
Note - Cette politique est trop longue pour être ajoutée en ligne lors de la création de l'utilisateur et doit être créée en tant que politique et attachée à l'utilisateur.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "cloudformation:ListStacks", "cloudformation:GetTemplateSummary", "iam:ListRoles", "sns:ListTopics", "apigateway:GET", "apigateway:POST", "apigateway:PUT", "apigateway:TagResource" ], "Resource": [ "arn:aws:apigateway:<region>::/apis/*", "arn:aws:apigateway:<region>::/apis", "arn:aws:apigateway:<region>::/tags/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:CreateRole", "iam:AttachRolePolicy", "iam:PutRolePolicy", "iam:CreatePolicy", "iam:PassRole", "iam:GetRolePolicy" ], "Resource": "arn:aws:iam::<account-id>:role/PrometheusTimestreamConnector-IAMLambdaRole-*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:GetTemplate", "cloudformation:CreateStack", "cloudformation:GetStackPolicy" ], "Resource": [ "arn:aws:cloudformation:<region>:<account-id>:stack/PrometheusTimestreamConnector/*", "arn:aws:cloudformation:<region>:<account-id>:stack/aws-sam-cli-managed-default/*", "arn:aws:cloudformation:<region>:aws:transform/Serverless-2016-10-31" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:AddPermission", "lambda:CreateFunction", "lambda:TagResource", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:<region>:<account-id>:function:PrometheusTimestreamConnector-LambdaFunction-*" }, { "Sid": "VisualEditor4", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketPolicy", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::timestreamassets-<region>/timestream-prometheus-connector/timestream-prometheus-connector-linux-amd64-*.zip" }, { "Sid": "VisualEditor5", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketPolicy", "s3:GetBucketLocation", "s3:PutObject", "s3:PutBucketPolicy", "s3:PutBucketTagging", "s3:PutEncryptionConfiguration", "s3:PutBucketVersioning", "s3:PutBucketPublicAccessBlock", "s3:CreateBucket", "s3:DescribeJob", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::aws-sam-cli-managed-default*" }, { "Sid": "VisualEditor6", "Effect": "Allow", "Action": [ "cloudformation:GetTemplateSummary" ], "Resource": "*", "Condition": { "StringEquals": { "cloudformation:TemplateUrl": [ "https://timestreamassets-<region>.s3.amazonaws.com/timestream-prometheus-connector/template.yml" ] } } } ] }
Permissions d'exécution
L'utilisateur exécutant ce projet doit avoir les permissions suivantes. Assurez-vous que les valeurs de account-id et de région dans la section des ressources soient mises à jour avant d'utiliser directement ce modèle. Si le nom de la base de données et de la table diffère de celui de la ressource de politique, veillez à mettre à jour leurs valeurs.
Note - La ressource Timestream:DescribeEndpoints doit être * comme spécifié dans security_iam_service-with-iam.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:WriteRecords", "timestream:Select" ], "Resource": "arn:aws:timestream:<region>:<account-id>:database/PrometheusDatabase/table/PrometheusMetricsTable" }, { "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" } ] }
Ces autorisations permettent à la fonction Lambda d'écrire et de lire dans Timestream for LiveAnalytics.
Déploiement du connecteur Prometheus Timestream for LiveAnalytics en un seul clic
Utilisez un modèle AWS CloudFormation pour créer la pile. Pour installer le service Timestream for LiveAnalytics Prometheus Connector, lancez la pile AWS CloudFormation sur la console AWS CloudFormation en cliquant sur le bouton "Lancer" dans la région AWS où vous avez créé la base de données et la table Amazon Timestream for LiveAnalytics :
US East (N. Virginia) us-east-1 : VIEW, Vue dans Composer, Lancer
US East (Ohio) us-east-2 : VIEW, Vue dans Composer, Lancer
US West (Oregon) us-west-2 : VIEW, Vue dans Composer, Lancement
Asie-Pacifique (Sydney) ap-southeast-2 : VIEW, Vue dans Composer, Lancement
Asie-Pacifique (Tokyo) ap-northeast-1 : VIEW, Vue dans Composer, Lancement
Europe (Francfort) eu-central-1 : VIEW, Vue dans Composer, Lancer
Europe (Irlande) eu-west-1 : VIEW, Vue dans Composer, Lancer
Configuration de Prometheus
Pour configurer Prometheus afin qu'il puisse lire et écrire dans Timestream pour LiveAnalytics, configurez l'option remote_read et remote_write dans le fichier prometheus.ymlle fichier de configuration de Prometheus, en remplaçant les sections InvokeWriteURL et InvokeReadURL par les URL de la passerelle API du déploiement. Vous pouvez trouver prometheus.yml dans l'archive de Prometheus extraite, avec des valeurs préremplies. Si vous avez utilisé l'exemple de commande pour télécharger et exécuter Prometheus sur une instance EC2 Amazon Linux 2023 dans la section Prérequis ci-dessus, prometheus.yml se trouve dans ~/prometheus-2.52.0-rc.1.linux-amd64/.
Pour trouver l'



