...
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
Die Einstellung elasticsearch.hosts kann weggelassen werden, wenn auf dem Rechner auch ein Elasticsearch läuft.
Starten
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 Removed
Image 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
|