# 安装ELK

注意!Elasticsearch、Logstash、Kibana三者版本必须完全一样 Elasticsearch、Logstash和Kibana 是我们常说的ELK,一种很典型的MVC思想,模型持久层,视图层和控制层。kibana搜索、查看存放在Elasticsearch中的数据,Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据。

# 环境准备

# 安装 java

参见安装java

# 配置防火墙

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
1
2

或者设置防火墙规则

firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --reload
1
2
3
4

# 安装 Elasticsearch

参考资料: ELK官网 (opens new window) ELK官网文档 (opens new window) ELK中文手册 (opens new window) ELK中文社区 (opens new window) ELK-API (opens new window)

# 安装方式一: 手动安装

  1. 规划安装目录 本例假设将安装文件下载到 /usr/app/soft 目录。 本例安装到 /usr/app/elasticsearch 目录。

  2. 下载安装包 到官网下载 (opens new window)对应操作系统版本。 本例下载elasticsearch-7.13.4版本。

  3. 解压安装包 tar -zxvf elasticsearch-7.13.4-linux-x86_64.tar.gz

  4. 重命名安装目录 mv elasticsearch-7.13.4 /usr/app/elasticsearch

  5. 修改配置文件 进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件

修改的主要内容:

#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: test-es
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /usr/app/elasticsearch/data
#设置日志的存储路径
path.logs: /usr/app/elasticsearch/logs
#设置除本机外,其它机器能访问,否则只能本机访问
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1","192.1168.0.4:9200"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14

提示

创建必要的目录 mkdir /usr/app/elasticsearch/data mkdir /usr/app/elasticsearch/logs

  1. 设置启动用户 创建启动用户(本例为es用户和组),并设置权限
groupadd es
useradd -g es es

chown -R es:es /usr/app/elasticsearch
1
2
3
4
  1. 设置启动JAVA版本 elasticsearch 到7.0之后默认要使用JDK11以上,可以在不改名系统本身环境变量的同时,使用elastic自身的JDK 需要修改elastic的启动文件 vi bin/elasticsearch
#配置为elasticsearch自带jdk
export JAVA_HOME=/usr/app/elasticsearch/jdk
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/usr/app/elasticsearch/jdk/bin/java"
else
    JAVA=`which java`
fi
1
2
3
4
5
6
7
8
9
10
  1. 设置开机启动 在/etc/init.d目录下新建文件elasticsearch vi /etc/init.d/elasticsearch
#!/bin/sh
#chkconfig: 2345 80 05
#description: elasticsearch

case "$1" in
start)
    su es<<!
    cd /usr/app/elasticsearch
    ./bin/elasticsearch -d
!
    echo "elasticsearch startup"
    ;;
stop)
    es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
    kill $es_pid
    echo "elasticsearch stopped"
    ;;
restart)
    es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
    kill $es_pid
    echo "elasticsearch stopped"
    su es<<!
    cd /usr/app/elasticsearch
    ./bin/elasticsearch -d
!
    echo "elasticsearch startup"
    ;;
*)
    echo "start|stop|restart"
    ;;
esac

exit $?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

保存退出,赋予执行权限

chmod +x /etc/init.d/elasticsearch
1

添加到开机启动任务

chkconfig --add elasticsearch
1
  1. 切换用户并启动
service elasticsearch start
1

或者手动启动

su es
cd  /usr/app/elasticsearch
./bin/elasticsearch
1
2
3

提示

es不能使用root启动

  1. 查看端口运行情况
lsof -i:9200
1

提示

  1. 解决问题: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 在/etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
1

执行/sbin/sysctl -p 立即生效,就可以重新启动了

  1. 解决问题: You must address the points described in the following [1] lines before starting Elasticsearch. 修改配置文件里面的如下语句,取消注释,删掉, "node-2",最终结果变为:
cluster.initial_master_nodes: ["node-1"]
1
  1. 客户端工具 客户端工具可选中 ElasticHD, 点击下载 (opens new window)

# 安装方式2: 自动安装

  1. 添加 Elasticsearch 仓库 在/etc/yum.repos.d/目录下新建文件 elasticsearch.repo, 编辑该文件
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
1
2
3
4
5
6
7
8
  1. 安装 Elasticsearch
sudo yum install --enablerepo=elasticsearch elasticsearch
1

可确认Elasticsearch安装信息

rpm -qi elasticsearch
1

应打印如下信息

Name        : elasticsearch
Epoch       : 0
Version     : 7.13.3
Release     : 1
Architecture: x86_64
Install Date: 2021年07月13日 星期二 13时34分03秒
Group       : Application/Internet
Size        : 545013131
License     : Elastic License
Signature   : RSA/SHA512, 2021年07月02日 星期五 22时10分04秒, Key ID d27d666cd88e42b4
Source RPM  : elasticsearch-7.13.3-1-src.rpm
Build Date  : 2021年07月02日 星期五 20时17分02秒
Build Host  : packer-virtualbox-iso-1622056512
Relocations : /usr
Packager    : Elasticsearch
Vendor      : Elasticsearch
URL         : https://www.elastic.co/
Summary     : Distributed RESTful search engine built for the cloud
Description :
Reference documentation can be found at
  https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  and the 'Elasticsearch: The Definitive Guide' book can be found at
  https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  1. 启动 Elasticsearch 并设置开机启动
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch
1
2
3
  1. 查看 Elasticsearch 运行状态
systemctl status elasticsearch
1
  1. 尝试请求
curl localhost:9200
1

