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

加载更多搜索结果...

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

如何在 Ubuntu 16.04 上安装 Elastic Stack

Elasticsearch是一个基于Lucene的开源搜索引擎,用java开发。它提供了一个分布式和多租户的全文搜索引擎,带有 HTTP 仪表板 Web 界面 (Kibana) 和 JSON 文档方案。 Elasticsearch 是一个可扩展的搜索引擎,可用于搜索所有类型的文档,包括日志文件。 Elasticsearch 是 Elastic Stack 或 ELK Stack 的核心。

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

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

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

先决条件

  • Ubuntu 16.04 64 位服务器,4GB 内存,主机名 - elk-master
  • Ubuntu 16.04 64 位客户端,1 GB 内存,主机名 - elk-client1
  • CentOS 7 64 位客户端,1GB 内存,主机名 - elk-client2

第 1 步 - 安装 Java

Elastic stack 部署需要 Java。 Elasticsearch需要Java 8。推荐使用Oracle JDK 1.8。我们将从 PPA 存储库安装 Java 8。

安装新包 python-software-properties 以便我们可以使用 apt 命令轻松添加新存储库。

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https

使用 add-apt-repository 命令添加新的 Java 8 PPA 存储库,然后更新存储库。

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

从 PPA webpub8 存储库安装 Java 8。

sudo apt-get install -y oracle-java8-installer

安装完成后,通过检查 Java 版本确保 Java 已正确安装在系统上。

java -version

第 2 步 - 安装和配置 Elasticsearch

在此步骤中,我们将安装和配置 Elasticsearch。从弹性存储库安装 Elasticsearch 并将其配置为在本地主机 IP 上运行。

在安装 Elasticsearch 之前,将弹性存储库密钥添加到服务器。

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

将弹性 5.x 存储库添加到 sources.list.d 目录。

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

使用下面的 apt 命令更新存储库并安装 Elasticsearch 5.1。

sudo apt-get update
sudo apt-get install -y elasticsearch

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

cd /etc/elasticsearch/
vim elasticsearch.yml

通过删除第 43 行的注释为 Elasticsearch 启用内存锁定。我们这样做是为了禁用 Elasticsearch 的内存交换以避免服务器过载。

bootstrap.memory_lock: true

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

network.host: localhost
http.port: 9200

保存文件并退出 vim。

现在编辑内存锁 mlockall 配置的 elasticsearch 服务文件。

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

取消注释 LimitMEMLOCK 行。

LimitMEMLOCK=infinity

保存文件并退出。

在 /etc/default 目录中编辑 Elasticsearch 的默认配置。

vim /etc/default/elasticsearch

取消注释第 60 行并确保该值不受限制。

MAX_LOCKED_MEMORY=unlimited

保存并退出。

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

重新加载 Elasticsearch 服务文件并使其在开机时运行,然后启动服务。

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

等待 Elasticsearch 运行,然后检查服务器上的开放端口,确保端口 9200 的状态为 LISTEN。

netstat -plntu

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

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

您将看到下面的结果。

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

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

使用此 apt 命令安装 Kibana:

sudo apt-get install -y kibana

现在编辑 kibana.yml 配置文件。

vim /etc/kibana/kibana.yml

取消注释 server.port、server.hos 和 elasticsearch.url 行。

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

保存文件并退出 vim。

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

sudo systemctl enable kibana
sudo systemctl start kibana

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

netstat -plntu

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

接下来,安装 Nginx 和 apache2-utils 包。

sudo apt-get install -y nginx apache2-utils

Apache2-utils 是一个包,其中包含用于与 Nginx 一起工作的网络服务器的工具,我们将使用 htpasswd 基本身份验证来进行 Kibana。

Nginx 已安装。现在我们需要在 Nginx 站点可用目录中创建一个新的虚拟主机配置文件。使用 vim 创建一个新文件 kibana。

cd /etc/nginx/
vim sites-available/kibana

下面粘贴配置。

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;
    }
}

保存文件并退出 vim

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

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

通过创建从 sites-available 中的 kibana 文件到 sites-enabled 目录的符号链接来激活 kibana 虚拟主机。

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

测试 nginx 配置并确保没有错误,然后添加 nginx 以在启动时运行并重新启动 nginx。

nginx -t
systemctl enable nginx
systemctl restart nginx

第 4 步 - 安装和配置 Logstash

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

使用下面的 apt 命令安装 Logstash 5。

sudo apt-get install -y logstash

使用 vim 编辑主机文件。

vim /etc/hosts

添加服务器 IP 地址和主机名。

10.0.15.10    elk-master

保存主机文件并退出编辑器。

现在使用 OpenSSL 生成一个新的 SSL 证书文件,以便客户端源可以识别弹性服务器。

cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

将 /CN 值更改为弹性服务器主机名。

证书文件将在 /etc/logstash/ 目录中创建。

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

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

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

输入配置,在下面粘贴配置。

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/logstash.crt"
    ssl_key => "/etc/logstash/logstash.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

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

使用 ssh 帐户以 root 身份连接到服务器。

ssh 

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

scp :/etc/logstash/logstash.crt .

编辑主机文件并添加 elk-master IP 地址。

vim /etc/hosts

在文件末尾添加以下配置。

10.0.15.10    elk-master

保存并退出。

现在我们需要将弹性密钥添加到 elk-client1 服务器。

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

我们将使用带有 https 下载传输的弹性存储库,因此我们需要将软件包 apt-transport-https 安装到服务器。

sudo apt-get install -y apt-transport-https

添加弹性存储库并更新所有 Ubuntu 存储库。

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

现在使用 apt 命令安装 filebeat。

sudo apt-get install -y filebeat

接下来,进入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: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存并退出。

将证书文件移动到 filebeat 目录。

mv ~/logstash.crt /etc/filebeat/

启动 filebeat 并将其添加为在启动时运行。

sudo systemctl start filebeat
sudo systemctl enable filebeat

检查服务状态。

sudo systemctl status filebeat

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

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

在本教程中,我将向您展示如何安装和配置 Filebeat,以通过安全的 SSL 连接将日志数据发送到 logstash 服务器。

将证书文件从弹性服务器复制到 client1 服务器。登录到 client1 服务器。

ssh 

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

scp :/etc/logstash/logstash.crt .
TYPE elk-server password

编辑hosts文件,添加elk-master服务器地址。

vim /etc/hosts

添加 elk-master 服务器地址。

10.0.15.10    elk-master

保存并退出。

接下来,将弹性密钥导入elk-client2 服务器。

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

将弹性存储库添加到服务器。

cd /etc/yum.repos.d/
vim elastic.repo

粘贴下面的配置。

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

保存并退出。

使用这个 yum 命令安装 filebeat。

sudo yum -y install filebeat

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: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存并退出。

添加filebeat在开机时启动并启动它。

sudo systemctl enable filebeat
sudo systemctl start filebeat

现在您可以检查并观察 filebeat 日志文件以确保其正常运行。

tail -f /var/log/filebeat/filebeat

第 8 步 - 测试

打开您的网络浏览器并访问您在 nginx 配置中配置的弹性堆栈域,我的是 elk-stack.co,输入管理员用户名和密码,然后按 Enter 登录 Kibana 仪表板。

创建一个新的默认索引 filebeat-* 并点击创建。

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

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

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

您还可以使用 Kibana 仪表板做更多事情,快来试试吧!

Elastic Stack 已安装在 Ubuntu 16.04 服务器上,filebeat 已安装在 Ubuntu 和 CentOS 客户端服务器上。

参考

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