6 Elasticsearch-configuratie

Elasticsearch-ondersteuning is experimenteel!

Zabbix ondersteunt de opslag van historische gegevens door middel van Elasticsearch in plaats van een databank. Gebruikers kunnen de opslagplaats voor historisch kiezen gegevens tussen een compatibele database en Elasticsearch. De opzet procedure beschreven in deze sectie is van toepassing op Elasticsearch versie 7.X. In het geval dat een eerdere of latere versie van Elasticsearch is gebruikt, werken sommige functies mogelijk niet zoals bedoeld.

Als alle geschiedenisgegevens zijn opgeslagen in Elasticsearch, trends worden niet berekend en ook niet opgeslagen in de database. Zonder trends berekend en opgeslagen, moet de opslagperiode voor de geschiedenis mogelijk verlengd.

Configuratie

Om een goede communicatie tussen alle betrokken elementen te garanderen, moet u ervoor zorgen dat: serverconfiguratiebestand en frontend-configuratie bestandsparameters zijn: goed geconfigureerd.

Zabbix-server en frontend

Zabbix-server configuratie bestands concept met parameters die moeten worden bijgewerkt:

### Optie: HistoryStorageURL
       # Geschiedenisopslag HTTP[S] URL.
       #
       # Verplicht: nee
       # Standaard:
       # HistoryStorageURL=
       ### Optie: HistoryStorageTypes
       # Door komma's gescheiden lijst met waardetypen die naar de geschiedenisopslag moeten worden verzonden.
       #
       # Verplicht: nee
       # Standaard:
       # HistoryStorageTypes=uint,dbl,str,log,text

Voorbeeld parameter waarden om het Zabbix-server configuratie bestand te vullen met:

HistoryStorageURL=http://test.elasticsearch.lan:9200
       HistoryStorageTypes=str,log,tekst

Deze configuratie dwingt Zabbix Server om geschiedeniswaarden van op te slaan numerieke typen in de bijbehorende database en tekstuele geschiedenisgegevens in Elastisch zoeken.

Elasticsearch ondersteunt de volgende itemtypen:

uint,dbl,str,log,tekst

Ondersteund item type uitleg:

Type itemwaarde Databasetabel Elastisch zoektype
Numeriek (niet ondertekend) geschiedenis_uint uint
Numeriek (zwevend) geschiedenis dbl
Karakter geschiedenis_str str
Log geschiedenis_log log
Tekst geschiedenis_text tekst

Zabbix frontend configuratiebestand (conf/zabbix.conf.php) concept met parameters die moeten worden bijgewerkt:

// Elasticsearch-url (kan een tekenreeks zijn als dezelfde url voor alle typen wordt gebruikt).
       $HISTORY['url'] = [
             'uint' => 'http://localhost:9200',
             'tekst' => 'http://localhost:9200'
       ];
       // Waardetypen opgeslagen in Elasticsearch.
       $HISTORY['types'] = ['uint', 'text'];

Voorbeeldparameterwaarden om het Zabbix frontend-configuratiebestand te vullen met:

$HISTORY['url'] = 'http://test.elasticsearch.lan:9200';
       $HISTORY['types'] = ['str', 'text', 'log'];

Deze configuratie dwingt om Text, Character en Log history . op te slaan waarden in Elasticsearch.

Het is ook vereist om $HISTORY globaal te maken in conf/zabbix.conf.php naar zorg ervoor dat alles goed werkt (zie conf/zabbix.conf.php.example voor hoe dit te doen):

// Zabbix GUI-configuratiebestand.
       globaal $DB, $HISTORY;
Elasticsearch installeren en mapping maken

De laatste twee stappen om dingen te laten werken, zijn het installeren van Elasticsearch zelf en het creëren van een mappingproces.

Om Elasticsearch te installeren, raadpleeg Installatie van Elasticsearch gids.

Mapping is een datastructuur in Elasticsearch (vergelijkbaar met a tabel in een database). Mapping voor alle geschiedenisgegevenstypen is beschikbaar hier: database/elasticsearch/elasticsearch.map.

Het maken van mapping is verplicht. Sommige functionaliteit wordt verbroken als de toewijzing niet wordt gemaakt volgens de instructie.

Om een toewijzing voor het tekst-type te maken, stuurt u het volgende verzoek naar: Elastisch zoeken:

krul -X PUT \
        http://your-elasticsearch.here:9200/text \
        -H 'inhoudstype: applicatie/json' \
        -d '{
          "instellingen": {
             "inhoudsopgave": {
                "aantal_replica's": 1,
                "number_of_shards": 5
             }
          },
          "toewijzingen": {
             "eigendommen": {
                "item ID": {
                   "type": "lang"
                },
                "klok": {
                   "format": "epoch_second",
                   "type": "datum"
                },
                "waarde": {
                   "velden": {
                      "geanalyseerd": {
                         "index": waar,
                         "typ Text",
                         "analysator": "standaard"
                      }
                   },
                   "index": onwaar,
                   "typ Text"
                }
             }
          }
       }'

