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
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