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 활성화가 성공한 것입니다. (만약 일부 Transaction 상태가 발생하지 않았다면, 예를 들어 rollback이 없었다면 해당 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) |
현재 주기 내 커밋/롤백된 트랜잭션 최대 소요 시간 |