ELK basic
ELK basic
ES 集群部署
环境:
角色 | 主机、IP |
---|---|
es-01 | 172.16.1.128 |
es-02 | 172.16.1.134 |
es-03 | 172.16.1.136 |
ES
启动时不允许root
用户运行,所以在部署之前单独为其创建一个账户,用来专门管理es
:
useradd esuserecho 123 | passwd --stdin esuser# 将 esuser 用户添加进无密码sudoersecho "esuser ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/eschmod 0440 /etc/sudoers.d/es# 为之后的es数据和日志创建目录mkdir /es/data -pvmkdir /es/logschown -R esuser:esuser /eschown -R esuser:esuser /usr/local/elasticsearch-7.7.1/# ------ 切换到 esuser 用户,下面的所有操作都使用 esuser 用户su esuser
安装ES
之前,需要安装JDK
,该步骤在此就不再赘述。
从官方站点下载ES
的压缩包, 并解压到指定目录当中去:
tar xf elasticsearch-7.7.1-linux-x86_64.tar.gz -C /usr/localcd /usr/local/elasticsearch-7.7.1
修改配置文件config/elasticsearch.yml
:
# vim config/elasticsearch.yml# 集群名称,默认是elasticsearch,通过组播的方式通信,通过名称判断属于哪个集群cluster.name: es-cluster# 是否可以成为master节点node.master: true# 是否允许该节点存储数据,默认开启node.data: true# 节点名称,要唯一node.name: es-01# 数据存放位置path.data: /es/data# 日志存放位置path.logs: /es/logs# 网络绑定,这里我绑定 0.0.0.0,支持外网访问network.host: 0.0.0.0# 设置对外服务的http端口,默认为9200http.port: 9200# 设置节点间交互的tcp端口,默认是9300transport.tcp.port: 9300# 集群最少master数量discovery.zen.minimum_master_nodes: 2discovery.zen.ping_timeout: 3s# 初始化时可进行选举的节点,不填端口默认为9300discovery.zen.ping.unicast.hosts: ["es-01", "es-02", "es-03"]# 支持跨域访问http.cors.enabled: truehttp.cors.allow-origin: "*"# Bootstrap the cluster using an initial set of master-eligible nodes:# 手动指定可初始化的master节点cluster.initial_master_nodes: ["es-01"]
修改完配置文件之后,启动es
节点:
bin/elasticsearch -d
:warning:启动时可能报出如下错误:
Terminal window
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535][2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]解决方法:
Terminal window
sudo vim /etc/security/limits.conf# ----- 添加如下内容 ------* soft nofile 65536* hard nofile 65536* soft nproc 4096* hard nproc 4096# -------------------------# 可以使用 `ulimit -Hn` 命令进行查看sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p修改完毕之后,重新打开当前终端使其生效。
测试es
对外提供服务的HTTP
端口:
[root@es-01 ~]\# curl es-01:9200{ "name" : "es-01", "cluster_name" : "es-cluster", "cluster_uuid" : "B6--eo9YQC62LNyo0JiLIw", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "ad56dce891c901a492bb1ee393f12dfff473a423", "build_date" : "2020-05-28T16:30:01.040088Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"}
将配置文件复制到其他节点上去:
scp conf/elasticsearch.yml es-02:/usr/local/elasticsearch-7.7.1/confscp conf/elasticsearch.yml es-03:/usr/local/elasticsearch-7.7.1/conf
同样,在其他节点上,进行与之前相同的操作,唯一需要修改的就是其配置文件的node.name
:
vim config/elasticsearch.yml# --------- es-02 ---------node.name: es-02# --------- es-03 ---------node.name: es-03
最后,启动各节点的ES
服务:bin/elasticsearch -d
Logstash
logstash 同样依赖于JDK
环境,需要提前安装。
从官方站点下载 logstash 的压缩包,并解压到指定目录:
tar xf logstash-7.7.1-linux-x86_64.tar.gz -C /usr/localcd /usr/local/logstash-7.7.1
启动logstash
:
# 快速启动测试,标准输入输出作为input和outputbin/logstash -e 'input { stdin {} } output { stdout {} }'
* 常用启动参数说明:`-e`: 立即执行,使用命令行里的配置参数启动实例`-f`: 指定启动实例的配置文件`-t`: 测试配置文件的正确性`-l`: 指定日志文件名称`-w`: 指定filter线程数量,默认线程数是5
Kibana
从官方站点下载 Kibana 的压缩包,并解压到指定目录:
tar xf kibana-7.7.1-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local/kibana-7.7.1-linux-x86_64
启动kibana
,bin/kibana
其他
官方均提供有制作好的RPM
、DEB
和适用于Windows
下的二进制包,可以直接下载安装使用:
# 以redhat系为例yum localinstall -y kibana-7.7.1-x86_64.rpm
附:es 环境脚本
useradd esuserecho 123 | passwd --stdin esuser# 将 esuser 用户添加进无密码sudoersecho "esuser ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/eschmod 0440 /etc/sudoers.d/es# 为之后的es数据和日志创建目录mkdir /es/data -pvmkdir /es/logschown -R esuser:esuser /eschown -R esuser:esuser /usr/local/elasticsearch-7.7.1/# ------ 切换到 esuser 用户,下面的所有操作都使用 esuser 用户cat << EOF >> /etc/security/limits.conf* soft nofile 65536* hard nofile 65536* soft nproc 4096* hard nproc 4096EOF
sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -psu - esuser