Featured image of post Политики хранения логов Opensearch

Политики хранения логов Opensearch

Настройка хранения и ротации логов в Opensearch

Через плагин Index State Management (ISM) в Opensearch Dashboards настраиваются сроки хранения и ротации логов.

Пример политики хранения логов 3 года

Ключевые этапы жизненного цикла:

Горячая фаза (Hot, 7 дней):

  • Индексы активно индексируются
  • Автоматический rollover при достижении 50 ГБ
  • Оптимальная производительность (SSD/NVMe)

Тёплая фаза (Warm, 30 дней):

  • Уменьшение реплик (number_of_replicas: 1)
  • Оптимизация сегментов (force_merge)
  • Хранение на HDD/магнитных дисках

Холодная фаза (Cold, до 3 лет):

  • Данные доступны только для чтения
  • Возможность использовать объектные хранилища (S3, MinIO)
  • Минимальная стоимость хранения

Удаление (через 1095 дней):

  • Полная очистка старых данных

В json ISM добавить код и заменить своим Index’ом к которому применять правило

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
PUT /_plugins/_ism/policy/delete_info_1095d

{

  "policy": {

    "policy_id": "delete_info_1095d",

    "description": "Hot - Warm - Cold - Delete (3 года)",

    "default_state": "hot",

    "states": [

      {

        "name": "hot",

        "actions": [

          {

            "rollover": {

              "min_size": "50gb",

              "min_primary_shard_size": "10gb"

            }

          }

        ],

        "transitions": [

          {

            "state_name": "warm",

            "conditions": {

              "min_index_age": "7d"

            }

          }

        ]

      },

      {

        "name": "warm",

        "actions": [

          {

            "replica_count": {

              "number_of_replicas": 1

            }

          },

          {

            "force_merge": {

              "max_num_segments": 1

            }

          },

          {

            "read_only": {}

          }

        ],

        "transitions": [

          {

            "state_name": "cold",

            "conditions": {

              "min_index_age": "30d"

            }

          }

        ]

      },

      {

        "name": "cold",

        "actions": [

          {

            "retry": {

              "count": 3,

              "backoff": "exponential",

              "delay": "1h"

            },

            "cold_migration": {}

          }

        ],

        "transitions": [

          {

            "state_name": "delete",

            "conditions": {

              "min_index_age": "1095d"

            }

          }

        ]

      },

      {

        "name": "delete",

        "actions": [

          {

            "delete": {}

          }

        ]

      }

    ],

    "ism_template": {

      "index_patterns": ["info-logs-*"],

      "priority": 80

    }

  }

}

Пример политики хранения логов 1 день

Отладочные логи (debug). Срок хранения - 1 день.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{

  "policy": {

    "policy_id": "delete_debug_1d",

    "description": "Delete debug logs after 1 day",

    "default_state": "hot",

    "states": [

      {

        "name": "hot",

        "actions": [],

        "transitions": [

          {

            "state_name": "delete",

            "conditions": {

              "min_index_age": "1d"

            }

          }

        ]

      },

      {

        "name": "delete",

        "actions": [

          {

            "delete": {}

          }

        ],

        "transitions": []

      }

    ],

    "ism_template": {

      "index_patterns": ["debug-delete-1d"],

      "priority": 100

    }

  }

}

Сжатие логов перед удалением

Если требуется архивирование

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  "name": "cold",

  "actions": [

    {

      "snapshot": {

        "repository": "my-s3-repository",

        "snapshot": "debug-logs-archive-{{ctx.index}}"

      }

    }

  ]

Примерный конфиг Fluent-bit для Kafka

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[INPUT]
    Name              tail
    Path              /var/log/syslog
    Tag               server_logs
    parser            json

[FILTER]
    Name              rewrite_tag
    Match             server_logs
    Rule              log debug   debug    false
    Rule              log info    info     false
    Rule              log warning warning  false
    Emitter_Name      log_router

[OUTPUT]
    Name              kafka
    Match             debug
    Brokers           kafka:9092
    Topics            debug-logs

[OUTPUT]
    Name              kafka
    Match             info
    Brokers           kafka:9092
    Topics            info-logs

[OUTPUT]
    Name              kafka
    Match             warning
    Brokers           kafka:9092
    Topics            warning-logs
Информацию можно использовать в свободном доступе, с указанием ссылки на сайт
Telegram GitHub