Een soortgelijk verzoek moet worden uitgevoerd voor Character en Log geschiedenis waarden mapping creatie met bijbehorende typecorrectie.

Om met Elasticsearch te werken, raadpleeg Vereiste pagina voor extra informatie.

Huishoudster verwijdert geen gegevens uit Elasticsearch.

Historische gegevens opslaan in meerdere op datum gebaseerde indices

In deze sectie worden aanvullende stappen beschreven die nodig zijn om met pijpleidingen te werken en knooppunten opnemen.

Om te beginnen moet u sjablonen voor indices maken.

In het volgende voorbeeld ziet u een aanvraag voor het maken van een uint-sjabloon:

krul -X PUT \
        http://your-elasticsearch.here:9200/_template/uint_template \
        -H 'inhoudstype: applicatie/json' \
        -d '{
          "index_patterns": [
             "uint*"
          ],
          "instellingen": {
             "inhoudsopgave": {
                "aantal_replica's": 1,
                "number_of_shards": 5
             }
          },
          "toewijzingen": {
             "eigendommen": {
                "item ID": {
                   "type": "lang"
                },
                "klok": {
                   "format": "epoch_second",
                   "type": "datum"
                },
                "waarde": {
                   "type": "lang"
                }
             }
          }
       }'

Om andere sjablonen te maken, moet de gebruiker de URL wijzigen (laatste deel is de naam van sjabloon), verander het veld "index_patterns" zodat het overeenkomt met de indexnaam en om geldige toewijzing in te stellen, die kan worden overgenomen van database/elasticsearch/elasticsearch.map.

De volgende opdracht kan bijvoorbeeld worden gebruikt om een sjabloon te maken voor: tekstindex:

krul -X PUT \
        http://your-elasticsearch.here:9200/_template/text_template \
        -H 'inhoudstype: applicatie/json' \
        -d '{
          "index_patterns": [
             "tekst*"
          ],
          "instellingen": {
             "inhoudsopgave": {
                "aantal_replica's": 1,
                "number_of_shards": 5
             }
          },
          "toewijzingen": {
             "eigendommen": {
                "item ID": {
                   "type": "lang"
                },
                "klok": {
                   "format": "epoch_second",
                   "type": "datum"
                },
                "waarde": {
                   "velden": {
                      "geanalyseerd": {
                         "index": waar,
                         "typ Text",
                         "analysator": "standaard"
                      }
                   },
                   "index": onwaar,
                   "typ Text"
                }
             }
          }
       }'

Dit is vereist om Elasticsearch in staat te stellen geldige toewijzing voor indices in te stellen automatisch aangemaakt. Dan is het nodig om de pijplijn te maken definitie. Pipeline is een soort voorbewerking van gegevens voordat gegevens in indexen zetten. De volgende opdracht kan worden gebruikt om te creëren pijplijn voor uint-index:

krul -X PUT \
        http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
        -H 'inhoudstype: applicatie/json' \
        -d '{
          "description": "dagelijkse uint indexnaamgeving",
          "verwerkers": [
             {
                "datum_index_naam": {
                   "veld": "klok",
                   "date_formats": [
                      "UNIX"
                   ],
                   "index_name_prefix": "uint-",
                   "date_rounding": "d"
                }
             }
          ]
       }'

De gebruiker kan de afrondingsparameter ("date_rounding") wijzigen om a . in te stellen specifieke indexrotatieperiode. Om andere pijplijnen te maken, moet de gebruiker: verander de URL (laatste deel is de naam van de pijplijn) en verander veld "index_name_prefix" om overeen te komen met de indexnaam.

Zie ook Elastiek zoeken documentatie.

Bovendien zou het opslaan van geschiedenisgegevens in meerdere op datums gebaseerde indices: ook worden ingeschakeld in de nieuwe parameter in de Zabbix-serverconfiguratie:

### Optie: HistoryStorageDateIndex
       # Schakel voorverwerking van geschiedeniswaarden in geschiedenisopslag in om waarden op te slaan in verschillende indices op basis van datum.
       # 0 - uitschakelen
       # 1 - inschakelen
       #
       # Verplicht: nee
       # Standaard:
       # HistoryStorageDateIndex=0

Probleemoplossen

De volgende stappen kunnen u helpen bij het oplossen van problemen met: Elasticsearch-configuratie:

  1. Controleer of de toewijzing correct is (GET-verzoek naar vereiste index-URL zoals http://localhost:9200/uint).
  2. Controleer of de shards niet in de mislukte staat zijn (herstart Elasticsearch zou moeten helpen).
  3. Controleer de configuratie van Elasticsearch. Configuratie zou moeten toestaan toegang vanaf de Zabbix frontend-host en de Zabbix-serverhost.
  4. Controleer Elasticsearch-logboeken.

Als u nog steeds problemen ondervindt met uw installatie, dan maak een bugrapport aan met alle informatie uit deze lijst (toewijzing, foutenlogboeken, configuratie, versie, enz.)