如何在Ubuntu 16.04安装Elasticsearch,Logstash和Kibana(ELK)

介绍

Elastic Stack(以前称为ELK Stack )是由Elastic生成的开源软件集合,允许您以任何格式搜索,分析和可视化从任何源生成的日志,这种做法称为集中式日志记录 。 在尝试识别服务器或应用程序的问题时,集中日志记录非常有用,因为它允许您在一个位置搜索所有日志。 它也很有用,因为它允许您通过在特定时间范围内关联其日志来识别跨多个服务器的问题。

Elastic Stack有四个主要组件:

  • Elasticsearch :一个分布式RESTful搜索引擎,用于存储所有收集的数据。
  • Logstash :Elastic Stack的数据处理组件,用于将传入数据发送到Elasticsearch。
  • Kibana :用于搜索和可视化日志的Web界面。
  • Beats :轻量级,单一用途的数据发布者,可以将数百或数千台计算机中的数据发送到Logstash或Elasticsearch。

在本教程中,您将在Ubuntu 18.04服务器上安装Elastic Stack 。 您将学习如何安装Elastic Stack的所有组件 - 包括Filebeat ,用于转发和集中日志和文件的Beat - 并配置它们以收集和可视化系统日志。 此外,由于Kibana通常只在localhost上可用,我们将使用Nginx代理它,以便可以通过Web浏览器访问它。 我们将在单个服务器上安装所有这些组件,我们将其称为Elastic Stack服务器

注意 :安装Elastic Stack时,必须在整个中使用相同的版本。 在本教程中,我们将安装整个的最新版本,在撰写本文时,它们是Elasticsearch 6.4.3,Kibana 6.4.3,Logstash 6.4.3和Filebeat 6.4.3。

先决条件

要完成本教程,您需要以下内容:

  • 按照Ubuntu 18.04的初始服务器设置指南设置Ubuntu 18.04服务器,包括具有sudo权限的非root用户和使用ufw配置的防火墙。 Elastic Stack服务器所需的CPU,RAM和存储量取决于您要收集的日志量。 在本教程中,我们将使用具有以下Elastic Stack服务器规范的VPS:

    • 操作系统:Ubuntu 18.04
    • 内存:4GB
    • CPU:2
  • Java 8 - Elasticsearch和Logstash所需 - 安装在您的服务器上。 请注意,不支持Java 9。 要安装它,请按照我们的指南中的“安装Oracle JDK”部分,了解如何在Ubuntu 18.04上安装Java 8。

  • Nginx安装在您的服务器上,我们将在本指南后面配置为Kibana的反向代理。 按照我们的指南如何在Ubuntu 18.04上安装Nginx进行设置。

此外,由于Elastic Stack用于访问您不希望未经授权的用户访问的有关您的服务器的有价值信息,因此通过安装TLS / SSL证书来保证服务器安全非常重要。 这是可选的,但强烈鼓励

但是,因为您将在本指南的过程中最终对Nginx服务器块进行更改,所以在本教程的第二步结束时完成Ubuntu 18.04上的Let's Encrypt指南可能更有意义。 考虑到这一点,如果您计划在服务器上配置Let's Encrypt,在执行此操作之前,您将需要以下内容:

  • 完全限定的域名(FQDN)。 本教程将始终使用example.com 。 您可以在Namecheap上购买域名,在Freenom上免费获取一个域名,或使用您选择的域名注册商。
  • 为您的服务器设置了以下两个DNS记录。 您可以按照DigitalOcean DNS的介绍了解有关如何添加它们的详细信息。

    • 带有example.com的A记录,指向服务器的公共IP地址。
    • 带有www. example.com的A记录www. example.com www. example.com指向您服务器的公共IP地址。

第1步 - 安装和配置Elasticsearch

Ubuntu的默认包存储库中不提供Elastic Stack组件。 但是,在添加Elastic的包源列表后,它们可以与APT一起安装。

