Redis Sentinel¶
Redis-sentinel 지표를 표시하며, Redis 클러스터, Slaves, 노드 분포 정보 등을 포함합니다.
설치 및 배포¶
redis-sentinel-exporter 지표 수집기 다운로드¶
다운로드 주소 https://github.com/lrwh/redis-sentinel-exporter/releases
redis-sentinel-exporter 시작¶
java -Xmx64m -jar redis-sentinel-exporter-0.2.jar --spring.redis.sentinel.master=mymaster --spring.redis.sentinel.nodes="127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381"
매개변수 설명
spring.redis.sentinel.master : 클러스터 이름
spring.redis.sentinel.nodes : 센티널 노드 주소
spring.redis.password: redis 비밀번호, redis에 비밀번호가 설정되어 있으면 이 매개변수를 구성해야 합니다
수집기 설정¶
지표 수집¶
- DataKit prom 플러그인을 활성화하고 sample 파일을 복사합니다
redis-sentinel-prom.conf설정 파일을 수정합니다
redis-sentinel-prom.conf
```toml
# {"version": "1.2.12", "desc": "do NOT edit this line"}
[[inputs.prom]]
## Exporter URL
urls = ["http://localhost:6390/metrics"]
## url 요청 오류 무시
ignore_req_err = false
## 수집기 별칭
source = "redis_sentinel"
## 수집 데이터 출력 대상
# 이 항목을 구성하면 수집한 데이터를 센터로 보내지 않고 로컬 파일에 기록할 수 있습니다
# 이후 datakit --prom-conf /path/to/this/conf 명령으로 로컬에 저장된 지표 세트를 바로 디버그할 수 있습니다
# url이 이미 로컬 파일 경로로 설정되어 있다면 --prom-conf가 output 경로의 데이터를 우선적으로 디버그합니다
# output = "/abs/path/to/file"
## 수집 데이터 크기 상한, 단위는 바이트
# 데이터를 로컬 파일로 출력할 때 수집 데이터 크기 상한을 설정할 수 있습니다
# 수집 데이터 크기가 이 상한을 초과하면 수집된 데이터는 버려집니다
# 수집 데이터 크기 상한의 기본값은 32MB입니다
# max_file_size = 0
## 지표 유형 필터링, 선택 가능한 값은 counter, gauge, histogram, summary
# 기본적으로 counter와 gauge 유형의 지표만 수집합니다
# 비어 있으면 필터링하지 않습니다
metric_types = []
## 지표 이름 필터링
# 정규식을 지원하며, 여러 개를 설정할 수 있습니다. 그중 하나만 만족해도 됩니다
# 비어 있으면 필터링하지 않습니다
# metric_name_filter = ["cpu"]
## 지표 세트 이름 접두사
# 이 항목을 구성하면 지표 세트 이름에 접두사를 추가할 수 있습니다
# measurement_prefix = "redis_sentinel_"
## 지표 세트 이름
# 기본적으로 지표 이름을 밑줄 "_"로 나누며, 나눈 뒤 첫 번째 필드를 지표 세트 이름으로 사용하고 나머지 필드를 현재 지표 이름으로 사용합니다
# measurement_name을 구성하면 지표 이름을 나누지 않습니다
# 최종 지표 세트 이름에는 measurement_prefix 접두사가 추가됩니다
measurement_name = "redis_sentinel"
## 수집 간격 "ns", "us" (or "µs"), "ms", "s", "m", "h"
interval = "10s"
## tag 필터링, 여러 tag를 구성할 수 있음
# 일치하는 tag는 무시됩니다
# tags_ignore = ["xxxx"]
## TLS 설정
tls_open = false
# tls_ca = "/tmp/ca.crt"
# tls_cert = "/tmp/peer.crt"
# tls_key = "/tmp/peer.key"
## 사용자 정의 인증 방식, 현재는 Bearer Token만 지원
# token과 token_file: 둘 중 하나만 구성하면 됩니다
# [inputs.prom.auth]
# type = "bearer_token"
# token = "xxxxxxxx"
# token_file = "/tmp/token"
## 사용자 정의 지표 세트 이름
# prefix를 포함한 지표를 한 종류의 지표 세트로 분류할 수 있습니다
# 사용자 정의 지표 세트 이름 구성은 measurement_name 구성 항목보다 우선합니다
#[[inputs.prom.measurements]]
# prefix = "cpu_"
# name = "cpu"
# [[inputs.prom.measurements]]
# prefix = "mem_"
# name = "mem"
## 사용자 정의 Tags
[inputs.prom.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
```
주요 매개변수 설명
- urls:
prometheus지표 주소, 여기에 redis-sentinel-exporter가 노출하는 지표 url을 입력합니다 - source:수집기 별칭
- interval:수집 간격
- measurement_prefix:지표 접두사, 지표 분류 조회에 편리합니다
- tls_open:TLS 설정
- metric_types:지표 유형, 비워 두면 모든 지표를 수집합니다
-
[inputs.prom.tags]:추가로 정의한 tag
-
DataKit 재시작 (로그를 활성화해야 하는 경우, 로그 수집을 먼저 구성한 다음 재시작합니다)
로그 수집¶
수집기 설정¶
redis.conf설정 파일을 수정합니다
[[inputs.logging]]
## 필수
logfiles = [
"D:/software_installer/Redis-x64-3.2.100/log/sentinel_*_log.log",
]
## glob 필터
ignore = [""]
## logging source, 비어 있으면 'default'를 사용합니다
source = "redis-sentinel"
## service tag를 추가합니다, 비어 있으면 $source를 사용합니다
service = "redis-sentinel"
## grok pipeline script 이름
pipeline = ""
## 선택 가능한 status:
## "emerg","alert","critical","error","warning","info","debug","OK"
ignore_status = []
## 선택 가능한 인코딩:
## "utf-8", "utf-16le", "utf-16le", "gbk", "gb18030" 또는 ""
character_encoding = ""
## datakit는 Files 또는 Socket에서 텍스트를 읽으며, 기본 max_textline은 32k입니다
## 로그 텍스트 한 줄이 32Kb를 초과하면 텍스트 길이를 구성하십시오,
## 하지만 최대 길이는 32Mb를 초과할 수 없습니다
# maximum_length = 32766
## 패턴은 regexp여야 합니다. '''이 regexp''' 사용에 주의하십시오
## regexp 링크: https://golang.org/pkg/regexp/syntax/#hdr-Syntax
# multiline_match = '''^\S'''
## 텍스트 문자열에서 ANSI 이스케이프 코드를 제거합니다
remove_ansi_escape_codes = false
## 파일이 비활성 상태이면 무시합니다
## 시간 단위는 "ms", "s", "m", "h"입니다
# ignore_dead_log = "1h"
[inputs.logging.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
매개변수 설명
- files:로그 파일 경로 (일반적으로 접근 로그와 오류 로그를 입력합니다)
- ignore:필터링할 파일 이름
- pipeline:로그 분할 파일
- character_encoding:로그 인코딩 형식
- match:다중 행 로그 수집 활성화
- DataKit 재시작 (사용자 정의 태그를 활성화해야 하는 경우, 플러그인 태그를 먼저 구성한 다음 재시작합니다)
Pipeline 설정¶
로그 Pipeline 기능의 필드 분할 설명
Redis 공통 로그 분할
- 원본 로그는 다음과 같습니다
[11412] 05 May 10:17:31.329 # Creating Server TCP listening socket *:26380: bind: No such file or directory
- 분할 후 필드 목록은 다음과 같습니다
| 필드명 | 필드값 | 설명 |
|---|---|---|
pid |
122 |
프로세스 id |
role |
M |
역할 |
service |
* |
서비스 |
status |
notice |
로그 레벨 |
message |
Creating Server TCP listening socket *:26380: bind: No such file or directory |
로그 내용 |
time |
1557861100164000000 |
나노초 타임스탬프(라인 프로토콜 시간으로 사용) |
DataKit 재시작
지표 상세¶
| 지표 | 의미 | 유형 |
|---|---|---|
| redis_sentinel_known_sentinels | 센티널 인스턴스 수 | Gauge |
| redis_sentinel_known_slaves | 클러스터 슬레이브 인스턴스 수 | Gauge |
| redis_sentinel_cluster_type | 클러스터 노드 유형 | Gauge |
| redis_sentinel_link_pending_commands | 센티널 대기 중인 명령 수 | Gauge |
| redis_sentinel_odown_slaves | slave의 객관적 다운 | Gauge |
| redis_sentinel_sdown_slaves | slave의 주관적 다운 | Gauge |
| redis_sentinel_ok_slaves | 실행 중인 slave 수 | Gauge |
| redis_sentinel_ping_latency | 센티널 ping 지연, 밀리초로 표시 | Gauge |
| redis_sentinel_last_ok_ping_latency | 센티널 ping 성공까지 걸린 초 수 | Gauge |
| redis_sentinel_node_state | redis 노드 상태 | Gauge |