Redis Sentinel¶
Redis-sentinel のメトリクス表示。Redis クラスター、Slave、ノード分布情報などを含みます。
インストールとデプロイ¶
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 : Sentinel ノードアドレス
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 URLs
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"
## tags をフィルタ。複数の 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]]
## required
logfiles = [
"D:/software_installer/Redis-x64-3.2.100/log/sentinel_*_log.log",
]
## glob filter
ignore = [""]
## your logging source, if it's empty, use 'default'
source = "redis-sentinel"
## add service tag, if it's empty, use $source.
service = "redis-sentinel"
## grok pipeline script name
pipeline = ""
## optional status:
## "emerg","alert","critical","error","warning","info","debug","OK"
ignore_status = []
## optional encodings:
## "utf-8", "utf-16le", "utf-16le", "gbk", "gb18030" or ""
character_encoding = ""
## datakit read text from Files or Socket , default max_textline is 32k
## If your log text line exceeds 32Kb, please configure the length of your text,
## but the maximum length cannot exceed 32Mb
# maximum_length = 32766
## The pattern should be a regexp. Note the use of '''this regexp'''
## regexp link: https://golang.org/pkg/regexp/syntax/#hdr-Syntax
# multiline_match = '''^\S'''
## removes ANSI escape codes from text strings
remove_ansi_escape_codes = false
## if file is inactive, it is ignored
## time units are "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 | Sentinel インスタンス数 | Gauge |
| redis_sentinel_known_slaves | クラスターの slave インスタンス数 | Gauge |
| redis_sentinel_cluster_type | クラスターノード種別 | Gauge |
| redis_sentinel_link_pending_commands | Sentinel の保留中コマンド数 | Gauge |
| redis_sentinel_odown_slaves | slave の客観的ダウン | Gauge |
| redis_sentinel_sdown_slaves | slave の主観的ダウン | Gauge |
| redis_sentinel_ok_slaves | 稼働中の slave 数 | Gauge |
| redis_sentinel_ping_latency | Sentinel の ping 遅延をミリ秒で表示 | Gauge |
| redis_sentinel_last_ok_ping_latency | Sentinel の ping 成功までの秒数 | Gauge |
| redis_sentinel_node_state | redis ノード状態 | Gauge |