所有Elastic Stack的软件包都使用Elasticsearch签名密钥进行签名,以保护您的系统免受软件包欺骗。 使用密钥进行身份验证的软件包将被包管理器视为信任。 在此步骤中,您将导入Elasticsearch公共GPG密钥并添加Elastic包源列表以安装Elasticsearch。

首先,运行以下命令将Elasticsearch公共GPG密钥导入APT:

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

接下来,将Elastic源列表添加到sources.list.d目录,其中APT将查找新的源:

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读取新的Elastic源:

sudo apt update

然后使用以下命令安装Elasticsearch:

sudo apt install elasticsearch

完成Elasticsearch安装后,使用首选文本编辑器编辑Elasticsearch的主配置文件elasticsearch.yml 。 在这里,我们将使用nano

sudo nano /etc/elasticsearch/elasticsearch.yml

注意: Elasticsearch的配置文件采用YAML格式,这意味着缩进非常重要! 编辑此文件时,请确保不添加任何额外的空格。

Elasticsearch监听来自端口9200上各处的流量。 您需要限制对Elasticsearch实例的外部访问,以防止外人通过REST API读取您的数据或关闭您的Elasticsearch集群。 找到指定network.host的行,取消注释,并将其值替换为localhost ,如下所示:

/etc/elasticsearch/elasticsearch.yml

. . .
network.host: localhost
. . .

CTRL+X保存并关闭elasticsearch.yml ,接着是Y ,然后如果你使用的是nano ,则ENTER 。 然后,使用systemctl启动Elasticsearch服务:

sudo systemctl start elasticsearch

接下来,运行以下命令以使Elasticsearch在每次服务器启动时启动:

sudo systemctl enable elasticsearch

您可以通过发送HTTP请求来测试您的Elasticsearch服务是否正在运行:

curl -X GET "localhost:9200"

您将看到一个响应,显示有关本地节点的一些基本信息,类似于:

