Elasticsearch-Einrichtung für Log-Analyse
Elasticsearch ist die führende Open-Source-Suchmaschine für die zentralisierte Log-Analyse. Zusammen mit Logstash und Kibana bildet es den ELK Stack, der es ermöglicht, große Mengen von Log-Daten zu sammeln, zu verarbeiten, zu durchsuchen und zu visualisieren. Diese Anleitung führt Sie durch die vollständige Einrichtung.
Elasticsearch installieren und konfigurieren
Fügen Sie das offizielle Elastic-Repository hinzu und installieren Sie Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install elasticsearch
Konfigurieren Sie die grundlegenden Einstellungen in /etc/elasticsearch/elasticsearch.yml:
cluster.name: log-analysis
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
Passen Sie die JVM-Heap-Größe in /etc/elasticsearch/jvm.options.d/heap.options an:
-Xms4g
-Xmx4g
Starten Sie Elasticsearch und überprüfen Sie den Status:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
curl -k https://localhost:9200
Logstash-Pipeline einrichten
Installieren Sie Logstash und erstellen Sie eine Pipeline für Syslog-Verarbeitung:
sudo apt install logstash
Erstellen Sie die Pipeline-Konfiguration unter /etc/logstash/conf.d/syslog.conf:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:log_message}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
user => "elastic"
password => "${ES_PASSWORD}"
ssl_certificate_verification => true
}
}
Grok-Patterns zerlegen die Syslog-Nachrichten in strukturierte Felder. Der Date-Filter parst die Zeitstempel korrekt, damit sie in Elasticsearch als Zeitfeld indiziert werden.
Index Lifecycle Management
Konfigurieren Sie ILM, um Indizes automatisch zu verwalten und Speicherplatz effizient zu nutzen:
curl -X PUT "https://localhost:9200/_ilm/policy/logs-policy" -H 'Content-Type: application/json' -u elastic -d '
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_size": "50GB", "max_age": "1d" } } },
"warm": { "min_age": "7d", "actions": { "shrink": { "number_of_shards": 1 }, "forcemerge": { "max_num_segments": 1 } } },
"delete": { "min_age": "30d", "actions": { "delete": {} } }
}
}
}'
Diese Policy rollt Indizes nach 50 GB oder einem Tag über, verschiebt sie nach 7 Tagen in die Warm-Phase mit reduzierter Shard-Anzahl und löscht sie nach 30 Tagen automatisch.
Kibana-Dashboards einrichten
Installieren Sie Kibana und stellen Sie die Verbindung zu Elasticsearch her:
sudo apt install kibana
sudo systemctl enable kibana
sudo systemctl start kibana
Konfigurieren Sie die Elasticsearch-Verbindung in /etc/kibana/kibana.yml:
server.host: "0.0.0.0"
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "${KIBANA_PASSWORD}"
Öffnen Sie Kibana unter http://server-ip:5601, erstellen Sie ein Data View für syslog-* und beginnen Sie mit der Erstellung von Dashboards zur Überwachung Ihrer Infrastruktur. Nutzen Sie Lens-Visualisierungen für schnelle Analysen und speichern Sie häufig verwendete Abfragen als gespeicherte Suchen.