DB からメトリックを収集して Mackerel のサービスメトリックとして投稿する CLI です。
./bin/mackerel-sql-metric-collector \
--dsn="ssm://PARAMETER_NAME?withDecryption=true" \
--mackerel-apikey="ssm://PARAMETER_NAME?withDecryption=true" \
--default-service="myapp" \
--query-file "s3://BUCKET/KEY"
--dsn
は環境変数DSN
でも設定可能です--mackerel-apikey
は環境変数MACKEREL_APIKEY
でも設定可能です--default-service
は環境変数DEFAULT_SERVICE
でも設定可能です--query-file
を指定しない場合は標準入力からクエリ設定 (YAML) を読み込みます
--query-file
では YAML のデータソースとして 以下の形式をサポートします。
--query-file
以外では オプション値のデータソースとして 以下の形式をサポートします。
STRING
: 文字列file:///PATH/TO/FILE
: ファイルs3://BUCKET/KEY?regisonHint=REGION
: s3ssm://NAME?withDecryption=(true|false)
: パラメータストア
- PostgreSQL
postgres://<CONNECTION_STRING>
postgres://host=localhost port=5432 user=myuser password=mypassword dbname=myapp sslmode=disable
- see. https://github.com/lib/pq/blob/master/README.md
- MySQL
mysql://<CONNECTION_STRING>
mysql://user:password@/dbname
- see. https://github.com/go-sql-driver/mysql#dsn-data-source-name
- SQLite3
sqlite3://<CONNECTION_STRING>
sqlite3://file:test.db?cache=shared&mode=memory
- see. https://github.com/mattn/go-sqlite3#connection-string
- Athena
athena://<CONNECTION_STRING>
athena://db=alb®ion=ap-northeast-1&output_location=s3://athena-results
- see. https://github.com/speee/go-athena/blob/master/README.md
- BigQuery
bigquery://<CONNECTION_STRING>
bigquery://project/location/dataset
- see https://github.com/go-gorm/bigquery#readme
---
- keyPrefix: "users"
valueKey:
"count": "user_num" # users.count メトリックとして user_num の値を使用します
sql: |-
SELECT
COUNT(id) AS user_num
FROM
users
WHERE
created_at >= current_timestamp - INTERVAL '30 DAYS'
- keyPrefix: "users"
service: "other_service" # 投稿先のサービスを --default-service とは別にしたい場合に定義します
valueKey:
"status.#{status}": "user_num" # クエリ結果をメトリック名に使用する
sql: |-
SELECT
status,
COUNT(id) AS user_num,
FROM
users
WHERE
is_admin = $1
AND users.updated_at >= current_timestamp - INTERVAL '30 DAYS'
GROUP BY status
params: # プレースホルダのパラメータ値を指定します
- false
Amazon ECR Public Gallery にて公開しております。以下のようなコマンドでコンテナイメージを取得することができます。
docker pull public.ecr.aws/mackerel/mackerel-sql-metric-collector:latest