如何在 CentOS 7 上安装 Elastic Stack如何在 CentOS 7 上安装 Elastic Stack如何在 CentOS 7 上安装 Elastic Stack如何在 CentOS 7 上安装 Elastic Stack
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上安装 Elastic Stack

本教程适用于这些操作系统版本

  • 中央操作系统 8
  • 中央操作系统 7

在此页

  1. 第 1 步 - 准备操作系统
  2. 第 2 步 - 安装 Java
  3. 第 3 步 - 安装和配置 Elasticsearch
  4. 第 4 步 - 使用 Nginx 安装和配置 Kibana
  5. 第 5 步 - 安装和配置 Logstash
  6. 第 6 步 - 在 CentOS 客户端上安装和配置 Filebeat
  7. 第 7 步 - 在 Ubuntu 客户端上安装和配置 Filebeat
  8. 第 8 步 - 测试 Elastic Stack
  9. 参考资料

Elasticsearch 是一个基于 Lucene 的开源搜索引擎,用 Java 开发。它通过 HTTP 仪表板 Web 界面 (Kibana) 提供分布式和多租户全文搜索引擎。使用 JSON 文档方案查询、检索和存储数据。 Elasticsearch 是一个可扩展的搜索引擎,可用于搜索各种文本文档,包括日志文件。 Elasticsearch 是 Elastic Stack 或 ELK Stack 的核心。

Logstash 是一个用于管理事件和日志的开源工具。它为数据收集提供实时流水线。 Logstash 会收集你的日志数据,将数据转换成 JSON 文档,存储在 Elasticsearch 中。

Kibana 是 Elasticsearch 的开源数据可视化工具。 Kibana 提供了一个漂亮的仪表板 Web 界面。它允许您管理和可视化来自 Elasticsearch 的数据。它不仅漂亮,而且功能强大。

在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监控服务器日志。然后我将向您展示如何在 CentOS 7 和 Ubuntu 16.04 客户端操作系统上安装 Elastic beats。

先决条件

  • CentOS 7 64 位,4GB RAM - elk-master
  • CentOS 7 64 位,1 GB RAM - client1
  • Ubuntu 16.04 64 位,1GB RAM - client2

第 1 步 - 准备操作系统

在本教程中,我们将在 CentOS 7 服务器上禁用 SELinux。编辑 SELinux 配置文件。

vim /etc/sysconfig/selinux

将 SELinux 值从强制更改为禁用。

SELINUX=disabled

然后重启服务器。

reboot

再次登录服务器,查看SELinux状态。

getenforce

确保结果被禁用。

第 2 步 - 安装 Java

Elastic stack 部署需要 Java。 Elasticsearch需要Java 8,推荐使用Oracle JDK 1.8。我将从官方 Oracle rpm 包安装 Java 8。

使用 wget 命令下载 Java 8 JDK。

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

然后使用此 rpm 命令安装它;

rpm -ivh jdk-8u77-linux-x64.rpm

最后,检查java JDK版本以确保其正常工作。

java -version

您将看到服务器的 Java 版本。

第 3 步 - 安装和配置 Elasticsearch

在此步骤中,我们将安装和配置 Elasticsearch。我将从 elastic.co 提供的 rpm 包安装 Elasticsearch,并将其配置为在本地主机上运行(以确保设置安全并确保无法从外部访问它)。

在安装 Elasticsearch 之前,将 elastic.co 密钥添加到服务器。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

接下来,使用 wget 下载 Elasticsearch 5.1,然后安装它。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

弹性搜索已安装。现在转到配置目录并编辑 elasticsaerch.yml 配置文件。

cd /etc/elasticsearch/
vim elasticsearch.yml

通过删除第 40 行的注释为 Elasticsearch 启用内存锁定。这将禁用 Elasticsearch 的内存交换。

bootstrap.memory_lock: true

在网络块中,取消注释 network.host 和 http.port 行。

network.host: localhost
http.port: 9200

保存文件并退出编辑器。

现在编辑内存锁配置的 elasticsearch.service 文件。

vim /usr/lib/systemd/system/elasticsearch.service

取消注释 LimitMEMLOCK 行。

LimitMEMLOCK=infinity

保存并退出。

