ILM 설정 (Index Lifecycle Management)

  • ILM이란?

    • 사용을 많이 하지 않는 문서는 주기적으로 삭제해야 디스크가 안정적으로 유지된다.
    • ILM을 사용하면 조건을 설정하여 해당 조건 충족 시 자동으로 인덱스를 삭제하거나 Roll Over를 할 수 있다.
  • UI에서 설정 가능

  • Hot Warm Cold 아키텍쳐

    • index의 사용빈도(즉, disk의 I/O 빈도)에 따라 tier를 나눠서 보관하는 방법

    • TierGoalStorageMemory:Storage ratio
      HotOptimize for searchSSD SAN/DAS1:30
      WarmOptimize for storageHDD SAN/DAS1:160
      FrozenOptimize for archiveCheapest SAN/DAS1:1000+
  • Delete phase

    • 생성된지 n일 후에 Index가 삭제되도록
    • Disk Pressure를 피할 수 있음
  • API

  • PUT _ilm/policy/ilm_policy_default
    {
      "policy": {
        "phases": {
          "hot": {
            "min_age": "0ms",
            "actions": {
              "rollover": {
                "max_age": "10d",
                "max_size": "50gb",
                "max_docs": 5000
              },
              "set_priority": {
                "priority": 100
              }
            }
          },
          "delete": {
            "min_age": "10d",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
    
  • Index Template 연결

    •       "settings" : {
              "number_of_shards" : 1,
              "lifecycle": {
                    "name": "ilm_policy_default"}
      
  • logstash 적용

    • output {
             elasticsearch {
                     hosts => "{public IP}"
                     user => "elastic"
                     password => "qlalfqjsgh"
                     ilm_enabled => true
                     ilm_policy => "{policy name}"
             }
      }
      

Index Template

  • logstash를 통해 데이터들이 Elasticsearch로 인입이 된다

  • 미리 설정해 놓지 않는다면 데이터 타입의 수정은 힘들다

  • 미리 설정해 놓는 설정이 바로 Index Template

    • ILM설정도 붙일 수 있다.
  • Settings, Mappings를 설정한다

  • Settings

  • {
      "index": {
        "number_of_shards": "5",
        "number_of_replicas": "1"
      }
    }
    
    # Anaylzer 설정
    
  • Index Template for apache-log

  • Type 재설정

  • Mapping 설정

    • "mappings" : {
            "properties" : {
              "@timestamp" : {
                "type" : "date"
              },
              "auth" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "bytes" : {
                "type" : "long"
              },
              "clientip" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "cloud" : {
                "properties" : {
                  "account" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "availability_zone" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "image" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "instance" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "machine" : {
                    "properties" : {
                      "type" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "provider" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "region" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "cluster_agent" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "ecs" : {
                "properties" : {
                  "version" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "geoip" : {
                "properties" : {
                  "city_name" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "continent_code" : {
                    "type" : "keyword"
                  },
                  "country_code2" : {
                    "type" : "keyword"
                  },
                  "country_code3" : {
                    "type" : "keyword"
                  },
                  "country_name" : {
                    "type" : "keyword"
                  },
                  "dma_code" : {
                    "type" : "long"
                  },
                  "ip" : {
                    "type" : "ip"
                  },
                  "latitude" : {
                    "type" : "half_float"
                  },
                  "location" : {
                    "type": "geopoint"
                  },
                  "longitude" : {
                    "type" : "half_float"
                  },
                  "postal_code" : {
                    "type" : "keyword"
                  },
                  "region_code" : {
                    "type" : "keyword"
                  },
                  "region_name" : {
                    "type" : "keyword"
                  },
                  "timezone" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "host" : {
                "properties" : {
                  "architecture" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "containerized" : {
                    "type" : "boolean"
                  },
                  "hostname" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "id" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "ip" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "mac" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "name" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "os" : {
                    "properties" : {
                      "codename" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "family" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "kernel" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "name" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "platform" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "version" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  }
                }
              },
              "httpversion" : {
                "type" : "keyword"
              },
              "ident" : {
                "type" : "keyword",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "input" : {
                "properties" : {
                  "type" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "log" : {
                "properties" : {
                  "file" : {
                    "properties" : {
                      "path" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "offset" : {
                    "type" : "long"
                  }
                }
              },
              "message" : {
                "type" : "text"
              },
              "referrer" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "request" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "response" : {
                "type" : "long"
              },
              "tags" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "verb" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              }
            }
          }
      
  • Setting 설정

  • index template 생성

  • PUT _index_template/apache_template
    {
      "index_patterns" : [
        "apache*"
        ],
        "priority" : 100,
        "template" : {
          "settings" : {
            "number_of_shards" : 1,
            "lifecycle": {
                  "name": "ilm_policy_default"}
          },
          "mappings" : {
            "properties" : {
              "@timestamp" : {
                "type" : "date"
              },
              "auth" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "bytes" : {
                "type" : "long"
              },
              "clientip" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "cloud" : {
                "properties" : {
                  "account" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "availability_zone" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "image" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "instance" : {
                    "properties" : {
                      "id" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "machine" : {
                    "properties" : {
                      "type" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "provider" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "region" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "cluster_agent" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "ecs" : {
                "properties" : {
                  "version" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "geoip" : {
                "properties" : {
                  "city_name" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "continent_code" : {
                    "type" : "keyword"
                  },
                  "country_code2" : {
                    "type" : "keyword"
                  },
                  "country_code3" : {
                    "type" : "keyword"
                  },
                  "country_name" : {
                    "type" : "keyword"
                  },
                  "dma_code" : {
                    "type" : "long"
                  },
                  "ip" : {
                    "type" : "ip"
                  },
                  "latitude" : {
                    "type" : "half_float"
                  },
                  "location" : {
                    "type": "geo_point"
                  },
                  "longitude" : {
                    "type" : "half_float"
                  },
                  "postal_code" : {
                    "type" : "keyword"
                  },
                  "region_code" : {
                    "type" : "keyword"
                  },
                  "region_name" : {
                    "type" : "keyword"
                  },
                  "timezone" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "host" : {
                "properties" : {
                  "architecture" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "containerized" : {
                    "type" : "boolean"
                  },
                  "hostname" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "id" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "ip" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "mac" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "name" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  },
                  "os" : {
                    "properties" : {
                      "codename" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "family" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "kernel" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "name" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "platform" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      },
                      "version" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  }
                }
              },
              "httpversion" : {
                "type" : "keyword"
              },
              "ident" : {
                "type" : "keyword",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "input" : {
                "properties" : {
                  "type" : {
                    "type" : "text",
                    "fields" : {
                      "keyword" : {
                        "type" : "keyword",
                        "ignore_above" : 256
                      }
                    }
                  }
                }
              },
              "log" : {
                "properties" : {
                  "file" : {
                    "properties" : {
                      "path" : {
                        "type" : "text",
                        "fields" : {
                          "keyword" : {
                            "type" : "keyword",
                            "ignore_above" : 256
                          }
                        }
                      }
                    }
                  },
                  "offset" : {
                    "type" : "long"
                  }
                }
              },
              "message" : {
                "type" : "text"
              },
              "referrer" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "request" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "response" : {
                "type" : "long"
              },
              "tags" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              "verb" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
              }
            }
          }
        }
        }
    }