写点什么

在 Linux 系统发行版(以 CentOS7 为例)上部署 ElasticSearch 集群并启动 Kibana 和 Logstash

作者:为自己带盐
  • 2021 年 12 月 03 日
  • 本文字数:3886 字

    阅读完需:约 13 分钟

在Linux系统发行版(以CentOS7为例)上部署ElasticSearch集群并启动Kibana和Logstash

之前分别写过关于使用 ES 来做日志统一管理,以及在 CentOS 上部署 Redis 哨兵集群的博客,今儿的话题还是要围绕他们,这次是 CentOS 和 ELK 的交集。

之前我们的 ES 日志集群是在 Windows 系统下运行的,这两天上头给批了两台 CentOS 的主机,就把日志的集群迁移到了 CentOS 服务器上。迁移的过程总体还是比较顺利,但过程中还是遇到了一些问题,或者说我个人感觉应该要记录一下的东西,在这里简单总结一下。

一、Elasticsearch 版本选择

官方的建议是,选择最新的版本~,这其实也是我在选择开源组件的基本原则,大多数情况下,越新的产品,性能,功能完整性也会越好,尤其是 ES 这种级别的软件。但因为我是从 Windows 服务器上迁移过来,所以我选择了和之前 Windows 一致的版本,7.14.1(当前最新的是 7.15.1)。

这里需要提一句的是,如果是 es 的老用户,都应该清楚,es 在发布产品的时候,都是捆绑发布的,不如 es 发布了 7.14.1,对应的 kibana,logstash,beats 等等,也会有相同的版本跟着发布,所以如果 es 选了 7.14.1,用其余产品的时候,也要选同样的版本!

二、下载安装

官方的下载提供了很多种类型,比如为 Windows 提供了 msi,为 linux 提供了 deb,rpm 等,还有压缩包的类型。

这里我个人建议是统一用压缩包的类型,因为可能会涉及到迁移或者集群部署,用压缩包的形式,解压后可以很方便的修改配置文件,对文件目录授权,以及设定服务启动方式等。

官方的下载指导页如下:https://www.elastic.co/cn/downloads/elasticsearch

对应的 Kibana,logstash 就是把链接最后的内容改成对应的名字即可

压缩包下载后,对应安装即可,我这里是建立了一个上层目录,然后把 es,kibana 和 logstash 都分别安装到了里面,方便管理。


三、配置集群

3.1 ElastercSearch 配置

这里先给出官方的配置指导页:https://www.elastic.co/guide/en/elasticsearch/reference/7.14/settings.html,我这个是 7.14,如果你用别的版本,就把链接里的版本号改一下就好。

官方指导里,分别给出了源于 elasticsearch.yml,jvm.options,log4j2.propertites 三给关键配置文件的配置说明。我这里只用到了第一个,官方指导了也提到了,对于后两项,分别是调整 Java 虚拟机和日志的选项,一般情况下不需要修改,按默认配置即可。如果是二般情况,就再根据说明按需调整。

# 节点1# ---------------------------------- Cluster -----------------------------------# 集群名字,每个集群内的节点应该保持一致cluster.name: magicloud-cluster# ------------------------------------ Node ------------------------------------# 节点名称node.name: es-node1# 是否可以被选举为主节点node.master: true# 是否为数据节点(存储空间足够的情况下,我个人建议把每个节点都设定成可存储数据的节点,这样会最大限度保证数据分片不会丢失)node.data: true# ----------------------------------- Paths ------------------------------------# 数据和日志存放地址,根据官方建议,在生产环境下,这里把数据放到了$ES_HOME之外的位置。# https://www.elastic.co/guide/en/elasticsearch/reference/7.14/important-settings.htmlpath.data: /usr/local/elasticsearch/datapath.logs: /usr/local/elasticsearch/logs# ---------------------------------- Network -----------------------------------# 网络配置,默认是127.0.0.1的回环地址,修改成要暴露的ip或者直接0.0.0.0network.host: 0.0.0.0# 端口,默认9200,个人不建议修改,不为别的,主要是其他开发或者运维人员一看到9200就知道es在跑着,辨识度较高http.port: 9200# --------------------------------- Discovery ----------------------------------# 集群发现,发现集群内的其他节点,把集群内的节点地址写在这里,官方说也可以写节点名字,但我试了名字不好使,没细研究~~discovery.seed_hosts: ["10.185.1.176:9300", "10.185.1.178:9300", "10.185.1.75:9301"]# 初始的主节点,也可以不设置cluster.initial_master_nodes: ["es-node1"]# ---------------------------------- Various -----------------------------------# 为了防止误删除,禁止使用通配符或_all删除索引action.destructive_requires_name: true# 节点的通信地址,也就是discovery里配置的节点ip和port,建议host就是本机ip,port就是9300,也是辨识度较高transport.host: 10.185.1.178transport.tcp.port: 9300
复制代码


