Building ELK (ElasticSearch, LogStash and Kibana) on Aarch64
Introduction
Build
Sources
- Upstream: https://git.linaro.org/leg/bigdata/elasticsearch.git/
https://git.linaro.org/leg/bigdata/logstash.git
https://git.linaro.org/leg/bigdata/kibana.git - The ELK stack version for erp17.08 is v5.4.1
Environment
- Docker: Debian 8
Pre-Requisites
Docker, git
Dependencies
Install Prerequisites
# install prerequisites echo "deb http://http.debian.net/debian jessie-backports main" | tee /etc/apt/sources.list.d/backports.list sudo apt-get update -y sudo apt-get install -y -t jessie-backports openjdk-8-jdk git build-essential rubygems texinfo locales-all automake autoconf libtool curl zip unzip rpm texinfo locales-all maven ant tar wget python2.7 python-requests wget https://services.gradle.org/distributions/gradle-3.5.1-bin.zip -O /tmp/gradle-3.5.1-bin.zip cd ${HOME} && unzip /tmp/gradle-3.5.1-bin.zip && rm /tmp/gradle-3.5.1-bin.zip ln -s gradle-3.5.1 gradle # install docker engine. The easiest way to install docker is to use get.docker.com script. Download and run get.docker.com script: curl -sSL https://get.docker.com/ | sh
Build Steps
Following scripts are expected to run in a debian-8 container.
Building ElasticSearch
Debian
# setup environments export LANG="en_US.UTF-8" export PATH=${HOME}/gradle/bin:$PATH export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64 export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" # setup JAVA_HOME cd /usr/lib/jvm/java-8-openjdk-* export JAVA_HOME=${PWD} # clone the ElasticSearch v5.4.1 git clone --depth 1 https://git.linaro.org/leg/bigdata/elasticsearch.git -b v5.4.1 ${WORKSPACE}/elasticsearch cd ${WORKSPACE}/elasticsearch # okay everything is in place gradle assemble -Dbuild.snapshot=false
Building Logstash
Debian
# install prerequisites sudo gem install rake sudo gem install bundler # setup environments export RELEASE=1 # clone the Logstash definitions git clone --depth 1 https://git.linaro.org/leg/bigdata/logstash.git -b v5.4.1 ${WORKSPACE}/logstash cd ${WORKSPACE}/logstash # okay everything is in place rake bootstrap rake plugin:install-default rake artifact:deb
Building Kibana
Debian
# install prerequisites sudo gem install fpm -v 1.5.0 sudo gem install pleaserun -v 0.0.24 sudo ln -s /usr/bin/python2.7 /usr/bin/python curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash source ${HOME}/.bashrc # clone the Kibana definitions git clone --depth 1 https://git.linaro.org/leg/bigdata/kibana.git -b v5.4.1 ${WORKSPACE}/kibana curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash source ${HOME}/.profile #Install the version of node.js listed in the .node-version file (this can be easily automated with tools such as nvm and avn) nvm install $(cat ${WORKSPACE}/kibana/.node-version) cd ${WORKSPACE}/kibana #Install npm dependencies npm install npm rebuild node-sass npm run build -- --deb --release mkdir -p out cp -a ${WORKSPACE}/kibana/target/kibana-*-arm64.deb* out/
Patches
Elasticsearch
Enable ARM64 support in SecComp
Logstash
Support JRuby 9K for Logstash v5.4.1
Kibana
Support packaging archive on arm64
Support create deb/rpm packages for arm64