如何在Ubuntu 18.04 LTS上安装Elastic Stack

在本教程中,我将向您展示如何在Ubuntu 18.04服务器上安装和配置Elastic Stack以监控服务器日志。然后我会表现出来......

如何在Ubuntu 18.04 LTS上安装Elastic Stack

Elasticsearch是一个基于Lucene的开源搜索引擎,采用Java开发。 它提供了一个带有HTTP Dashboard Web界面(Kibana)的分布式多租户全文搜索引擎。 数据被查询,检索并存储在JSON文档方案中。 Elasticsearch是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。 Elasticsearch是'Elastic Stack'或ELK Stack的核心。

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

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

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

先决条件

  • 3台服务器
    • Ubuntu 18.04,4GB Ram /内存为'elk-master' - 10.0.15.10
    • Ubuntu 18.04,512MB / 1GB Ram / Memory作为'elk-client01' - 10.0.15.21
    • CentOS 7.5与512MB / 1GB Ram / Memory作为'elk-client02' - 10.0.15.22
  • Root权限

我们将要做什么?

  1. 安装弹性
    1. 安装Java
    2. 安装和配置ElasticSearch
    3. 安装和配置Kibana
    4. 安装和配置Nginx作为Kibana的反向代理
    5. 安装和配置Logstash
  2. 在Ubuntu 18.04上安装和配置Filebeat
  3. 在CentOS 7.5上安装和配置Filebeat
  4. 测试

第1步 - 安装弹性

在第一步中,我们将在'elk-master'服务器上安装和配置'Elastic Stack',因此仅在'elk-master'服务器上运行此步骤的所有命令和阶段。 我们将安装和配置弹性的每个组件,包括Elasticsearch,Logstashshippers和带有Nginx Web服务器的Kibana仪表板。

安装Java

Elastic部署需要Java。 Elasticsearch需要Java 8.建议使用Oracle JDK 1.8,我们将从PPA存储库安装Java 8。

安装'software-properties-common'和'apt-transport-https'软件包,然后添加PPA'webupd8team'Java存储库。 运行下面的'apt install'和'add-apt-repository'命令。

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -y

现在安装java8-installer。

sudo apt install oracle-java8-installer -y

安装完成后,检查java版本。

java -version

测试安装的Java版本

系统上安装了Java 1.8。

接下来,我们将配置java环境。 使用以下命令检查java二进制文件。

update-alternatives --config java

您将在' / usr / lib / jvm / java-8-oracle '目录中获取java二进制文件。

现在在'profile.d'目录下创建配置文件'java.sh'。

vim /etc/profile.d/java.sh

在下面粘贴java环境配置。

#Set JAVA_HOME
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH

保存并退出。

使文件可执行并加载配置文件。

chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

现在使用以下命令检查java环境。

echo $JAVA_HOME

并且您将获得java目录位于' / usr / lib / jvm / java-8-oracle '目录。

配置Java

安装Elasticsearch

安装Java之后,我们将安装Elastic Stack的第一个组件,我们将安装elasticsearch。

添加弹性密钥并将弹性存储库添加到系统中。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

现在更新存储库并使用以下命令安装elasticsearch包。

sudo apt update
sudo apt install elasticsearch -y

安装完成后,转到'/ etc / elasticsearch'目录并编辑配置文件'elasticsearch.yml'。

cd /etc/elasticsearch/
vim elasticsearch.yml

取消注释'network.host'行并将值更改为'localhost',并取消注释elasticsearch端口配置的'http.port'行。

network.host: localhost
http.port: 9200

保存并退出。

现在启动elasticsearch服务并使其在系统启动时每次启动。

systemctl start elasticsearch
systemctl enable elasticsearch

安装Elasticsearch

elasticsearch现在已启动并运行,请使用下面的netstat命令netstat和curl命令进行检查。

netstat -plntu
curl -XGET 'localhost:9200/?pretty'

现在,您将获得弹性搜索版本“6.2.4”在默认端口“9200”上运行。

检查elasticsearch端口

elasticsearch安装已经完成。

安装和配置Kibana仪表板

第二个组件是kibana仪表板。 我们将从弹性存储库安装Kibana仪表板,并将kibana服务配置为在localhost地址上运行。

使用下面的apt命令安装Kibana仪表板。

sudo apt install kibana -y

现在转到'/ etc / kibana'目录并编辑配置文件'kibana.yml'。

cd /etc/kibana/
vim 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仪表板现在已在“localhost”地址和默认端口“5601”上启动并运行。 使用下面的netstat命令检查它。