Output{
  "name" : "ZlJ0k2h",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "beJf9oPSTbecP7_i8pRVCw",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

现在Elasticsearch已经启动并运行,让我们安装Kibana,它是Elastic Stack的下一个组件。

第2步 - 安装和配置Kibana仪表板

Elasticsearch和Logstash需要Java,所以我们现在就安装它。 我们将安装最新版本的Oracle Java 8,因为这是Elasticsearch推荐的版本。 然而,它应该与OpenJDK,如果你决定走这条路线工作正常。

加入甲骨文的Java PPA为apt

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

更新apt包数据库:

sudo apt-get update

使用此命令安装最新稳定版本的Oracle Java 8(并接受弹出的许可协议):

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

现在安装了Java 8,我们安装ElasticSearch。

安装Elasticsearch

Elasticsearch可以通过添加Elastic的软件包源列表与软件包管理器一起安装。

运行以下命令将Elasticsearch公共GPG密钥导入apt:

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

如果你的提示似乎挂起,它很可能在等待您的用户密码(授权sudo命令)。 如果是这种情况,请输入您的密码。

创建Elasticsearch源列表:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

更新apt再次包数据库:

sudo apt-get update

使用此命令安装Elasticsearch:

sudo apt-get -y install elasticsearch

Elasticsearch现已安装。 让我们编辑配置:

sudo nano /etc/elasticsearch/elasticsearch.yml

您将要限制对Elasticsearch实例(端口9200)的外部访问,因此外部人员无法读取您的数据或通过HTTP API关闭Elasticsearch集群。 查找指定线路network.host ,取消它,并与“localhost”的,所以它看起来像这样替换它的价值:

/etc/elasticsearch/elasticsearch.yml excerpt(updated)

network.host: localhost

保存并退出elasticsearch.yml

现在,启动Elasticsearch:

sudo systemctl restart elasticsearch

然后,运行以下命令在启动时启动Elasticsearch:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch

现在Elasticsearch启动并运行,让我们安装Kibana。

安装Kibana

Kibana可以通过添加Elastic的软件包源列表与软件包管理器一起安装。

将Kibana添加到源列表中:

echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list

更新apt包数据库:

sudo apt-get update

使用此命令安装Kibana:

sudo apt-get -y install kibana

Kibana现已安装。

打开Kibana配置文件进行编辑:

sudo nano /opt/kibana/config/kibana.yml

在Kibana配置文件,找到指定线server.host ,并替换为“本地主机”的IP地址(由“0.0.0.0”默认值):

/opt/kibana/config/kibana.yml excerpt(updated)

server.host: "localhost"

保存并退出。 这个设置使得Kibana只能访问localhost。 这很好,因为我们将使用Nginx反向代理允许外部访问。

现在启用Kibana服务,并启动它:

sudo systemctl daemon-reload
sudo systemctl enable kibana
sudo systemctl start kibana

在我们可以使用Kibana Web界面之前,我们必须设置一个反向代理。 让我们现在做,与Nginx。

安装Nginx

因为我们配置Kibana为监听localhost ,我们必须建立一个反向代理,允许它的外部访问。 我们将使用Nginx为此目的。

 

注意

如果你已经有一个Nginx实例,你想使用,请随意使用它。 只要确保配置Kibana所以它是由你的Nginx服务器访问(您可能要更改的host值, /opt/kibana/config/kibana.yml ,您Kibana服务器的专用IP地址或主机名)。 此外,建议您启用SSL / TLS。

使用apt安装Nginx的:

sudo apt-get -y install nginx

使用openssl创建一个管理员用户,被称为“kibanaadmin”(你应该使用另一个名字),可以访问Kibana Web界面:

sudo -v
echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

在提示符处输入密码。 记住此登录信息,因为您需要访问Kibana Web界面。

现在打开你喜欢的编辑器中的Nginx默认服务器块:

sudo nano /etc/nginx/sites-available/default

删除文件的内容,并将以下代码块粘贴到文件中。 请务必更新server_name以匹配您的服务器的名称或公网IP地址:

/ etc / nginx / sites-available / default

server {
    listen 80;

    server_name example.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

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

保存并退出。 这Nginx的配置您的服务器的HTTP流量直接到Kibana应用程序,它监听localhost:5601 。 此外,Nginx的将使用htpasswd.users文件,我们前面创建和要求基本身份验证。

现在,检查配置语法错误,并重新启动Nginx如果没有找到:

sudo nginx -t
sudo systemctl restart nginx

如果您按照16.04的初始服务器设置指南,您已启用UFW防火墙。 要允许连接到Nginx,我们可以通过键入以下内容来调整规则:

sudo ufw allow 'Nginx Full'

Kibana现在是通过您的FQDN或ELK服务器即公网IP地址访问的http://麋鹿\ _ SERVER \ _Public \ _ip / 。 如果您在网络浏览器中访问,输入“kibanaadmin”凭据后,您应该看到一个Kibana欢迎页面,它将要求您配置索引模式。 让我们回到那以后,在我们安装所有其他组件。

安装Logstash

Logstash包可以从与Elasticsearch相同的存储库获得,我们已经安装了该公钥,所以让我们将Logstash添加到我们的源列表:

echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list

更新apt包数据库:

sudo apt-get update

使用此命令安装Logstash:

sudo apt-get install logstash

已安装Logstash,但尚未配置。

生成SSL证书

由于我们将使用Filebeat将日志从我们的客户端服务器发送到我们的ELK服务器,我们需要创建一个SSL证书和密钥对。 Filebeat使用该证书来验证ELK Server的身份。 使用以下命令创建将存储证书和私钥的目录:

sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private

现在,您有两个选项用于生成SSL证书。 如果你有一个DNS设置,让您的客户端服务器解析服务器ELK的IP地址,使用选项2,否则, 选项1将允许您使用IP地址。

选项1:IP地址

如果没有DNS设置,这将让你的服务器,你会收集日志从,解决您的ELK的IP地址,服务器,你将有你的ELK服务器的私有IP地址添加到subjectAltName (SAN)字段,我们将要生成的SSL证书。 为此,请打开OpenSSL配置文件:

sudo nano /etc/ssl/openssl.cnf

找到[ v3_ca ]文件中的部分,并根据它(代在ELK服务器的私有IP地址 )添加这一行:

/etc/ssl/openssl.cnf excerpt(更新)

subjectAltName = IP: ELK_server_private_IP

保存并退出。

现在产生的相应位置的SSL证书和私钥( /etc/pki/tls/... ),用下面的命令:

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

logstash-forwarder.crt文件将被复制到所有将日志发送到Logstash的服务器,但我们会做到这一点稍晚。 让我们完成我们的Logstash配置。 如果您使用此选项去了,跳过选项2并移动到配置Logstash。

选项2:FQDN(DNS)

如果您的DNS设置与您的专用网络,您应该创建一个A记录,包含ELK服务器的私有IP地址 - 这个域名将在下一个命令中使用,以生成SSL证书。 或者,您可以使用指向服务器的公共IP地址的记录。 只要确保您的服务器(您将收集日志的服务器)将能够将域名解析到您的ELK服务器。

现在生成的SSL证书和私钥,在适当的位置( /etc/pki/tls/... ),具有以下(在ELK服务器的FQDN替补):

cd /etc/pki/tls
sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt文件将被复制到所有将日志发送到Logstash的服务器,但我们会做到这一点稍晚。 让我们完成我们的Logstash配置。

配置Logstash

Logstash配置文件中的JSON格式,并居住在/etc/logstash/conf.d 。 该配置由三个部分组成:输入,滤波器和输出。

让我们创建一个名为的配置文件02-beats-input.conf ,并成立了“filebeat”输入:

sudo nano /etc/logstash/conf.d/02-beats-input.conf

插入下面的输入配置:

/etc/logstash/conf.d/02-beats-Input.conf

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

保存并退出。 这指定了一个beats输入,将监听TCP端口5044 ,它将使用我们前面创建的SSL证书和私钥。

如果您遵循Ubuntu 16.04初始服务器设置指南,您将配置UFW防火墙。 为了让Logstash到端口接收连接5044 ,我们需要打开端口:

sudo ufw allow 5044

现在,让我们创建一个配置文件名为10-syslog-filter.conf ,在这里我们将添加一个过滤系统日志消息:

sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

插入下面的系统日志过滤器配置:

/etc/logstash/conf.d/10-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}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

保存并退出。 该过滤器会寻找被标记为“系统日志”类型(Filebeat)日志,它会尝试使用grok来分析传入的syslog日志,使之结构化和查询能力。

最后,我们将创建一个名为的配置文件30-elasticsearch-output.conf

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

插入下面的输出配置:

/etc/logstash/conf.d/30-elasticsearch-output.conf

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

保存并退出。 该输出基本上配置Logstash存储其在运行中Elasticsearch的Beats数据localhost:9200 ,在所使用的拍子命名的索引(filebeat,在我们的情况下)。

如果要为使用Filebeat输入的其他应用程序添加过滤器,请确保对文件命名,以便在输入和输出配置之间进行排序(即在02-和30-之间)。

使用此命令测试Logstash配置:

sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/

几秒钟后,它应该显示Configuration OK ,如果没有语法错误。 否则,请尝试并读取错误输出,以查看您的Logstash配置有什么问题。

重新启动Logstash并启用它,以使配置更改生效:

sudo systemctl restart logstash
sudo systemctl enable logstash

Logstash会监听

接下来,我们将加载示例Kibana仪表板。

加载Kibana仪表板

Elastic提供了几个样例Kibana仪表板和Beats索引模式,可以帮助您开始使用Kibana。 虽然我们不会在本教程中使用仪表板,我们仍将加载它们,以便我们可以使用它包括的Filebeat索引模式。

使用curl将文件下载到你的主目录:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.2.2.zip

安装unzip包用这个命令:

sudo apt-get -y install unzip

接下来,提取归档的内容:

unzip beats-dashboards-*.zip

并使用以下命令将样本仪表板,可视化和Beats索引模式加载到Elasticsearch中:

cd beats-dashboards-*
./load.sh

这些是我们刚加载的索引模式:

  • packetbeat- *
  • topbeat- *
  • filebeat- *
  • winlogbeat- *

当我们开始使用Kibana时,我们将选择Filebeat索引模式作为默认值。

在Elasticsearch中加载Filebeat索引模板

 

因为我们计划使用Filebeat将日志发送到Elasticsearch,我们应该加载Filebeat索引模板。 索引模板将配置Elasticsearch以智能方式分析传入的Filebeat字段。

首先,将Filebeat索引模板下载到您的主目录:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

然后使用此命令加载模板:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' [email protected]

如果模板加载正确,您应该看到这样的消息:

Output:{
  "acknowledged" : true
}

现在我们的ELK服务器已准备好接收Filebeat数据,让我们转到在每个客户端服务器上设置Filebeat。

设置Filebeat(添加客户端服务器)

对于您要将日志发送到ELK服务器上的Logstash的每个Ubuntu或Debian服务器,请执行以下步骤。 有关在基于Red Hat Linux发行版(如RHEL,CentOS的,等等)安装Filebeat说明,请参阅设置Filebeat(添加客户端服务器)部分本教程的CentOS的变化。

复制SSL证书

在您的ELK服务器 ,复制您创建的客户端服务器的SSL证书(替代客户端服务器的地址和自己的登录):

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

提供登录凭据后,请确保证书复制成功。 它是客户端服务器和ELK服务器之间的通信所必需的。

现在,你的客户端服务器上,复制ELK服务器的SSL证书到相应位置( /etc/pki/tls/certs ):

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

现在我们将安装Topbeat包。

安装Filebeat包

客户端服务器 ,创建了Beats源列表:

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

它还使用与Elasticsearch相同的GPG密钥,可以使用此命令安装:

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

然后安装Filebeat包:

sudo apt-get update
sudo apt-get install filebeat

已安装Filebeat,但尚未配置。

配置Filebeat

现在我们将配置Filebeat连接到我们的ELK服务器上的Logstash。 本节将逐步介绍如何修改Filebeat附带的示例配置文件。 当你完成这些步骤,你应该有一个看起来像一个文件这样 。

客户端服务器 ,创建和编辑Filebeat配置文件:

sudo nano /etc/filebeat/filebeat.yml

 

注意

Filebeat的配置文件是YAML格式的,这意味着缩进是非常重要的! 请务必使用这些说明中指定的相同数量的空格。

接近文件的顶部,你会看到prospectors节,这是你可以定义指定淘金哪些日志文件应运,他们应该如何处理。 每个探矿者被标明-字符。

我们将修改现有探矿发送syslogauth.log到Logstash。 在paths ,注释掉- /var/log/*.log文件。 这将防止Filebeat发送每.log在那个目录中Logstash。 然后,添加新条目syslogauth.log 。 完成后应该看起来像这样:

/etc/filebeat/filebeat.yml excerpt 1/5

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

然后,找到指定行document_type:取消并改变其值设置为“系统日志”。 在修改后应该看起来像这样:

/etc/filebeat/filebeat.yml excerpt 2/5

...
      document_type: syslog
...

这指定在这个探矿的日志类型的syslog(这是我们Logstash过滤器正在寻找的类型)。

如果要将其他文件发送到ELK服务器,或对Filebeat处理日志的方式进行任何更改,请随时修改或添加探测器条目。

接下来,根据output部分,找到这行elasticsearch:这表明Elasticsearch输出部分(我们不打算使用) 删除或注释掉整个Elasticsearch输出部分 (最多这行#logstash: )。

找到注释掉Logstash输出部分,由这行表示#logstash:并通过删除前面的注释它# 。 在本节中,取消对hosts: ["localhost:5044"]行。 更改localhost到您的ELK服务器的私有IP地址(或主机名,如果您使用该选项了):

/etc/filebeat/filebeat.yml excerpt 3/5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]

这将配置Filebeat连接到Logstash在端口ELK服务器5044 (我们指定的Logstash输入早些时候端口)。

直属hosts条目,并使用相同的缩进,加入这一行:

/etc/filebeat/filebeat.yml excerpt 4/5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]
    bulk_max_size: 1024

接下来,找到了tls部分,并取消它。 然后取消对指定线路certificate_authorities ,它的值更改为["/etc/pki/tls/certs/logstash-forwarder.crt"] 。 它应该看起来像这样:

/etc/filebeat/filebeat.yml excerpt 5/5

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

这将Filebeat配置为使用我们在ELK服务器上创建的SSL证书。

保存并退出。

现在重新启动Filebeat将我们的更改放置到位:

sudo systemctl restart filebeat
sudo systemctl enable filebeat

同样,如果你如果你的Filebeat配置是否正确还不能确定,比较它反对这个例子Filebeat配置 。

现在Filebeat发送syslogauth.log到Logstash您的ELK服务器上! 对于您要收集日志的所有其他服务器重复此部分。

测试Filebeat安装

 

如果您的ELK已正确设置,Filebeat(在客户端服务器上)应将您的日志发送到ELK服务器上的Logstash。 Logstash应该使用我们先前导入的索引将Filebeat数据加载到Elasticsearch中。

在您的ELK服务器 ,验证Elasticsearch确实通过查询Filebeat指数使用此命令接收数据:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

你应该看到一堆看起来像这样的输出:

Sample Output:...
{
      "_index" : "filebeat-2016.01.29",
      "_type" : "log",
      "_id" : "AVKO98yuaHvsHQLa53HE",
      "_score" : 1.0,
      "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
    }
...

如果您的输出显示总计0次点击,Elasticsearch不会在您搜索的索引下加载任何日志,您应该检查您的设置是否有错误。 如果收到预期的输出,请继续下一步。

连接到Kibana

当您在要收集日志的所有服务器上完成Filebeat设置后,让我们看看Kibana,我们之前安装的Web界面。

在Web浏览器中,转到您的ELK服务器的FQDN或公共IP地址。 输入“kibanaadmin”凭据后,您应该看到一个页面,提示您配置默认索引模式:

如何在Ubuntu 16.04安装Elasticsearch,Logstash和Kibana(ELK)_第1张图片

来吧,从索引模式菜单(左侧)选择filebeat- *,然后单击星(设置为默认索引)按钮设置Filebeat指数为默认值。

现在点击顶部导航栏中的链接发现 。 默认情况下,这将显示过去15分钟内的所有日志数据。 您应该会看到带有日志事件的直方图,其中包含以下日志消息:

如何在Ubuntu 16.04安装Elasticsearch,Logstash和Kibana(ELK)_第2张图片

现在,在那里不会有太多,因为你只是从您的客户端服务器收集系统日志。 在这里,您可以搜索和浏览您的日志。 您还可以自定义信息中心。

尝试以下事项:

  • 搜索“root”以查看是否有人尝试以root身份登录到您的服务器
  • 搜索一个特定的主机名(搜索host: " hostname "
  • 通过在直方图上或从上面的菜单中选择一个区域来更改时间范围
  • 点击直方图下面的消息,查看数据是如何过滤的

Kibana有许多其他功能,如图形和过滤,所以随便捅!

结论

现在你的系统日志通过Elasticsearch和Logstash集中,你可以用Kibana可视化它们,你应该有一个很好的开始,集中所有重要的日志。 记住,你可以发送几乎任何类型的日志或索引的数据到Logstash,但如果数据被解析和结构与grok,数据变得更加有用。

为了提高新ELK,你应该考虑收集和过滤Logstash你的其他日志和创造Kibana仪表板 。 您可能还需要通过使用Topbeat收集系统度量与ELK。 所有这些主题都在本系列的其他教程中介绍。

祝你好运!

转自:https://www.howtoing.com/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-16-04

你可能感兴趣的:(linux)