Elasticsearch Überwachen

Hallo zusammen,

ich möchte auf einem entfernten Host eine Elasticsearch Datenbank (Graylog Host) überwachen.
Nach dem vorgehen von Elasticsearch-Monitoring mit Checkmk funktioniert das aber nicht.

Der betreffende Hosts wir schon per Agent überwacht, dazu sollen aber eben noch die Elasticsearch Instanz mit überwacht werden.

Meine Regel für den Check sieht wie folgt aus:

Das Ergebnis nach einem neu laden der Services ist das alles auf UNKN steht. Also nichts mehr erkannt wird auf dem Host.

Ist das Grundsätzlich korrekt das die Regel zwar den expliziten Host nimmt aber als abzurufenden Host den localhost bzw. 127.0.0.1?

CMK Version ist: 2.0.0p5 CEE

Vielen Dank für eure Hilfe.
mulix

Das Elasticsearch läuft aber doch nicht auf dem Monitoring Host. Hier sollte dann die IP des Graylog Servers stehen.
Wichtig wäre zu prüfen ob die Elasticsearch Instanz auch von extern dann erreichbar ist.

Danke für die Rückmeldung.

Das Elasticsearch läuft aber doch nicht auf dem Monitoring Host. Hier sollte dann die IP des Graylog Servers stehen.

Das macht natürlich absolut Sinn. Dann ist der Beitrag unter Elasticsearch-Monitoring mit Checkmk aber verwirrend. Oder ein Hinweis wäre gut.

Wichtig wäre zu prüfen ob die Elasticsearch Instanz auch von extern dann erreichbar ist.

Habe ich jetzt sicher gestellt. Ein curl hostip:9200/ gibt den JSON String mit all den Informationen zurück.

Nach Anpassung der Regel kommt dann auch in der Servicesuche die gewünschten Elasticsearch Einträge. Aber leider ist der Rest immernoch UNKN.

Ich habe auch mal versucht alles zu löschen, es wird dann nur die Services für Elasticsearch erkannt.

" Haben Sie den Checkmk Agent installiert, wählen Sie an dieser Stelle die Option Normal Checkmk Agent, all configured special agents aus."

Gemeint ist hier eher, dass in dem Blogpost die Konfiguration des Special Agent mit 127.0.0.1 erfolgt was eigentlich keinen Sinn macht. Es wird sehr selten vorkommen, dass der ELK auf dem lokalen Monitoring Server läuft. :wink:

Achtung wenn das funktioniert dann kann jeder im eigenen Netz auf dem Elasticsearch tun und lassen was er will.
Mindestens die User/Password Authorization sollte aktiv sein.

Ich hab mich auf den Part bezogen:

:slight_smile: da zeigts bei mir im Zitat den falschen Teil an

Ich hab mal nen kleinen Hinweis ind en Blog gepackt.

2 Likes

Letztendlich ist es also so, dass man bei dem betreffenden Host (der die Elasticsearch DB hält) den Check agent / API integrations auf Configured API integrations and Checkmk agent umstellen muss. Dann in der Regel für die Elasticsearch DB die IP-Adresse des Hosts angeben und zack passt es.

Der DB Host muss natürlich den Elasticsearch Prozess mit dem Port 9200 nach außen freigaben. Hier den Zugriff per iptables bzw. Passwort absichern.

Danke für die Hilfe :slight_smile:

Hast du gesehen, dass es auch einen special agent für Graylog selbst gibt?

Moin zusammen,

kann mir jemand sagen, wie ich es hinbekomme, das CMK den Hostnamen abfragt und nicht versucht eine IP abzufragen?

Kurz zur Erklärung:
Wir haben einen elastic cluster, den ich nun gern mit dem Special Agent überwachen würde. Bisher wurde das Plugin von comnet genutzt, das will nun in v2 nicht mehr, daher der Agent. Ein normaler Agent ist auf dem Server vorhanden.

Wenn ich die o.g. Anleitung für elasticsearch nun durchführe(Host mit no ip erstellt + die elasticsearch Regel mit IP des entsprechenden Hosts), bekomme ich lediglich diese Fehlermeldung:

Communication failed: [Errno 111] Connection refusedAgent exited with code 2: usage: agent_elasticsearch [-h] [--debug] [--verbose] [--vcrtrace TRACEFILE]
[-u USER] [-s PASSWORD] [-P PROTO] [-p PORT]
[-m MODULES]
HOSTNAME [HOSTNAME ...]
agent_elasticsearch: error: unrecognized arguments: -i

Wenn ich den Aufruf á la CLI in der Regel “individual program call…” einbaue, bekomme ich Daten.

<<<check_mk>>>
<<<elasticsearch_cluster_health>>>
cluster_name ms-git
status green
timed_out False
number_of_nodes 3
number_of_data_nodes 3
active_primary_shards 82
active_shards 164
relocating_shards 0
initializing_shards 0
unassigned_shards 0
delayed_unassigned_shards 0
number_of_pending_tasks 0
number_of_in_flight_fetch 0
task_max_waiting_in_queue_millis 0
active_shards_percent_as_number 100.0
<<<elasticsearch_nodes>>>
....
<<<elasticsearch_stats>>>
<<<elasticsearch_shards>>>
136 136 0
<<<elasticsearch_cluster>>>
351139960 81009919835
<<<elasticsearch_indices>>>
.kibana 0.0 416.0
metrics 0.0 416.0
service 775.0 602269085.0
.transform 1.5 14232.0
.items 0.0 416.0
.monitoring 296496.4285714286 437451381.0
customer 19277078.666666668 8593940013.666666

Hier crasht zwar auch der elasticsearch_cluster und indices Check, aber immerhin kommen Daten.
Wie ich nun dazu noch die Daten des normalen Agenten hinzu bekommen soll, ist mir ein Rätsel. Zudem wird der Host ja nun dauerhaft als down angezeigt, selbst die additional IP ist da leider wenig hilfreich.

Ich hoffe mir kann jemand weiter helfen.

Gruß
TA

Ich habe nochmal etwas weiter gesucht und bin nun noch verwirrter als vorher.

OMD[beta]:~$ cmk -d hostname
ERROR [agent]: MKIPAddressLookupError('Host has no IP address configured.')(!!)
ERROR [special_elasticsearch]: Agent exited with code 2: usage: agent_elasticsearch [-h] [--debug] [--verbose] [--vcrtrace TRACEFILE]
                           [-u USER] [-s PASSWORD] [-P PROTO] [-p PORT]
                           [-m MODULES]
                           HOSTNAME [HOSTNAME ...]
agent_elasticsearch: error: unrecognized arguments: -i(!!)

Laut Anleitung soll keine IP vergeben werden? Und wo kommt das “-i” her?
Weiter im Text:

OMD[beta]:~$ cmk -D hostname

hostname
Addresses:              No IP
Tags:                   [address_family:no-ip], [agent:all-agents], [criticality:prod], [networking:lan], [piggyback:auto-piggyback], [site:beta], [snmp_ds:no-snmp], [tcp:tcp]
Labels:
Host groups:            check_mk
Contact groups:
Agent mode:             Normal Checkmk agent, all configured special agents
Type of agent:
  TCP: None:6556
  Program: /omd/sites/beta/share/check_mk/agents/special/agent_elasticsearch  -P 9200 -i nodes 'x.x.x.x'

Da taucht auf einmal das “-i” auf, aber warum? Wenn ich mir den Agenten richtig ansehe, sollte die Wahl der Module doch mit “-m” aufgerufen werden.

Ist das vorher noch nicht aufgefallen?

Danke und Gruß
TA