ElasticSearch7.4.2 啟用kibana 以及X-Pack在linux上安裝部署


 

 Elasticsearch的安裝

1. 安裝

1.1 下載安裝包:elasticsearch-7.4.2-linux-x86_64.tar.gz 或直接在服務器直接下載:wget https://mirrors.huaweicloud.com/elasticsearch/7.4.2/elasticsearch-7.4.2-linux-x86_64.tar.gz
1.2 通過FTP工具上傳安裝到在服務器目錄(如:/home/software)

1.3 解壓安裝包:

// 解壓安裝包
tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
// 重命名
mv elasticsearch-7.4.2-linux-x86_64 elasticsearch-7.4.2
// 移動到 /usr/local 下
mv elasticsearch-7.4.2 /usr/local

 

2. 配置相關配置文件

2.1 配置elasticsearch.yml
// 進入目錄
cd
/usr/local/elasticsearch-7.4.2/config vim elasticsearch.yml

配置如下:

// 集群時,cluster.name 要保持一致
cluster.name: imooc-elasticsearch
// 集群時,node.name 要各不相同 node.name: es
-node1 path.data: /usr/local/elasticsearch-7.4.2/data path.logs: /usr/local/elasticsearch-7.4.2/log network.host: 0.0.0.0
// 集群配置,不是集群的話下面這一行代碼不用配置
discovery.seed_hosts: ["192.168.40.179", "192.168.40.180","192.168.40.181"]
cluster.initial_master_nodes: ["es-node1"]

 

 

 

 

 

 

2.2 配置 jvm.options

cd /usr/local/elasticsearch-7.4.2/config
vim jvm.options 

根據自己的Linux實際內存來改,我的內存為1G,這里改為128m

-Xms128m
-Xms128m

 

 

 

 

2.3 修改jdk默認路徑

由於我這邊環境JDK使用的1.8,而ElasticSearch7.4.2要求JDK版本必須為JDK11+,否則啟動會報錯,在這種情況下如想在不升級環境JDK版本下啟動ES需修改ES的JDK配置,其實ElasticSearch7.X安裝包中都自帶有JDK(系統無配置JDK環境變量時啟動會使用自帶JDK),我這里通過修改bin目錄下elasticsearch和elasticsearch-cli來指向自帶JDK。

修改bin/elasticsearch,添加Elasticsearch自帶的jdk

cd /usr/local/elasticsearch-7.4.2/bin

vim elasticsearch

添加位置如下:

 #!/bin/bash
 
# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are:
#
#   ES_PATH_CONF -- Path to config directory
#   ES_JAVA_OPTS -- External Java Opts on top of the defaults set
#
# Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that
# the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g".
#
#   ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch

# 配置為elasticsearch自帶jdk
export JAVA_HOME=/usr/local/elasticsearch-7.4.2/jdk
export PATH=$JAVA_HOME/bin:$PATH
 
source "`dirname "$0"`"/elasticsearch-env
 