netstat -plntu

安装Kibana

Kibana仪表板安装已完成。

安装和配置Nginx作为Kibana的反向代理

在本教程中,我们将使用Nginx Web服务器作为Kibana仪表板的反向代理。

将Nginx和'apache2-utils'软件包安装到系统中。

sudo apt install nginx apache2-utils -y

安装完成后,转到'/ etc / nginx'配置目录并创建名为'kibana'的新虚拟主机文件。

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

在下面粘贴Nginx虚拟主机配置。

server {
    listen 80;
 
    server_name elastic-stack.io;
 
    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;
    }
}

保存并退出。

接下来,我们将创建用于访问Kibana仪表板的新基本身份验证Web服务器。 我们将使用htpasswd命令创建基本身份验证,如下所示。

sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password

激活kibana虚拟主机并测试所有nginx配置。

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

确保没有错误,现在启动Nginx服务并使其在系统启动时每次启动。

systemctl enable nginx
systemctl restart nginx

Nginx安装和配置作为Kibana仪表板的反向代理已经完成。

配置Nginx

安装和配置Logstash

本指南的弹性的最后一个组件是“Logstash”。 我们将安装和配置Logsatash以使用filebeat集中来自客户端源的服务器日志,然后过滤并转换所有数据(Syslog)并将其传输到存储(Elasticsearch)。

在安装logstash之前,请确保检查OpenSSL版本是否为您的服务器。

openssl version -a

安装和配置Logstash

对于本指南,我们将使用OpenSSL'1.0.2o'。 如果您仍在使用OpenSSL版本1.1.2,则会在logstash和filebeat SSL连接上收到错误。

使用下面的apt命令安装logstash。

sudo apt install logstash -y

安装完成后,我们将生成SSL证书密钥,以保护从客户端文件传输到logstash服务器的日志数据传输。

使用vim编辑'/ etc / hosts'文件。

vim /etc/hosts

添加以下配置。

10.0.15.10  elk-master  elk-master

保存并退出。

现在在logstash配置目录'/ etc / logstash'下创建新的SSL目录并转到该目录。

mkdir -p /etc/logstash/ssl
cd /etc/logstash/

使用openssl命令为Logstash生成SSL证书,如下所示。

openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt

Logstash的SSL证书文件已在'/ etc / logstash / ssl'目录中创建。

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

转到logstash配置目录并在'conf.d'目录中创建新配置文件'filebeat-input.conf'。

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

在那里粘贴以下配置。

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt"
    ssl_key => "/etc/logstash/ssl/logstash-forwarder.key"
  }
}

保存并退出。

对于syslog处理日志数据,我们使用名为'grok'的过滤器插件来解析syslog文件。

创建一个新配置'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" ]
    }
  }
}

保存并退出。

对于elasticsearch输出,我们将创建名为'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

启用并启动logstah

使用下面的netstat和systemctl命令检查logstash服务。

netstat -plntu
systemctl status logstash

logstash服务现已启动并运行。 使用端口“5443”在公共IP地址上运行。

检查端口

Elastic Stack安装已完成。

第2步 - 在Ubuntu 18.04上安装和配置Filebeat

在这一步中,我们将通过在其上安装Elastic Beats数据发送器'Filebeat'来配置Ubuntu 18.04客户端'elk-client01'。

在将filebeat安装到系统之前,我们需要编辑'/ etc / hosts'并将logstash证书文件'logstash-forwarder.crt'文件下载到'elk-client01'服务器。

使用vim编辑器编辑'/ etc / hosts'文件。

vim /etc/hosts

在那里粘贴以下配置。

10.0.15.10  elk-master  elk-master

保存并退出。

使用scp命令复制logstash证书文件'logstash-forwarder.crt'。

scp root@elk-master:/etc/logstash/ssl/logstash-forwarder.crt .

安装Filebeat

接下来,通过添加弹性键并添加弹性存储库来安装Elastic Beats'Filebeat'。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

使用下面的apt命令更新存储库并安装'filebeat'软件包。

sudo apt update
sudo apt install filebeat -y

安装完成后,转到'/ etc / filebeat'目录并编辑配置文件'filebeat.yml'。

cd /etc/filebeat/
vim filebeat.yml

现在通过将“enabled”行值更改为“true”来启用filebeat探测器。

  enabled: true

定义要发送到logstash服务器的系统日志文件。 对于本指南,我们将添加ssh日志文件'auth.log'和syslog文件。

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

