如何在 CentOS 7 上安装 Elastic Stack
Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎。它提供了一个分布式、多租户的全文搜索引擎(LCTT 译注:多租户是指多租户技术,是一种软件架构技术,用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。),并带有 HTTP 仪表盘的 Web 界面(Kibana)。数据会被 Elasticsearch 查询、检索,并且使用 JSON 文档方案存储。Elasticsearch 是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。Elasticsearch 是 Elastic Stack 的核心,Elastic Stack 也被称为 ELK Stack。
Logstash 是用于管理事件和日志的开源工具。它为数据收集提供实时传递途径。 Logstash 将收集您的日志数据,将数据转换为 JSON 文档,并将其存储在 Elasticsearch 中。
Kibana 是 Elasticsearch 的开源数据可视化工具。Kibana 提供了一个漂亮的仪表盘 Web 界面。 你可以用它来管理和可视化来自 Elasticsearch 的数据。 它不仅美丽,而且强大。
在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。 然后,我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装 “Elastic beats”。
前提条件
- 64 位的 CentOS 7,4 GB 内存 - elk 主控机
- 64 位的 CentOS 7 ,1 GB 内存 - 客户端 1
- 64 位的 Ubuntu 16 ,1 GB 内存 - 客户端 2
步骤 1 - 准备操作系统
在本教程中,我们将禁用 CentOS 7 服务器上的 SELinux。 编辑 SELinux 配置文件。
1 |
|
将 SELINUX
的值从 enforcing
改成 disabled
。
1 |
|
然后重启服务器:
1 |
|
再次登录服务器并检查 SELinux 状态。
1 |
|
确保结果是 disabled
。
步骤 2 - 安装 Java
部署 Elastic stack 依赖于Java,Elasticsearch 需要 Java 8 版本,推荐使用 Oracle JDK 1.8 。我将从官方的 Oracle rpm 包安装 Java 8。
使用 wget
命令下载 Java 8 的 JDK。
1 |
|
然后使用 rpm
命令安装:
1 |
|
最后,检查 java JDK 版本,确保它正常工作。
1 |
|
您将看到服务器的 Java 版本。
步骤 3 - 安装和配置 Elasticsearch
在此步骤中,我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch,并将其配置运行在 localhost 上(以确保该程序安全,而且不能从外部访问)。
在安装 Elasticsearch 之前,将 elastic.co 的密钥添加到服务器。
1 |
|
接下来,使用 wget
下载 Elasticsearch 5.1,然后安装它。
1 |
|
Elasticsearch 已经安装好了。 现在进入配置目录编辑 elasticsaerch.yml
配置文件。
1 |
|
去掉第 40 行的注释,启用 Elasticsearch 的内存锁。这将禁用 Elasticsearch 的内存交换。
1 |
|
在 Network
块中,取消注释 network.host
和 http.port
行。
1 |
|
保存文件并退出编辑器。
现在编辑 elasticsearch.service
文件的内存锁配置。
1 |
|
去掉第 60 行的注释,确保该值为 unlimited
。
1 |
|
保存并退出。
Elasticsearch 配置到此结束。Elasticsearch 将在本机的 9200 端口运行,我们通过在 CentOS 服务器上启用 mlockall
来禁用内存交换。重新加载 systemd,将 Elasticsearch 置为开机启动,然后启动服务。
1 |
|
等待 Eelasticsearch 启动成功,然后检查服务器上打开的端口,确保 9200 端口的状态是 LISTEN
。
1 |
|
然后检查内存锁以确保启用 mlockall
,并使用以下命令检查 Elasticsearch 是否正在运行。
1 |
|
会看到如下结果。
步骤 4 - 安装和配置 Kibana 和 Nginx
在这一步,我们将在 Nginx Web 服务器上安装并配置 Kibana。 Kibana 监听在 localhost 上,而 Nginx 作为 Kibana 的反向代理。
用 wget
下载 Kibana 5.1,然后使用 rpm
命令安装:
1 |
|
编辑 Kibana 配置文件。
1 |
|
去掉配置文件中 server.port
、server.host
和 elasticsearch.url
这三行的注释。
1 |
|
保存并退出。
将 Kibana 设为开机启动,并且启动 Kibana 。
1 |
|
Kibana 将作为 node 应用程序运行在端口 5601 上。
1 |
|
Kibana 安装到此结束。 现在我们需要安装 Nginx 并将其配置为反向代理,以便能够从公共 IP 地址访问 Kibana。
Nginx 在 Epel 资源库中可以找到,用 yum
安装 epel-release。
1 |
|
然后安装 Nginx 和 httpd-tools 这两个包。
1 |
|
httpd-tools 软件包包含 Web 服务器的工具,可以为 Kibana 添加 htpasswd 基础认证。
编辑 Nginx 配置文件并删除 server {}
块,这样我们可以添加一个新的虚拟主机配置。
1 |
|
删除 server { }
块。
保存并退出。
现在我们需要在 conf.d
目录中创建一个新的虚拟主机配置文件。 用 vim
创建新文件 kibana.conf
。
1 |
|
复制下面的配置。
1 |
|
保存并退出。
然后使用 htpasswd
命令创建一个新的基本认证文件。
1 |
|
测试 Nginx 配置,确保没有错误。 然后设定 Nginx 开机启动并启动 Nginx。
1 |
|
步骤 5 - 安装和配置 Logstash
在此步骤中,我们将安装 Logstash,并将其配置为:从配置了 filebeat 的 logstash 客户端里集中化服务器的日志,然后过滤和转换 Syslog 数据,并将其移动到存储中心(Elasticsearch)中。
下载 Logstash 并使用 rpm 进行安装。
1 |
|
生成新的 SSL 证书文件,以便客户端可以识别 elastic 服务端。
进入 tls
目录并编辑 openssl.cnf
文件。
1 |
|
在 [v3_ca]
部分添加服务器标识。
1 |
|
保存并退出。
使用 openssl
命令生成证书文件。
1 |
|
证书文件可以在 /etc/pki/tls/certs/
和 /etc/pki/tls/private/
目录中找到。
接下来,我们会为 Logstash 创建新的配置文件。创建一个新的 filebeat-input.conf
文件来为 filebeat 配置日志源,然后创建一个 syslog-filter.conf
配置文件来处理 syslog,再创建一个 output-elasticsearch.conf
文件来定义输出日志数据到 Elasticsearch。
转到 logstash 配置目录,并在 conf.d
子目录中创建新的配置文件。
1 |
|
输入配置,粘贴以下配置:
1 |
|
保存并退出。
创建 syslog-filter.conf
文件。
1 |
|
粘贴以下配置:
1 |
|
我们使用名为 grok
的过滤器插件来解析 syslog 文件。
保存并退出。
创建输出配置文件 output-elasticsearch.conf
。
1 |
|
粘贴以下配置:
1 |
|
保存并退出。
最后,将 logstash 设定为开机启动并且启动服务。
1 |
|
步骤 6 - 在 CentOS 客户端上安装并配置 Filebeat
Beat 作为数据发送人的角色,是一种可以安装在客户端节点上的轻量级代理,将大量数据从客户机发送到 Logstash 或 Elasticsearch 服务器。有 4 种 beat,Filebeat
用于发送“日志文件”,Metricbeat
用于发送“指标”,Packetbeat
用于发送“网络数据”,Winlogbeat
用于发送 Windows 客户端的“事件日志”。
在本教程中,我将向您展示如何安装和配置 Filebeat
,通过 SSL 连接将数据日志文件传输到 Logstash 服务器。
登录到客户端1的服务器上。 然后将证书文件从 elastic 服务器复制到客户端1的服务器上。
1 |
|
使用 scp
命令拷贝证书文件。
1 |
|
创建一个新的目录,将证书移动到这个目录中。
1 |
|
接下来,在客户端 1 服务器上导入 elastic 密钥。
1 |
|
下载 Filebeat 并且用 rpm
命令安装。
1 |
|
Filebeat 已经安装好了,请转到配置目录并编辑 filebeat.yml
文件。
1 |
|
在第 21 行的路径部分,添加新的日志文件。 我们将创建两个文件,记录 ssh 活动的 /var/log/secure
文件 ,以及服务器日志 /var/log/messages
。
1 |
|
在第 26 行添加一个新配置来定义 syslog 类型的文件。
1 |
|
Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。 在 83 行和 85 行添加注释来禁用 Elasticsearch 输出。
禁用 Elasticsearch 输出:
1 |
|
现在添加新的 logstash 输出配置。 去掉 logstash 输出配置的注释,并将所有值更改为下面配置中的值。
1 |
|
保存文件并退出 vim。
将 Filebeat 设定为开机启动并启动。
1 |
|
步骤 7 - 在 Ubuntu 客户端上安装并配置 Filebeat
使用 ssh
连接到服务器。
1 |
|
使用 scp
命令拷贝证书文件。
1 |
|
创建一个新的目录,将证书移动到这个目录中。
1 |
|
在服务器上导入 elastic 密钥。
1 |
|
下载 Filebeat .deb 包并且使用 dpkg
命令进行安装。
1 |
|
转到配置目录并编辑 filebeat.yml
文件。
1 |
|
在路径配置部分添加新的日志文件路径。
1 |
|
设定文档类型为 syslog
。
1 |
|
将下列几行注释掉,禁用输出到 Elasticsearch。
1 |
|
启用 logstash 输出,去掉以下配置的注释并且按照如下所示更改值。
1 |
|
保存并退出 vim。
将 Filebeat 设定为开机启动并启动。
1 |
|
检查服务状态:
1 |
|
步骤 8 - 测试
打开您的网络浏览器,并访问您在 Nginx 中配置的 elastic stack 域名,我的是“elk-stack.co”。 使用管理员密码登录,然后按 Enter 键登录 Kibana 仪表盘。
创建一个新的默认索引 filebeat-*
,然后点击“创建”按钮。
默认索引已创建。 如果 elastic stack 上有多个 beat,您可以在“星形”按钮上点击一下即可配置默认 beat。
转到 “发现” 菜单,您就可以看到 elk-client1 和 elk-client2 服务器上的所有日志文件。
来自 elk-client1 服务器日志中的无效 ssh 登录的 JSON 输出示例。
使用其他的选项,你可以使用 Kibana 仪表盘做更多的事情。
Elastic Stack 已安装在 CentOS 7 服务器上。 Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。
via: https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/
作者:Muhammad Arul 译者:Flowsnow 校对:wxy