コンテンツにスキップ

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 ファイルをコピーします
cd /usr/local/datakit/conf.d/samples/
cp prom.conf.sample redis-sentinel-prom.conf
  • 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 を再起動します(ログ収集を有効にする必要がある場合は、ログ収集を設定してから再起動してください)

systemctl restart 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 を再起動します(カスタムタグを有効にする必要がある場合は、プラグインタグを設定してから再起動してください)
systemctl restart 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 を再起動

systemctl restart 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

フィードバック

このページは役に立ちましたか?