if [ -z "$ES_TMPDIR" ]; then
  ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fi
 
ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`
ES_JAVA_OPTS="${JVM_OPTIONS//\$\{ES_TMPDIR\}/$ES_TMPDIR}" # 添加jdk判斷 if [ -x "$JAVA_HOME/bin/java" ]; then
   JAVA="/usr/local/elasticsearch-7.4.2/jdk/bin/java"
else
   JAVA=`which java`
fi
 
# manual parsing to find out, if process should be detached
if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@"
else
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@" \
    <&- &
  retval=$?
  pid=$!
  [ $retval -eq 0 ] || exit $retval
  if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
    sleep $ES_STARTUP_SLEEP_TIME
  fi
  if ! ps -p $pid > /dev/null ; then
    exit 1
  fi
  exit 0
fi
 
exit $?

 

  2) 修改bin/elasticsearch-cli

 

vim elasticsearch-cli

 

#!/bin/bash
 
set -e -o pipefail
 
#配置es自帶jdk13
  export JAVA_HOME=/usr/local/elasticsearch-7.4.2/jdk
  export PATH=$JAVA_HOME/bin:$PATH
 source "`dirname "$0"`"/elasticsearch-env IFS=';' read -r -a additional_sources <<< "$ES_ADDITIONAL_SOURCES"
for additional_source in "${additional_sources[@]}"
do source "$ES_HOME"/bin/$additional_source done IFS=';' read -r -a additional_classpath_directories <<< "$ES_ADDITIONAL_CLASSPATH_DIRECTORIES"
for additional_classpath_directory in "${additional_classpath_directories[@]}"
do ES_CLASSPATH="$ES_CLASSPATH:$ES_HOME/$additional_classpath_directory/*" done # use a small heap size for the CLI tools, and thus the serial collector to # avoid stealing many CPU cycles; a user can override by setting ES_JAVA_OPTS ES_JAVA_OPTS="-Xms4m -Xmx64m -XX:+UseSerialGC ${ES_JAVA_OPTS}" #添加jdk判斷 
 if [ -x "$JAVA_HOME/bin/java" ]; then
     JAVA="/usr/local/elasticsearch-7.4.2/jdk/bin/java"
  else
     JAVA=`which java`
  fi
exec \
  "$JAVA" \
  $ES_JAVA_OPTS \
  -Des.path.home="$ES_HOME" \
  -Des.path.conf="$ES_PATH_CONF" \
  -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
  -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
  -cp "$ES_CLASSPATH" \
  "$ES_MAIN_CLASS" \
  "$@"

 

2-4 編輯limits.conf配置文件(解決無法創建本地文件問題,用戶最大可創建文件數太小)

vim /etc/security/limits.conf

添加以下配置

注:* 代表Linux所有用戶名稱

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

 

 

 

2-5 編輯/etc/sysctl.conf配置文件(解決最大虛擬內存太小)

vim /etc/sysctl.conf


添加如下配置:

vm.max_map_count=262144

 

 

 

 

保存后執行命令,進行刷新

sysctl -p

 

3. 創建用戶用來啟動es

// 創建用戶
useradd esuser cd
/usr/local/elasticsearch-7.4.2
// 授權
chown -R esuser /usr/local/elasticsearch-7.4.2 
chown -R esuser:esuser /usr/local/elasticsearch-7.4.2

 

啟動

// 使用創建的用戶進行啟動
su esuser // 后台啟動 .
/elasticsearch -d
// 前台啟動
./elasticsearch

 

啟動完成,瀏覽器訪問:http://192.168.40.179:9200,界面顯示如下:

 

 

 

Elasticsearch安裝 X-pack

集群的話,三體機器一起操作

X-Pack是Elastic Stack擴展功能,提供安全性,警報,監視,報告,機器學習和許多其他功能。 ES7.0+之后,默認情況下,當安裝Elasticsearch時,會自動安裝X-Pack,無需單獨再安裝。自6.8以及7.1+版本之后,基礎級安全永久免費。
從上面啟動ES並訪問我們可以發現在訪問ES過程中我們沒有任何安全認證就可以直接訪問並操作ES,這在生產環境下如果端口號向外暴露的話對數據安全性無法得到保障。當然還有其它解決方案比如使用nginx作代理防護這里就不作過多介紹。

 

1. 修改配置文件

 cd /usr/local/elasticsearch7.4.2/config
 vim elasticsearch.yml

 添加以下內容,紅線下面的內容是下一步要配置的,這里暫且只添加這一句

 xpack.security.enabled: true

 

 

 

2. 生成節點證書
借助elasticsearch-certutil命令生成證書:

cd /usr/local/elasticsearch7.4.2/bin

./elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass "

 

 

 

 

 

 

3. 配置通信證書

vi elasticsearch.yml
新增如下配置項:
# xpack.security.enabled: true  # 這一句在上面添加過了,不用再添加
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

 

4. 設置集群密碼,我選擇的是手動配置,密碼是 123456

  大概一共需要輸入12次密碼,輸入密碼時不顯示密碼,輸入完成點回車就行

 

bin/elasticsearch-setup-passwords interactive   --手動配置每個用戶密碼模式
bin/elasticsearch-setup-passwords auto            --自動配置每個用戶密碼模式

配置完成后瀏覽器訪問就會需要密碼

賬號可以使用:elastic

密碼:123456

 

在集群的其中一台節點上安裝kibana

可以在華為的 https://mirrors.huaweicloud.com/ 下載 kibana,版本要和ES的保持一致

 

tar -zxvf kibana-7.4.2-linux-x86_64.tar.gz -C /usr/local/
mv kibana-7.4.2-linux-x86_64/ kibana-7.4.2
## 進入kibana目錄,修改配置文件
vim /usr/local/kibana-7.4.2/config/kibana.yml
## 修改配置如下:這里的ip就是本機Linux的IP地址
server.host: "192.168.40.179"
elasticsearch.url: http://192.168.40.179:9200
## 啟動:
# /usr/local/kibana-7.4.2/bin/kibana &
/usr/local/kibana-7.4.2/bin/kibana --allow-root
## 指定配置文件啟動:
# nohup /usr/local/kibana-7.4.2/bin/kibana -c /usr/local/kibana-7.4.2/config/kibana.yml > /dev/null 2>&1 &
/usr/local/kibana-7.4.2/bin/kibana -c /usr/local/kibana-7.4.2/config/kibana.yml > /dev/null 2>&1 --allow-root

## 訪問:
http://192.168.40.179:5601/app/kibana (5601為kibana默認端口)

 

 

 

安裝 kibana 並開啟X-pack

我下載的版本是7.4.2,自帶了x-pack,在配置文件中開啟就可以。

國內下載地址:https://www.newbe.pro/Mirrors/Mirrors-Kibana/

下載好相應的版本,要與Elasticsearch一致,我講它放到了/home/software中

 

 

 

 

1.解壓重命名,並放到/usr/local下

 
 tar -zxvf kibana-7.4.2-linux-x86_64.tar.gz -C /usr/local/
mv kibana-7.4.2-linux-x86_64 kibana-7.4.2

 

2.配置配置文件

cd /usr/local/kibana-7.4.2/config/
vim kibana.yml

  修改配置文件如下


server.host: "0.0.0.0"

// 本機地址
server.name: "192.168.40.179"
// elasticsearch 的ip地址 以及用戶名密碼
elasticsearch.hosts: ["http://192.168.40.179:9200"]

elasticsearch.username: "elastic"

elasticsearch.password: "123456"

// 開啟x-pack

xpack.security.enabled: true

 

 

 

 

 

 

 

 

 

 

 

保存退出,啟動就可以了

瀏覽器訪問kibana就會出現消息了

前提是首先配置好EKL集群:

Zookeeper(集群) + kafka

Elasticsearch(集群) + kibana(部署到es的某一台節點上)

Filebeat(日志收集)  +  Logstash(日志過濾)

這里只是配置的Elasticsearch(包括kibana可視化)

 

filebeat將日志收集起來 ——>  放到kafka消息隊列 ——>  Logstash消息過濾 ——> 持久化到 Elasticsearch上——> 通過kibana可視化出來

1. 把項目應用的日志打到磁盤上 

2. 通過filebeat抓取到kafka中  

3. 通過Logstash去進行消費kafka中的日志,並做一些過濾  

4. 之后Logstash將處理好的日志輸出到Elasticsearch上  

5. 最后用kibana進行展示

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM