Seata¶
デプロイ実装¶
Seata は TC で Metrics データ収集を有効にし、Prometheus 監視システムへ出力できます。
Seata Metrics を有効にする¶
- TC で Metrics の有効化を設定し、TC の Metrics 設定項目を開きます。Seata Server にはすでに Metrics(
seata-metrics-all) 依存関係が含まれていますが、デフォルトでは無効です。metrics の収集設定を有効にする必要があります。(この手順は非常に重要です)
Seata 1.5.0+ では application.yaml を使用します
seata:
metrics:
enabled: true
registry-type: compact
exporter-list: prometheus
exporter-prometheus-port: 9898
Seata <1.5.0 で metrics を有効にする
GitHub アドレスの設定:https://github.com/seata/seata/blob/1.4.2/server/src/main/resources/file.conf.example
サーバー側の metrics 設定
【file.conf】
metrics {
enabled = true
registryType = "compact"
# multi exporters use comma divided
exporterList = "prometheus"
exporterPrometheusPort = 9898
}
【registry.conf 】
registry {
type = "nacos"
nacos {
application = "アプリ名"
serverAddr = "xxxx:ポート"
group = "グループ"
namespace = "名前空間"
cluster = "default"
username = "実際の値を入力"
password = "実際の値を入力"
}
}
config {
type = "file"
file {
name="file:/root/seata-config/file.conf"
}
}
- http://tc-server-ip:9898/metrics にアクセスし、metrics データに到達できるか確認します
# HELP seata seata
# TYPE seata untyped
seata_transaction{meter="counter",role="tc",status="committed",} 1358.0 1551946035372
seata_transaction{meter="counter",role="tc",status="active",} 0.0 1551946035372
seata_transaction{meter="summary",role="tc",statistic="count",status="committed",} 6.0 1551946035372
seata_transaction{meter="summary",role="tc",statistic="total",status="committed",} 6.0 1551946035372
seata_transaction{meter="summary",role="tc",statistic="tps",status="committed",} 1.6163793103448276 1551946035372
seata_transaction{meter="timer",role="tc",statistic="count",status="committed",} 6.0 1551946035372
seata_transaction{meter="timer",role="tc",statistic="total",status="committed",} 910.0 1551946035372
seata_transaction{meter="timer",role="tc",statistic="max",status="committed",} 164.0 1551946035372
seata_transaction{meter="timer",role="tc",statistic="average",status="committed",} 151.66666666666666 1551946035372
上記のようなデータが取得できれば、metric の有効化が成功しています。(もし rollback など一部の Transaction 状態が発生していない場合、対応する Metrics 指標も存在しません(出力されません))
DataKit コレクターを有効にする¶
- DataKit の Prometheus プラグインを有効にし、
seata-prom.confを作成します
seata-prom.conf設定ファイルを修正します
[[inputs.prom]]
urls = ["http://ip:9898/metrics"]
## url へのリクエストエラーを無視する
ignore_req_err = false
## コレクターの別名
source = "リソース名"
metric_types = []
## 指標フィルタ。seata_ 関連の指標のみ収集
metric_name_filter = ["seata_*"]
measurement_prefix = "seata_"
## 収集間隔 "ns", "us" (or "µs"), "ms", "s", "m", "h"
interval = "10s"
## TLS 設定
tls_open = false
## カスタム Tags
[inputs.prom.tags]
app = "カスタム app 名"
# more_tag = "some_other_value"
- DataKit を再起動します
指標の詳細¶
| Metrics | 説明 |
|---|---|
seata.transaction(role=tc,meter=counter,status=active/committed/rollback) |
現在アクティブ中/コミット済み/ロールバック済みのトランザクション総数 |
seata.transaction(role=tc,meter=summary,statistic=count,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクション数 |
seata.transaction(role=tc,meter=summary,statistic=tps,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクション TPS(transaction per second) |
seata.transaction(role=tc,meter=timer,statistic=total,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクションの総処理時間 |
seata.transaction(role=tc,meter=timer,statistic=count,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクション数 |
seata.transaction(role=tc,meter=timer,statistic=average,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクションの平均処理時間 |
seata.transaction(role=tc,meter=timer,statistic=max,status=committed/rollback) |
現在の周期内のコミット/ロールバックされたトランザクションの最大処理時間 |