Ana içeriğe geç

3.5.2. Log Search OpenSearch Provider#

Log search OpenSearch provider paketi ile daha detaylı OpenSearch sorgularının yapılması hedeflenmektedir. Bu paket kullanılarak OpenSearch üzerindeki aggregation'ların kullanımına olanak sağlanmıştır.

Not

Log Search OpenSearch Provider paketi OpenSearch'e direkt olarak bağlantı kurarak işlem yapar. Logger Search Server üzerinden rest ile işlem yapmak istenildiği durumda Log Search İstemci API (Client) sayfası ziyaret edilmelidir.

Bağımlılıklar#

Gradle Dependencies
api (
    [group: 'tr.com.havelsan.framework.logger', name: 'hvl-logger-search-opensearch-provider'],
)

YAML#

hvl:
  opensearch:
    ssl:
      enabled: true
      name: opensearch-ssl
      bundle:
        keystore:
          location: ${OPENSEARCH_KEYSTORE_LOCATION:/home/acuhadaroglu/Desktop/truststore.jks}
          password: ${OPENSEARCH_KEYSTORE_PASSWORD:changeit}
        truststore:
          location: ${OPENSEARCH_TRUSTSTORE_LOCATION:/home/acuhadaroglu/Desktop/truststore.jks}
          password: ${OPENSEARCH_TRUSTSTORE_PASSWORD:changeit}

opensearch:
  uris: ${OPENSEARCH_ENDPOINTS:https://hvlopensearch:9200,https://hvlopensearch2:9201}
  username: ${OPENSEARCH_USERNAME:admin}
  password: ${OPENSEARCH_PASSWORD:Hvl12345@}
  restclient:
    ssl:
      bundle: opensearch-ssl

hvl-infra üzerinden Config Server kullanıldığı durumlarda bootstrap.yml dosyasındaki spring.cloud.config.profile pathine opensearch değerinin eklenmesi gerekmektedir. Böylece yukarıdaki özelliklerin ve daha fazlasının olduğu application-opensearch.yml dosyası projeye dahil olacaktır.

Kullanımı#

Log Search OpenSearch Provider paketinin çalışmasını sağlamak için @HvlEnableLogSearchOpenSearchProvider anotasyonunun konfigürasyon sınıfına eklenmesi gerekmektedir.

@Configuration
@ComponentScan(basePackages = {HvlLoggerConfigurationConstant.BASE_PACKAGE})
@HvlEnableLogSearchOpenSearchProvider
public class HvlLoggerConfiguration extends HvlBaseConfiguration {
}

@HvlEnableLogSearchOpenSearchProvider anotasyonu eklemesi yapıldıktan sonra HvlLogSearchOpenSearchProvider bean'i inject edilerek kullanılmaya başlanabilir.

@Service
public class HvlLoggerSearchServiceImpl implements HvlLoggerSearchService {
    private final HvlLogSearchOpenSearchProvider logSearchOpenSearchProvider;

    public HvlLoggerSearchServiceImpl(HvlLogSearchOpenSearchProvider logSearchOpenSearchProvider) {
        this.logSearchOpenSearchProvider = logSearchOpenSearchProvider;
    }
}

Aggregation örneği ve detaylı kullanım ile ilgili tam bir örnek kod için hvl-javalt-samples projesindeki örnek incelenebilir. Bu örnek elasticsearch üzerinden verilmiştir ancak, Aggregation gibi sınıfların elasticsearch yerine opensearch olanları kullanılıarak geliştirme yapılabilir.

Fluentd Konfigürasyonu#

<store>
  @type opensearch
  scheme https
  hosts hvlopensearch:9200,hvlopensearch2:9200
  user admin
  password Hvl12345@
  ssl_verify false
  index_name ${indexName}-%Y-%m
  suppress_type_name true
  <buffer indexName, time>
      @type file
      path /fluentd/buffer/chunk.*
      timekey 1h
      flush_mode interval
      flush_interval 10s
      chunk_limit_size 8m
      delayed_commit_timeout 120
      overflow_action block
      retry_forever true
      retry_max_interval 300
  </buffer>
</store>