pixel
Select Page

OpenSearch: Woher kommen die Informationen

by | Nov 25, 2021 | OpenSearch

OpenSearch: Jetzt kommt was rein in Runde II

Nach dem wir das Cluster erfolgreich in Betrieb genommen haben, wollen wir zunächst prüfen auf welchem Weg wir Informationen und Ereignisse aus dem klassischen Log-Management einliefern können. Laut der Kompabilitäts-Matrix der Projektseite sind wir hier aktuell etwas limitiert.

Logstash und Filebeat sind somit in alten Versionen einsetzbar. Gerade beim Filebeat ist dies weniger schön, da einige Module und Funktionen in der unterstützen Version noch in einem Beta-Stadium sind. Auch werden längst nicht alle teile Unterstützt. Damit die beiden Elastic Stack Werkzeuge überhaupt mit dem OpenSearch reibungsloser zusammenspielen, sollte die folgende Einstellung für die Kompatibilität in der Konfiguration vorgenommen werden:

override_main_response_version: true

Am einfachsten funktioniert es mit dieser Konfiguration in eurer Docker-Compose Datei:

environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node1
      - discovery.seed_hosts=opensearch-node1,opensearch-node2
      - cluster.initial_master_nodes=opensearch-node1,opensearch-node2
      - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping
      - compatibility.override_main_response_version=true
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM

Damit erspart ihr euch einiges an Frust 😉

Logstash

Bei Logstash empfiehlt es sich auf keinen Fall das Projekt-Tarball zu verwenden! Für Logstash solltet ihr die Version 7.13.4 nutzen und auf jeden Fall das Plugin von “ruby.org” nachinstallieren. Auf einem Debian System installiert ihr Logstash und das notwendige Plugin wie folgt:

root@buster:~# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.13.4-amd64.deb
root@buster:~# dpkg -i logstash-7.13.4-amd64.deb
root@buster:~# /usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Eine mögliche Konfiguration könnte dann wie folgt aussehen:

input {
  file {
    path => "/tmp/json-output"
  }
}

filter {
  json {
    source => "message"
  }
}

output {
  opensearch {
    hosts => "https://192.168.2.42:9200"
    user => "admin"
    password => "admin"
    index => "logstash-logs-%{+YYYY.MM.dd}"
    ssl_certificate_verification => false  ## ich habe hier keinen Fokus auf eine korrekte Zertifikats-Handhabung gelegt.
  }
}

Filebeat

Beim Filebeat bleibt uns nichts anderes übrig als auf Version OSS-7.12.1 zu setzen. Unter Debian machen wir das wie folgt:


$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.10.2-amd64.deb

$ dpkg -i filebeat-oss-7.10.2-amd64.deb

In diesem Szenario wollen wir versuchen mit einem Module zu arbeiten, Pipelines zu laden, das ILM zu nutzen und das Template zu verwenden.

Was auf jeden Fall nicht ging:

  • Laden von ILM-Policies (war für mich zum testen des Zeitpunktes nicht möglich, deshalb gibt es einen eigenen Artikel dazu)
  • Laden von Dashboards in das Kibana

