1 环境

IP Hostname OS Version Elasticsearch Version
192.168.7.41 elk-es-node1 Ubuntu 18.04.3 7.6.1
192.168.7.42 elk-es-node2 Ubuntu 18.04.3 7.6.1
192.168.7.43 elk-es-node3 Ubuntu 18.04.3 7.6.1
192.168.7.44 elk-logstash-node1 Ubuntu 18.04.3 7.6.1
192.168.7.45 elk-kibana-node1 Ubuntu 18.04.3 7.6.1

禁用swap,同步时间。

2 安装Elasticsearch集群

2.1 安装jdk

# cd /usr/local/src/
# tar xf jdk-8u231-linux-x64.tar.gz
# ln -s jdk1.8.0_231/ jdk
# cat > /etc/profile.d/jdk.sh << EOF
export JAVA_HOME=/usr/local/src/jdk
export CLASSPATH=.:\$JAVA_HOME/jre/lib/rt.jar:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
# source /etc/profile.d/jdk.sh

2.2 安装elasticsearch

从7.X开始,elasticsearch的deb包分为带jdk和不带jdk两种,这里选择不带jdk的,也就是使用上步操作配置的jdk环境,deb包下载地址

# dpkg -i elasticsearch-7.6.1-no-jdk-amd64.deb

2.3 编辑elasticsearch服务配置文件

# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: hechunping-es #elasticsearch集群名称,集群中的每个节点必须一致
node.name: es-node1 #elasticsearch节点名称,集群中的每个节点必须唯一
path.data: /elk/data #elasticsearch数据存放目录
path.logs: /elk/logs #elasticsearch日志存放目录
bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入swap
network.host: 192.168.7.41 #监听IP
http.port: 9200 #监听端口
discovery.seed_hosts: ["192.168.7.41", "192.168.7.42","192.168.7.43"] #elasticsearch集群中node节点发现列表
cluster.initial_master_nodes: ["192.168.7.41", "192.168.7.42","192.168.7.43"] #启动一个全新的elasticsearch集群时可以被选举为master的节点列表
gateway.recover_after_nodes: 2 #elasticsearch集群中的N个节点启动后,才允许进行数据恢复处理,默认是1.通常设置为过半的集群节点数量,例如,集群中总共有3个节点,那么将该值设置为2,如果在集群中总共有5个节点,则将该值设置为3,以此类推。
action.destructive_requires_name: true #设置是否可以通过正则或者_all删除或者关闭索引库,默认true表示必须要显式指定索引库名称,生产环境建议设置为true,删除索引库的时候必须指定,否则可能会导致误删除。

2.4 配置elasticsearch使用的内存

# vim /usr/lib/systemd/system/elasticsearch.service
[Service]
LimitMEMLOCK=infinity #无限制使用内存

# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
将Xmx和Xms设置为不超过物理RAM的50%,并将它们设置为一样大。参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html

2.5 目录权限设置

# mkdir -p /elk/{data,logs}
# chown -R elasticsearch.elasticsearch /elk/
# ll /elk/ -d
drwxr-xr-x 4 elasticsearch elasticsearch 4096 May  8 17:20 /elk//

2.6 配置软链接

# ln -s /usr/local/src/jdk /usr/share/elasticsearch/jdk

注:以上操作在elasticsearch集群中的每个节点几乎一样,需要注意的是监听地址要改成对应节点的ip,以及node.name需要在集群中保证唯一。

2.7 启动elasticsearch集群中每个节点的elasticsearch服务

# systemctl daemon-reload
# systemctl enable --now elasticsearch

2.8 通过浏览器访问elasticsearch

deb包方式部署ELK日志系统_第1张图片

2.9 查看elasticsearch集群状态

# curl -XGET "http://192.168.7.41:9200/_cat/health?v"
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1588933648 10:27:28  hechunping-es green           3         3      0   0    0    0        0             0                  -                100.0%
# curl -XGET "http://192.168.7.41:9200/_cat/nodes?v"
ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.7.41           15          96   2    0.01    0.05     0.08 dilm      -      es-node1
192.168.7.42           19          96   2    0.00    0.02     0.00 dilm      -      es-node2
192.168.7.43           17          95   3    0.05    0.08     0.06 dilm      *      es-node3

以上信息可以发现elasticsearch集群的名称为hechunping-es,当前状态为green,有三个node节点,其中es-node3是master节点。

3 安装Logstash

3.1 安装jdk

# cd /usr/local/src/
# tar xf jdk-8u231-linux-x64.tar.gz
# ln -s jdk1.8.0_231/ jdk
# cat > /etc/profile.d/jdk.sh << EOF
export JAVA_HOME=/usr/local/src/jdk
export CLASSPATH=.:\$JAVA_HOME/jre/lib/rt.jar:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
# source /etc/profile.d/jdk.sh

3.2 安装logstash

# dpkg -i logstash-7.6.1.deb

3.3 配置软链接

# ln -s /usr/local/src/jdk/bin/java /usr/bin/java

3.4 启动logstash,并设置为开机启动

# systemctl enable --now logstash

4 安装Kibana

4.1 安装kibana

# dpkg -i kibana-7.6.1-amd64.deb

4.2 修改kibana配置文件/etc/kibana/kibana.yml

# egrep -v "^(#|$)" /etc/kibana/kibana.yml 
server.port: 5601 #监听端口
server.host: "192.168.7.45" #监听地址
elasticsearch.hosts: ["http://192.168.7.41:9200"] #kibana连接的elasticsearch实例URL
i18n.locale: "zh-CN" #支持中文

4.3 启动kibana,并设置为开机启动

# systemctl enable --now kibana.service

4.4 打开浏览器,输入http://yourip:5601

deb包方式部署ELK日志系统_第2张图片