编辑 Elasticsearch 的 sysconfig 配置文件。

vim /etc/sysconfig/elasticsearch

取消注释第 60 行并确保该值是无限制的。

MAX_LOCKED_MEMORY=unlimited

保存并退出。

Elasticsearch 配置完成。 Elasticsearch 将在端口 9200 上的本地主机 IP 地址上运行,我们通过在 CentOS 服务器上启用 mlockall 来禁用它的内存交换。

重新加载 systemd,让 Elasticsearch 在开机时启动,然后启动服务。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

等待 Eelasticsearch 启动,然后检查服务器上打开的端口,确保端口 9200 的状态为 LISTEN。

netstat -plntu

然后检查内存锁以确保 mlockall 已启用,并使用以下命令检查 Elasticsearch 是否正在运行。

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

您将看到下面的结果。

第 4 步 - 使用 Nginx 安装和配置 Kibana

在此步骤中,我们将使用 Nginx Web 服务器安装和配置 Kibana。 Kibana 将监听本地主机 IP 地址,Nginx 充当 Kibana 应用程序的反向代理。

使用 wget 下载 Kibana 5.1,然后使用 rpm 命令安装它:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

现在编辑 Kibana 配置文件。

vim /etc/kibana/kibana.yml

取消注释 server.port、server.host 和 elasticsearch.url 的配置行。

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

保存并退出。

添加 Kibana 以在启动时运行并启动它。

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana 将作为节点应用程序在端口 5601 上运行。

netstat -plntu

Kibana 安装完成。现在我们需要安装 Nginx 并将其配置为反向代理,以便能够从公共 IP 地址访问 Kibana。

Nginx 在 Epel 存储库中可用,使用 yum 安装 epel-release。

yum -y install epel-release

接下来,安装 Nginx 和 httpd-tools 包。

yum -y install nginx httpd-tools

httpd-tools 包包含用于 Web 服务器的工具,我们将使用 htpasswd 基本身份验证用于 Kibana。

编辑 Nginx 配置文件并删除 server { } 块,这样我们就可以添加新的虚拟主机配置。

cd /etc/nginx/
vim nginx.conf

删除服务器 { } 块。

保存文件并退出 vim。

现在我们需要在conf.d目录下新建一个虚拟主机配置文件。使用 vim 创建新文件 kibana.conf。

vim /etc/nginx/conf.d/kibana.conf

粘贴下面的配置。

server {
    listen 80;

    server_name elk-stack.co;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

保存并退出。

然后使用 htpasswd 命令创建一个新的基本身份验证文件。

sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD

测试 Nginx 配置并确保没有错误。然后添加Nginx在开机时运行并启动Nginx。

nginx -t
systemctl enable nginx
systemctl start nginx

第 5 步 - 安装和配置 Logstash

在此步骤中,我们将安装 Logsatash 并将其配置为使用 filebeat 集中来自客户端的服务器日志,然后过滤和转换 Syslog 数据并将其移动到存储 (Elasticsearch) 中。

下载 Logstash 并使用 rpm 安装它。

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

生成新的SSL证书文件,以便客户端可以识别弹性服务器。

转到 tls 目录并编辑 openssl.cnf 文件。

cd /etc/pki/tls
vim openssl.cnf

在服务器标识的 [ v3_ca ] 部分添加一个新行。

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 10.0.15.10

保存并退出。

使用 openssl 命令生成证书文件。

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

证书文件可以在 /etc/pki/tls/certs/ 和 /etc/pki/tls/private/ 目录中找到。

接下来,我们将为 Logstash 创建新的配置文件。我们将创建一个新的 filebeat-input.conf 文件来配置 filebeat 的日志源,然后创建一个用于 syslog 处理的 syslog-filter.conf 文件和一个用于定义 Elasticsearch 输出的 output-elasticsearch.conf 文件。

转到 logstash 配置目录并在 conf.d 子目录中创建新的配置文件。

cd /etc/logstash/
vim conf.d/filebeat-input.conf

输入配置:粘贴下面的配置。

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

保存并退出。

创建 syslog-filter.conf 文件。

vim conf.d/syslog-filter.conf

粘贴下面的配置。

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

我们使用名为 grok 的过滤器插件来解析系统日志文件。

保存并退出。

创建输出配置文件 output-elasticsearch.conf。

vim conf.d/output-elasticsearch.conf

粘贴下面的配置。

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

保存并退出。

最后添加logstash在开机时启动并启动服务。

sudo systemctl enable logstash
sudo systemctl start logstash

第 6 步 - 在 CentOS 客户端上安装和配置 Filebeat

Beats 是数据传送器,可以安装在客户端节点上的轻量级代理,用于将大量数据从客户端计算机发送到 Logstash 或 Elasticsearch 服务器。有 4 个节拍可用,用于日志文件的 Filebeat、用于度量的 Metricbeat、用于网络数据的 Packetbeat 和用于 Windows 客户端事件日志的 Winlogbeat。

在本教程中,我将向您展示如何安装和配置 Filebeat,以通过 SSL 连接将数据日志文件传输到 Logstash 服务器。

登录到 client1 服务器。然后将证书文件从elastic服务器复制到client1服务器。

ssh 

使用 scp 命令复制证书文件。

scp :~/logstash-forwarder.crt .
TYPE elk-server password

创建一个新目录并将证书文件移动到该目录。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

接下来,在 client1 服务器上导入弹性密钥。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

下载 Filebeat 并使用 rpm 安装它。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat 已安装,进入配置目录并编辑文件 filebeat.yml。

cd /etc/filebeat/
vim filebeat.yml

在第 21 行的路径部分中,添加新的日志文件。我们将为 ssh 活动添加两个文件 /var/log/secure,为服务器日志添加 /var/log/messages。

  paths:
    - /var/log/secure
    - /var/log/messages

在第 26 行添加新配置以定义 syslog 类型文件。

  document-type: syslog

Filebeat 默认使用 Elasticsearch 作为输出目标。在本教程中,我们将其更改为 Logshtash。通过在第 83 和 85 行添加注释来禁用 Elasticsearch 输出。

禁用弹性搜索输出。

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

现在添加新的 logstash 输出配置。取消注释 logstash 输出配置并将所有值更改为如下所示的配置。

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存文件并退出 vim。

添加 Filebeat 以在开机时启动并启动它。

sudo systemctl enable filebeat
sudo systemctl start filebeat

第 7 步 - 在 Ubuntu 客户端上安装和配置 Filebeat

通过 ssh 连接到服务器。

ssh 

使用 scp 命令将证书文件复制到客户端。

scp :~/logstash-forwarder.crt .

为证书文件创建一个新目录并将文件移动到该目录。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

将弹性密钥添加到服务器。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

下载 Filebeat .deb 包并使用 dpkg 命令安装它。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

进入filebeat配置目录,用vim编辑文件filebeat.yml。

cd /etc/filebeat/
vim filebeat.yml

在路径配置部分添加新的日志文件路径。

  paths:
    - /var/log/auth.log
    - /var/log/syslog

将文档类型设置为 syslog。

  document-type: syslog

通过向下面显示的行添加注释来禁用 elasticsearch 输出。

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

启用 logstash 输出,取消注释配置并更改值,如下所示。

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存文件并退出 vim。

添加 Filebeat 以在开机时启动并启动它。

sudo systemctl enable filebeat
sudo systemctl start filebeat

检查服务状态。

systemctl status filebeat

第 8 步 - 测试 Elastic Stack

打开您的网络浏览器并访问您在 Nginx 配置中使用的弹性堆栈域,我的是 elk-stack.co。使用您的密码以管理员用户身份登录,然后按 Enter 键登录到 Kibana 仪表板。

创建一个新的默认索引 filebeat-* 并单击“创建”按钮。

默认索引已创建。如果弹性堆栈上有多个节拍,只需单击星形按钮即可配置默认节拍。

转到 Discover 菜单,您将看到来自 elk-client1 和 elk-client2 服务器的所有日志文件。

elk-client1 服务器日志中针对无效 ssh 登录的 JSON 输出示例。

使用 Kibana 仪表板可以做的远不止这些,只需使用可用选项即可。

Elastic Stack 已安装在 CentOS 7 服务器上。 Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。

参考

  • https://www.elastic.co/guide/index.html

©2015-2025 艾丽卡 support@alaica.com