Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Neue Debian 10 Openstack VM foliotest-log.


apt-get update
apt-get upgrade
apt-get install gnupg
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt-get update
apt-get install elasticsearch
systemctl enable elasticsearch
apt-get install kibana
systemctl enable kibana

Elasticsearch (Single Instance)

Konfiguration /etc/elasticsearch/elasticsearch.yml:

cluster.name: folio-logs
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true

Elasticsearch starten und Passwörter setzen:

systemctl start elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

Für alle das selbe Passwort gesetzt. Es steht in /home/debian/elastic-pw

...

Dabei wurde ein Elastic Cluster aus 4 Nodes aufgebaut. Der Cluster funktioniert aber nur, wenn man Zertifikate installiert:

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
mkdir /etc/elasticsearch/certs
cp /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/certs/
chown -r elasticsearch /etc/elasticsearch/certs

Die Datei elastic-certificates.p12 muss man dann auf alle Knoten in das Verzeichnis legen. Die /etc/elastasticsearch/elastic.yml sieht dann so aus:

cluster.name: folio-logs
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
cluster.initial_master_nodes: ["search-dar1-01"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

search-dar1-01 = 10.195.16.101 ist dabei der erste Elasticsearch Clusterknoten.

...

Konfiguration von /etc/kibana/kibana.yml

elasticsearch.hosts: ["http://10.195.16.101:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "********"

Die Einstellung elasticsearch.hosts kann weggelassen werden, wenn auf dem Rechner auch ein Elasticsearch läuft.

Starten

systemctl start kibana


Client - Filebeat

Auf den einzelnen Folio Instanzen werden die Logs per Filebeat geschickt:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt-get update && apt-get install filebeat
systemctl enable filebeat

Konfiguration /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: container
  enabled: true
  paths:
          - /var/lib/docker/containers/*/*.log
- type: log
  enabled: true
  paths:
    - /var/log/*.log
    - /var/log/syslog
    - /var/log/folio/*.log
    - /var/log/postgresql/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.elasticsearch:
  hosts: ["10.195.16.101:9200"]
  indices:
    - index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  username: "elastic"
  password: "********"
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata:
      host: "unix:///var/run/docker.sock"
  - add_kubernetes_metadata: ~
  - decode_json_fields:
      fields: ["message"]
      target: "json"
      overwrite_keys: true
  - drop_event:
      when:
        regexp:
          message: " filebeat"

Die Filebeat Integration ist inzwischen per Ansible Playbook automatisiert. Der Indexname hat den Rechnernamen vorgestellt, so dass man die Indexe den einzelnen Bibliotheken zuweisen kann.

...

Sinnvoll ist die Auswahl der Felder wie im Bild

Image RemovedImage Added

SSL

Die Kommunikation zwischen Filebeat und Elasticserach sowie zwischen Kibana und Elasticserach ist momentan nicht verschlüsselt. Ist auch nicht zwingend notwendig (interne Netze). Wie das geht sollte hier beschrieben sein:

...

Damit User von aussen sich per https auf kibana einloggen können wurde ein Zertifikat erstellt, und ein nginx als Proxy vorgeschaltet:

apt-get install nginx
egrep -ve "^\s*#" /etc/nginx/sites-enabled/default
 
server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate     /etc/ssl/private/foliotest-log-chain.pem;
        ssl_certificate_key /etc/ssl/private/foliotest-log-sec-key-ohnepass.pem;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
        server_name foliotest-log.bib-bvb.de;
        location / {
                proxy_pass http://localhost:5601;
        }
}
 
systemctl enable nginx --now