首页
学习
活动
专区
工具
TVP
发布

在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.html
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
# ---------------------------------- Network -----------------------------------
# 网络配置,默认是127.0.0.1的回环地址,修改成要暴露的ip或者直接0.0.0.0
network.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.178
transport.tcp.port: 9300

#节点2和其他节点
# ---------------------------------- Cluster -----------------------------------
cluster.name: magicloud-cluster
# ------------------------------------ Node ------------------------------------
node.name: es-node2
node.master: true
node.data: true
# ----------------------------------- Paths ------------------------------------
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0
http.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: true
transport.host: 10.185.1.178
transport.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用户,区分标志就是看命令输入行是$符号还是#符号,#就是root
chown -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 的基本配置就完成了。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/809dd91a0ec9d6e23c3db67dc
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券