Nun gut, legen wir mal mit dem los was geht. Wir konfigurieren unsern Filebeat aktivieren das Modul und dann sehen wir weiter.

  • Unsere Filebeat Konfiguration:
    filebeat.inputs:
    filebeat.config.inputs:
      enabled: true
      path: inputs.d/*.yml
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    output.elasticsearch:
      hosts: ["https://192.168.2.42:9200"]
      ssl.verification_mode: none
      username: "admin"
      password: "admin"
    processors:
      - add_host_metadata:
          when.not.contains.tags: forwarded
      - add_cloud_metadata: ~
      - add_docker_metadata: ~
      - add_kubernetes_metadata: ~
    logging.level: info
    logging.to_files: true
    logging.files:
      path: /var/log/filebeat
      name: filebeat
      keepfiles: 7
      permissions: 0644
    setup.kibana:
      host: "http://192.168.2.42:5601"
      username: admin
      password: admin
      headers:
        securitytenant: global
    setup.template.enabled: true
    setup.template.settings:
      index.number_of_shards: 1
    setup.dashboards.enabled: false
    setup.dashboards.url: "http://192.168.2.42:5601"
    setup.ilm.enabled: false
    

    Wichtig ist hier das setup.ilm.enabled: false nur so kann ein erfolgreicher Start und INIT erfolgen.

  • Aktivieren des System-Module:
    $ filebeat modules enable system
    
  • Danach laden wir noch das Pattern und das Template, dass ILM und die Dashboards werden nicht angelegt
    filebeat -e setup system
    

    Hier wird deutlich, dass die Kibana API in Opensearch Dashboards nicht kompatible ist:

    ....
    2021-11-24T22:59:30.039+0100    INFO    eslegclient/connection.go:99    elasticsearch url: https://192.168.2.42:9200
    2021-11-24T22:59:30.039+0100    WARN    [tls]   tlscommon/tls_config.go:98      SSL/TLS verifications disabled.
    2021-11-24T22:59:30.039+0100    WARN    [tls]   tlscommon/tls_config.go:98      SSL/TLS verifications disabled.
    2021-11-24T22:59:30.647+0100    INFO    [esclientleg]   eslegclient/connection.go:314   Attempting to connect to Elasticsearch version 7.10.2
    ILM policy and write alias loading not enabled.
    
    2021-11-24T22:59:30.654+0100    INFO    template/load.go:183    Existing template will be overwritten, as overwrite is enabled.
    2021-11-24T22:59:30.722+0100    INFO    template/load.go:117    Try loading template filebeat-7.12.1 to Elasticsearch
    2021-11-24T22:59:31.106+0100    INFO    template/load.go:109    template with name 'filebeat-7.12.1' loaded.
    2021-11-24T22:59:31.107+0100    INFO    [index-management]      idxmgmt/std.go:298      Loaded index template.
    Index setup finished.
    Loading dashboards (Kibana must be running and reachable)
    2021-11-24T22:59:31.108+0100    INFO    kibana/client.go:119    Kibana url: http://192.168.2.42:5601
    2021-11-24T22:59:31.230+0100    INFO    kibana/client.go:119    Kibana url: http://192.168.2.42:5601
    2021-11-24T22:59:31.242+0100    ERROR   instance/beat.go:971    Exiting: Kibana API is not available in Kibana version 1.2.0
    Exiting: Kibana API is not available in Kibana version 1.2.0
    
  • Start des Filebeat-Service
    $ systemctl start filebeat
    

Und sehen wir was?

Nach dem erfolgreichen Start sehen wir auch schon die ersten Ergebnisse.

Opensearch Dashboards Document

Nun ja, schwer war das ganze jetzt erst mal nicht und wir haben auf eine bereits aus der Elastic Stack Welt vertraute Art und weise in den neuen Fork OpenSearch Informationen in Form eines System-Logs eingeliefert. Jetzt sind wir in der Lage gänzlich, wie vielleicht schon gewohnt, mit den Daten zu interagieren.

Dies verifizieren wir zusätzlich in einem weiteren Video:

 

Der Gong ertönt!

Die Runde war eine gänzlich einfache Übung. Wir haben uns hier mit bereits bekannten Werkzeugen beschäftigt, den Gegner über die Runde bei Laune gehalten und auch an seine Grenzen getrieben. Jedoch gilt es jetzt die Schwachstellen zu identifizieren und zu studieren um den Gegner zu knacken. Mit anderen Worten, dies war nicht die letzte Runde. In den kommenden Runden werden wir uns SLM/ILM und andere Themen bemühen. Und dann hoffentlich auch bald mit dem bereits angekündigten System-Paketen.

Wenn Euch das, was ihr jetzt schon gelesen habt noch mehr reizt und ihr schneller zum Sieg über ein KO in der nächsten Runde erringen wollt, dann meldet Euch doch einfach bei unserem Sales Team sales[at]netways.de. Wir helfen Euch in einem PoC (Proof of Concept) gleich von Runde I an mit zu kämpfen! Nach den letzten Monaten intensiver OpenSearch Evaluierung bin ich der Trainer der euch “State of the Art” Euren “Kampf gegen die Informationsflut” gewinnen lässt. Ihr dürft gespannt sein auf Runde III.

Daniel Neuberger
Daniel Neuberger
Senior Consultant

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das NETWAYS Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner...
More posts on the topicOpenSearch