Graylog: Aan de slag

Hoe te beginnen met Graylog

👋 Welkom bij de Stackhero documentatie!

Stackhero biedt een kant-en-klare Graylog cloud oplossing die tal van voordelen biedt, waaronder:

  • Onbeperkte en toegewijde SMTP e-mailserver inbegrepen.
  • Moeiteloze updates met slechts één klik.
  • Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://logs.uw-bedrijf.com).
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Graylog cloud hosting oplossing van Stackhero te proberen!

Een input is het eindpunt waar Graylog uw logs ontvangt. U kunt logs verzenden met behulp van TCP of UDP. Daarnaast kan Graylog logboekvermeldingen verzamelen van een API, een Kafka-queue, een RabbitMQ-server en andere methoden.

In dit voorbeeld maken we een ruwe UDP-input. Open de Graylog-interface en navigeer naar "System" en vervolgens "Inputs". Kies "Raw/Plaintext UDP" en klik op "Launch new input". Configureer uw input met de volgende waarden en valideer het formulier:

  1. Node: Selecteer uw node
  2. Title: RAW UDP
  3. Port: 5555

Open vervolgens een terminal op uw computer en stuur een UDP-bericht naar uw Graylog-server. Vergeet niet XXXXXX te vervangen door uw service domeinnaam:

  • Op macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  • Op Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

Na het verzenden van het bericht, keer terug naar Graylog en klik op "Search". U zou uw bericht moeten zien 🎉

Gefeliciteerd, u heeft nu uw eerste bericht naar Graylog verzonden! Voel u vrij om extra inputs en dashboards te maken die zijn afgestemd op uw behoeften. Voor verdere begeleiding kunt u de officiële documentatie van Graylog raadplegen.

Verschillende codevoorbeelden zijn beschikbaar in onze Git-repository. Deze repository biedt praktische implementaties en extra aanpassingen om u te helpen het meeste uit Graylog te halen.

Als u een rsyslog-client heeft en logs veilig naar Graylog wilt verzenden, volg dan deze stappen:

Activeer geen TLS-optie op Graylog's input. TLS wordt direct beheerd door een reverse proxy op uw instantie zodat Graylog het niet afhandelt.

  1. Ga naar uw Graylog-serviceconfiguratie in het Stackhero-dashboard en activeer "TLS encryption" voor de Syslog TCP-poort 514.

  2. Werk uw rsyslog-configuratie bij zoals hieronder beschreven. Vervang <XXXXXX>.stackhero-network.com door uw instantie-hostnaam:

    # Definieer TLS CA-certificaat
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt"
    )
    
    # Stuur alle logs naar een externe server
    # Een on-disk queue wordt voor deze actie aangemaakt. Als de externe host
    # offline is, worden berichten naar de schijf gespoeld en verzonden wanneer deze weer beschikbaar is
    # Zie https://www.rsyslog.com/doc/v8-stable/configuration/actions.html
    # en https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html
    *.* action(
      type="omfwd"
      target="<XXXXXX>.stackhero-network.com"
      port="514"
      protocol="tcp"
      KeepAlive="on"
      KeepAlive.Interval="30"
      StreamDriver="gtls"
      StreamDriverMode="1"
      StreamDriverAuthMode="x509/name"
      ResendLastMSGOnReconnect="on"
      queue.filename="fwdRule1"  # unieke naam prefix voor spoolbestanden
      queue.type="LinkedList"
      queue.maxDiskSpace="256m"
      queue.saveOnShutdown="on"
      action.resumeRetryCount="-1"
      action.resumeInterval="30"
    )
    
  3. Herstart uw rsyslog-service en verifieer de configuratie door een log te verzenden met de opdracht:

    logger This is a test
    

Dit voltooit de setup. U verzendt nu veilig logs naar Graylog met TLS-encryptie!

U kunt een fout tegenkomen zoals:

org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'

U kunt deze fout bekijken in de logs die worden verstrekt in het Stackhero-dashboard of in het Graylog-beheerpanel onder System > Overview > Indexer failures.

Deze fout geeft aan dat een log is verzonden met een waarde voor het veld time die niet overeenkomt met het verwachte type (in dit geval een numerieke waarde van het type "long"). Graylog maakt gebruik van de dynamische mappingfunctie van OpenSearch. Wanneer een log voor de eerste keer wordt verzonden, probeert OpenSearch de veldtypen te raden. Bijvoorbeeld, als een log het veld time bevat met de numerieke waarde 1234, definieert OpenSearch het als een numeriek veld. Als een andere log wordt verzonden met het veld time ingesteld als "abcd", een string, zal OpenSearch het afwijzen omdat het een numerieke waarde verwacht.

Onthoud dat de veldnaam time alleen ter illustratie wordt gebruikt. Het kan elke veldnaam en type zijn.

Om dit probleem op te lossen, moet u het type dat OpenSearch verwacht opnieuw definiëren. Voor meer informatie kunt u de officiële documentatie van Graylog raadplegen.

Voordat u verdergaat, activeer OpenSearch-toegang in het Stackhero-dashboard. Navigeer naar uw Graylog-service en klik op de knop "Configure" om OpenSearch-toegang te activeren.

Wees voorzichtig met deze wijzigingen, aangezien onjuiste configuraties uw OpenSearch-cluster kunnen blokkeren en mogelijk gegevensverlies kunnen veroorzaken. Als u onzeker bent, ga dan niet verder.

  1. Definieer uw nieuwe mapping. In dit voorbeeld herdefiniëren we het veld time om van het type string te zijn. U kunt de beschikbare typen vinden in de OpenSearch veldtypen documentatie.

  2. Sla de volgende inhoud op in een bestand genaamd graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Post dit bestand met behulp van de volgende curl-opdracht (vervang <XXXXXX>.stackhero-network.com door uw instantie domeinnaam):

    curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'
    

    U zou een antwoord moeten ontvangen zoals:

    {
      "acknowledged": true
    }
    
  4. Controleer ten slotte of de mapping is bijgewerkt met deze opdracht (vervang het domein indien nodig):

    curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
    

Fout "Unable to write audit log entry" afhandelen

Als u een fout ziet zoals:

Unable to write audit log entry because there is no valid license

of

Not running cleanup for auditlog entries in MongoDB because there is no valid license

dit gebeurt omdat Graylog Enterprise is geactiveerd zonder een geldige licentie. Als u een licentie heeft, kunt u deze invoeren in de Graylog-interface. Als u geen licentie heeft, schakelt u Graylog Enterprise eenvoudig uit in het Stackhero-dashboard.