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:
- Controleer of de toewijzing correct is (GET-verzoek naar vereiste index-URL
zoals
http://localhost:9200/uint). - Controleer of de shards niet in de mislukte staat zijn (herstart Elasticsearch zou moeten helpen).
- Controleer de configuratie van Elasticsearch. Configuratie zou moeten toestaan toegang vanaf de Zabbix frontend-host en de Zabbix-serverhost.
- 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.)