通过注释默认的“elasticsearch”输出将输出设置为logstash,并取消注释logstash输出行,如下所示。

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

保存并退出。

接下来,我们需要编辑'filebeat.reference.yml'文件以启用filebeat模块,我们将启用'syslog'模块。

vim filebeat.reference.yml

为filebeat启用syslog系统模块,如下所示。

- module: system
  # Syslog
  syslog:
    enabled: true

保存并退出。

将logstash证书文件'logstash-forwarder.crt'复制到'/ etc / filebeat'目录。

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

Filebeat安装和配置已完成。 现在启动filebeat服务并使其在每次系统引导时启动。

systemctl start filebeat
systemctl enable filebeat

配置Filebeat

使用以下命令检查filebeat服务。

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

filebeatshippers已在Ubuntu 18.04服务器下启动并运行。

Filebeat已启动并正在运行

第3步 - 在CentOS 7.5上安装和配置Filebeat

在此步骤中,我们将通过在其上安装Elastic Beats数据发送器'Filebeat'来配置CentOS 7.5客户端'elk-client02'。

在将Filebeat安装到系统之前,我们需要编辑'/ etc / hosts'并将logstash证书文件'logstash-forwarder.crt'文件下载到'elk-client02'服务器。

使用vim编辑'/ etc / hosts'文件。

vim /etc/hosts

粘贴配置如下。

10.0.15.10  elk-master  elk-master

保存并退出。

使用scp命令复制logstash证书文件'logstash-forwarder.crt'。

scp root@elk-master:/etc/logstash/ssl/logstash-forwarder.crt .

在CentOS上安装Filebeat

接下来,通过添加弹性键并添加弹性存储库来安装Elastic Beats'Filebeat'。

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

cat <<EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

使用下面的yum命令安装filebeat。

yum install filebeat -y

安装完成后,转到'/ etc / filebeat'目录并编辑配置文件'filebeat.yml'。

cd /etc/filebeat/
vim filebeat.yml

现在通过将“enabled”行值更改为“true”来启用filebeat探测器。

  enabled: true

定义要发送到logstash服务器的系统日志文件。 对于本指南,我们将添加ssh日志文件'auth.log'和syslog文件。

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

通过注释默认的“elasticsearch”输出将输出设置为logstash,并取消注释logstash输出行,如下所示。

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

保存并退出。

接下来,我们需要编辑'filebeat.reference.yml'文件以启用filebeat模块,我们将启用'syslog'模块。

vim filebeat.reference.yml

为filebeat启用syslog系统模块,如下所示。

- module: system
  # Syslog
  syslog:
    enabled: true

保存并退出。

将logstash证书文件'logstash-forwarder.crt'复制到'/ etc / filebeat'目录。

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

Filebeat安装和配置已完成。 现在启动filebeat服务并将其添加到启动时间。

systemctl start filebeat
systemctl enable filebeat

配置Filebeat

使用以下命令检查filebeat服务。

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

filebeatshippers在CentOS 7.5服务器下启动并运行。

Filebeat正在运行

第4步 - 测试

打开Web浏览器并输入弹性域名,我的是:'elastic-stack.io'。

系统将提示您从基本身份验证到Kibana仪表板的用户名和密码。

使用您的密码键入用户名'elastic'。

现在您将获得美丽的kibana仪表板,单击右侧的“设置索引模式”按钮。

Kibana仪表板

定义'filebeat- *'索引模式,然后单击“下一步”按钮。

定义文件节点

对于“时间过滤器字段名称”,选择“@timestamp”并单击“创建索引模式”。

创建索引

并且已创建filebeat索引模式。

Filebeat索引模式已创建

接下来,我们将尝试在每个客户端服务器的elk-client01'Ubuntu系统和'elk-client02'CentOS系统上获取SSH登录的日志信息失败。

在Kibana仪表板内,单击“发现”菜单以获取所有服务器日志。

将'beat.hostname'设置为'elk-client01'服务器,'source'是'/var/log/auth.log'文件,您将得到如下所示的结果。

记录结果

以下是来自'auth.log'文件的SSH失败密码的示例日志详细信息。

SSH登录失败

对于'elk-client02'CentOS服务器,将'beat.hostname'设置为'elk-client02'服务器,'source'是'/ var / log / secure'文件,您将得到如图所示的结果下面。

报告服务器2

以下是来自“安全”文件的SSH失败密码的示例日志详细信息。

登录报告

Elastic Stack和Elastic Beat'Filebeat'安装和配置已成功完成。

参考