#节点2和其他节点# ---------------------------------- Cluster -----------------------------------cluster.name: magicloud-cluster# ------------------------------------ Node ------------------------------------node.name: es-node2node.master: truenode.data: true# ----------------------------------- Paths ------------------------------------path.data: /usr/local/elasticsearch/datapath.logs: /usr/local/elasticsearch/logs# ---------------------------------- Network -----------------------------------network.host: 0.0.0.0http.port: 9200# --------------------------------- Discovery ----------------------------------discovery.seed_hosts: ["10.185.1.176:9300", "10.185.1.178:9300", "10.185.1.75:9301"]# ---------------------------------- Various -----------------------------------action.destructive_requires_name: truetransport.host: 10.185.1.178transport.tcp.port: 9300
复制代码

配置文件的关键配置就是这些,关于 es 的配置,还有几个关键的点

1.修改 /etc/security/limits.conf,在配置文件最下面添加

* soft nofile 65535* hard nofile 65535
复制代码

否则启动 es 的时候会报错,其实按报错的提示修改即可。

错误大概是这样 max number of threads [2048] for user [elasticsearch] is too low, increase to at least [4096]

2.在 es 7.x 的版本,不可以通过 root 用户启动 es,这个可以强制修改,但还是按官方的建议来比较好,操作也比较简单

groupadd elsearch #1.添加新的管理组useradd -m -g elsearch elsearch- #2.添加新管理组下的用户passwd elsearch #3.回车后输入密码chown -R elsearch:elsearch /opt/es/elasticsearch7.14.1/ #4.给elsearch用户授予es根目录的管理权限chown -R elsearch:elsearch /usr/local/elasticsearch/data/ #5.给elsearch用户授予es的存储数据目录的管理权限chown -R elsearch:elsearch /usr/local/elasticsearch/logs/ #6.给elsearch用户授予es的存储日志目录的管理权限
复制代码

授权完成后,就可以以 elsearch 用户分别启动 es 集群了

su elsearch #1.切换到elsearch用户bin/elsticsearch -d #2.后台启动es
复制代码

分别启动各个 es 节点后,可以在当前终端查看相应进程,也可以通过 es 的心跳接口查看, 或者通过 head 或者其他 es 管理客户端来查看运行情况,





至此,es 的配置就基本完成了.

3.2 Kibana 配置

配置好 es 集群和,Kibana 的配置就十分简单了,官方配置地址:https://www.elastic.co/guide/en/kibana/7.14/index.html

server.port: 5601 #端口号,建议保持5601的默认配置,依旧是为了高辨识度server.host: "10.185.1.178" #要暴露的ip地址server.publicBaseUrl: "http://10.185.1.178:5601" #默认访问地址,如果挂了域名指向,这里可以写域名地址elasticsearch.hosts: ["http://10.185.1.178:9200"] #es集群地址,我这暂时就写了一个i18n.locale: "zh-CN" #kibana的默认语言配置,默认是英文,我这里改成了中文,英文好的同学可以忽略
复制代码

7.x 版本的 es 同样是不建议使用 root 用户启动,所以还是按照给 es 目录授权的步骤,给 Kibana 目录也进行一下普通用户的授权

su root #1.如果当前不是root用户,就先切回到root用户,区分标志就是看命令输入行是$符号还是#符号,#就是rootchown -R elsearch:elsearch /opt/es/kibana/ #2.给elsearch用户授权管理kibana目录su elsearch #3.切换用户nohup /opt/es/kibana/bin/kibana & #4.后台启动kibana
复制代码

启动后,就可以在本地浏览器打开 kibana 管理界面了


3.3 Logstash 配置

logstash 主要是做数据传输管道的,这个没有用户限制,配置也是按需进行,比如我们的业务是用 logstash 来传输日志到 es 进行集中管理。所以我的配置文件就长这样

input {  redis {        codec => plain        host => "10.185.1.176"        port => 6379        password => "不给看,按需配置"        data_type => list        key => "eslog"        db => 7  }}
filter { # grok是logstash自带的数据解析插件,我这里用的是正则匹配,注意这里配置好的格式,要和代码里传输日志内容的格式一致 grok { match=>{"message"=>"%{DATA:system} %{DATA:level} %{DATA:time} %{DATA:user} %{DATA:method} %{DATA:path} \"%{DATA:param}\" %{DATA:ip} %{DATA:webbrower} \"%{DATA:remark}\"" } remove_field => ["message"] } geoip { source => "ip" #启用自带的geoip插件,定位ip地址,按需启用,不用就去掉 }}
output { elasticsearch { hosts => ["http://10.185.1.176:9200"] index => "cloudlog-%{+YYYY.MM.dd}" }}
复制代码

这个就不多说了,之前写过一篇相关的同步的内容:https://www.tonydf.top/2021/08/17/%E6%97%A5%E5%BF%97%E5%BD%92%E4%B8%80%E7%AE%A1%E7%90%86%E7%9A%84%E4%B8%80%E7%A7%8D%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

配置好后,启动 logstash 即可。

至此,在 CentOS7 环境下 elk 的基本配置就完成了。

发布于: 2021 年 12 月 03 日阅读数: 21
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
在Linux系统发行版(以CentOS7为例)上部署ElasticSearch集群并启动Kibana和Logstash