Prometheus-timestream-adapter is a service which receives Prometheus metrics through remote_write
, and sends them into AWS Timestream.
go build
go test
Usage of ./prometheus-timestream-adapter:
--awsRegion string (default "eu-central-1")
--databaseName string (default "prometheus-database")
--help
--listenAddr string (default ":9201")
--logLevel string (default "error")
--tableName string (default "prometheus-table")
--telemetryPath string (default "/metric")
--tls
--tlsCert string (default "tls.cert")
--tlsKey string (default "tls.key")
To configure Prometheus to send samples to this binary, add the following to your prometheus.yml
:
remote_write:
- url: "http://prometheus-timestream-adapter:9201/write"
:info: AWS Timestream has a very powerful query language and there is a Grafana Plugin supporting Timestream as a datasource. However, there is a basic reader implementation.
remote_read:
- url: "http://prometheus-timestream-adapter:9201/read"
The Session will attempt to load configuration and credentials from the environment, configuration files, and other credential sources.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadWriteToTable",
"Effect": "Allow",
"Action": [
"timestream:WriteRecords",
"timestream:Select"
],
"Resource": "arn:aws:timestream:region:AccoundId:database/DatabaseName/table/TableName"
},
{
"Sid": "AllowDescribeEndpoints",
"Effect": "Allow",
"Action": "timestream:DescribeEndpoints",
"Resource": "*"
},
{
"Sid": "AllowValueRead",
"Effect": "Allow",
"Action": "timestream:SelectValues",
"Resource": "*"
}
]
}
The maximum number of characters for an AWS Timestream Dimension name is 256 bytes. Is a metric name is bigger than that it can't be written to AWS Timestream.