若打印如下则Elasticsearch安装成功

{
  "name" : "node-1",
  "cluster_name" : "my-application",
  "cluster_uuid" : "OCZS8MfmTCy0I5QtdeXh3g",
  "version" : {
    "number" : "7.13.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "5d21bea28db1e89ecc1f66311ebdec9dc3aa7d64",
    "build_date" : "2021-07-02T12:06:10.804015202Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  1. 设置允许其他机器访问 当前只能响应本机的请求,想要其他机器也能访问的话,则需要修改Elasticsearch的配置 修改 /etc/elasticsearch/elasticsearch.yml
# line 17
cluster.name: my-application
# line 22
node.name: node-1
# line 56
network.host: 0.0.0.0
# line 61
http.port: 9200
# line 74
cluster.initial_master_nodes: ["node-1", "node-2"]
1
2
3
4
5
6
7
8
9
10
  1. 重启 Elasticsearch
systemctl stop elasticsearch
systemctl start elasticsearch
# 启动后稍等一会儿
netstat -nlpt
1
2
3
4

如果可以看到 :::9200, 就可以通过外部浏览器访问Elasticsearch服务了。 至此,Elasticsearch安装配置完成。

# 安装 Kibana

  1. 规划安装目录 本例假设将安装文件下载到 /usr/app/soft 目录。 本例安装到 /usr/app/kibana 目录。

  2. 下载 Kibana 安装包 到官网下载 (opens new window)安装包

  3. 解压安装包 把Kibana的安装包上传到Linux并解压。

tar -zxvf kibana-7.13.4-linux-x86_64.tar.gz
1
  1. 重命名安装目录
mv kibana-7.13.4-linux-x86_64 /usr/app/kibana
1
  1. 修改配置文件 配置文件在kibana/config目录中,文件名为kibana.yml 修改的主要内容:
# 服务的端口(默认为5601)
server.port: 5601
# 允许远程访问的地址配置
server.host: "0.0.0.0"
# 连接Elasticsearch服务配置
elasticsearch.hosts: ["http://localhost:9200"]
# Elasticsearch的用户名
elasticsearch.username: ""
# Elasticsearch的密码
elasticsearch.password: ""
1
2
3
4
5
6
7
8
9
10
  1. 启动
cd /usr/kibana/
./bin/kibana
1
2

# 添加 Kibana 仓库

在/etc/yum.repos.d/目录下新建文件 kibana.repo, 编辑该文件

[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
1
2
3
4
5
6
7
8

# 安装 Kibana

sudo yum install kibana
1

可确认Kibana的安装信息

rpm -qi kibana
1

应打印如下信息

Name        : kibana
Version     : 7.13.3
Release     : 1
Architecture: x86_64
Install Date: 2021年07月13日 星期二 13时45分37秒
Group       : default
Size        : 844789341
License     : Elastic License
Signature   : RSA/SHA512, 2021年07月02日 星期五 22时11分51秒, Key ID d27d666cd88e42b4
Source RPM  : kibana-7.13.3-1.src.rpm
Build Date  : 2021年07月02日 星期五 19时52分42秒
Build Host  : internal-ci-immutable-rm-ubuntu-2004-big-1625223048765205510.c.elastic-ci-prod.internal
Relocations : /
Packager    : Kibana Team <info@elastic.co>
Vendor      : Elasticsearch, Inc.
URL         : https://www.elastic.co
Summary     : Explore and visualize your Elasticsearch data
Description :
Explore and visualize your Elasticsearch data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 启动 Kibana 并设置开机启动

systemctl start kibana
systemctl enable kibana
1
2

# 查看 Kibana 运行状态

systemctl status kibana
1

# 测试访问

curl localhost:5601 -L
1

# 设置允许其他机器访问

修改 /etc/kibana/kibana.yml

# line 2
server.port: 5601
# line 7
server.host: "0.0.0.0"
# line 32
elasticsearch.hosts: ["http://localhost:9200"]
1
2
3
4
5
6

集群搭建中,elasticsearch.hosts配置该集群中的主节点的ip

# 重启 Kibana

systemctl stop kibana
systemctl start kibana
#启动后稍等一会
netstat -nlpt
1
2
3
4

如果可以看到 0.0.0.0:5601,就可以通过外部浏览器访问Kibana服务了,至此Kibana安装配置完成

# 安装 Logstash

# 下载 Logstash

官网下载 (opens new window)Logstash压缩包放至 /usr/share/ 下并解压(此处文件名以7.13.3版本为例)

tar -zxvf logstash-7.13.3-linux-x86_64.tar.gz
1

# 配置 Logstash

在 /usr/share/logstash-7.13.3/config/ 下新建文件 logstash.conf,在文件中写入如下内容

input {
  tcp {
    mode => "server"
    # host 内容填写本机IP地址
    host => "192.168.242.129"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    action => "index"
    # hosts为elasticsearch所在IP地址与端口号
    hosts  => "192.168.242.129:9200"
    index  => "applog"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 启动Logstash

/usr/share/logstash-7.13.3/bin/logstash -f /usr/share/logstash-7.13.3/config/logstash.conf
1

注意 路径须根据本地实际情况更改! /usr/share/logstash-7.13.3/bin/logstash => 为logstash启动文件 /usr/share/logstash-7.13.3/config/logstash.conf => 为logstash配置文件 (目前只可手动启动logstash)

# 测试是否启动成功

通过 netstat -nlpt 命令, 如果能够看到 192.168.242.129:4560 则logstash启动成功。