如何在Ubuntu 17.04上安装和配置Elastic Stack(Elasticsearch,Logstash和Kibana)

随着IT基础架构向云的迁移和物联网的普及,组织和IT专业人员正在更广泛地使用公共云服务。随着在其上运行的服务器和服务的增加,系统生成的日志的数量也在增加。由于多种原因,对这些日志的分析在基础架构中非常重要。这包括遵守安全策略和法规,系统故障排除,对与安全相关的事件做出响应或了解用户行为。

三个名为Elasticsearch,Logstash和Kibana的非常流行的开源应用程序结合在一起创建了Elastic Stack或ELK Stack。Elastic Stack是用于搜索,分析和可视化日志和数据的非常强大的工具。Elasticsearch是一个分布式,实时,可扩展且高度可用的应用程序,用于存储日志并在其中进行搜索。Logstash收集Beats发送的日志,对其进行增强,然后将其发送到Elasticsearch。Kibana是用于可视化日志和可行见解的Web UI。

在本教程中,我们将在Ubuntu 17.04上安装带有X-Pack的最新版本的Elasticsearch,Logstash和Kibana。

先决条件

要遵循本教程,您将需要一个Vultr 64位Ubuntu 17.04服务器实例,该实例至少具有4 GB RAM。对于生产环境,硬件需求随用户和日志数量的增加而增加。

本教程是从sudo用户角度编写的。要设置sudo用户,请遵循Debian上的“如何使用Sudo”指南。

您还将需要一个指向您服务器的域,以从Let's Encrypt CA获得证书。

步骤1:执行系统更新

在Ubuntu服务器实例上安装任何软件包之前,建议先更新系统。使用sudo用户登录并运行以下命令以更新系统。

sudo apt update
sudo apt -y upgrade

系统完成升级后,请继续下一步。

步骤2:安装Java

Elasticsearch需要Java 8才能工作。它同时支持Oracle Java和OpenJDK。本教程的这一部分演示了Oracle Java和OpenJDK的安装。

确保安装以下任何Java版本。对于Elasticsearch,建议安装Oracle Java。但是,您也可以根据自己的喜好选择安装OpenJDK。

安装Oracle Java

要在Ubuntu系统上安装Oracle Java,您需要通过运行以下命令来添加Oracle Java PPA:

sudo add-apt-repository ppa:webupd8team/java

现在,通过运行以下命令来更新存储库信息:

sudo apt update

现在,您可以通过运行以下命令轻松安装Java 8的最新稳定版本:

sudo apt -y install oracle-java8-installer

出现提示时接受许可协议。安装完成后,您可以通过运行以下命令来验证Java版本:

java -version

您应该看到类似于以下内容的输出:

user@vultr:~$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

您还可以JAVA_HOME通过安装设置和其他默认值oracle-java8-set-default。跑:

sudo apt -y install oracle-java8-set-default

现在,您可以JAVA_HOME通过运行以下命令来验证是否设置了变量:

echo "$JAVA_HOME"

输出应类似于:

user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle

如果未获得上面显示的输出,则可能需要注销并再次登录到Shell。现在,您的服务器上已安装Oracle Java。现在,您可以继续本教程的步骤3,跳过安装OpenJDK。

安装OpenJDK

OpenJDK的安装非常简单。只需运行以下命令即可安装OpenJDK。

sudo apt -y install default-jdk

安装完成后,您可以通过运行以下命令来验证Java版本:

java -version

您应该看到类似于以下内容的输出:

user@vultr:~$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.17.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

要设置JAVA_HOME变量,请运行以下命令:

sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment

通过运行以下命令重新加载环境文件:

sudo source /etc/environment

现在,您可以JAVA_HOME通过运行以下命令来验证是否设置了变量:

echo "$JAVA_HOME"

输出应类似于:

user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/

步骤3:安装Elasticsearch

Elasticsearch是一个超快速,分布式,高可用性的RESTful搜索引擎。通过运行以下命令添加Elasticsearch APT存储库:

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

上面的命令为Elasticsearch创建一个新的存储库文件,并将源条目添加到其中。现在导入用于对软件包签名的PGP密钥。

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

通过运行以下命令来更新APT存储库元数据:

sudo apt update

通过运行以下命令来安装Elasticsearch。

sudo apt -y install elasticsearch

上面的命令将在您的系统上安装最新版本的Elasticsearch。一旦安装了Elasticsearch,通过运行以下命令重新加载Systemd服务守护程序:

sudo systemctl daemon-reload

启动Elasticsearch并使它能够在启动时自动启动。

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

要停止Elasticsearch,可以运行:

sudo systemctl stop elasticsearch

要检查服务的状态,可以运行:

sudo systemctl status elasticsearch

Elasticsearch现在在port上运行9200。您可以通过运行以下命令来验证它是否正在工作并产生结果。

curl -XGET 'localhost:9200/?pretty'

将显示类似以下的信息。

user@vultr:~$ curl -XGET 'localhost:9200/?pretty'
{
  "name" : "wDaVa1K",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "71drjJ8PTyCcbai33Esy3Q",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

安装X-Pack for Elasticsearch

X-Pack是Elastic Stack插件,提供许多附加功能,例如安全性,警报,监视,报告和图形功能。X-Pack还为Elasticsearch和Kibana提供用户身份验证,并监视Kibana中的不同节点。X-Pack和Elasticsearch必须安装相同的版本,这一点很重要。

您可以通过运行以下命令直接安装X-Pack for Elasticsearch:

cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack

要继续安装,请y在出现提示时输入。此命令会将X-Pack插件安装到您的系统。安装后,X-Pack启用Elasticsearch的身份验证。默认用户名是elastic,密码是changeme。您可以通过运行与检查Elasticsearch是否有效相同的命令来检查是否启用了身份验证。

curl -XGET 'localhost:9200/?pretty'

现在,输出将显示身份验证失败。

user@vultr:~# curl -XGET 'localhost:9200/?pretty'
{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication token for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication token for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

changeme通过运行以下命令来更改默认密码。

curl -XPUT -u elastic:changeme 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewElasticPassword"
}
'

替换NewPassword为您要使用的实际密码。您可以通过运行以下命令来检查是否设置了新密码并且Elasticsearch正在运行。

curl -XGET -u elastic:NewElasticPassword 'localhost:9200/?pretty'    

您将看到显示成功执行查询的输出。

此外,通过运行以下命令编辑Elasticsearch配置文件:

sudo nano /etc/elasticsearch/elasticsearch.yml

找到以下几行,取消注释,并根据提供的说明进行更改。

#cluster.name: my-application    #Provide the name of your cluster
#node.name: node-1               #Provide the name of your node
#network.host: 192.168.0.1

对于network.host,提供分配给系统的专用IP地址。通过运行以下命令重新启动Elasticsearch实例:

sudo systemctl restart elasticsearch

现在,localhost您需要使用IP地址而不是IP地址来运行查询curl

curl -XGET -u elastic:NewElasticPassword '192.168.0.1:9200/?pretty'

替换192.168.0.1为服务器的实际专用IP地址。现在我们已经安装了Elasticsearch,继续进行安装Kibana。

步骤4:安装Kibana

Kibana用于通过Web界面可视化日志和可行的见解。它也可以用于管理Elasticsearch。建议安装与Elasticsearch相同版本的Kibana。

由于我们已经添加了Elasticsearch存储库和PGP密钥,我们可以通过运行以下命令直接安装Kibana:

sudo apt -y install kibana

先前的命令将在您的系统上安装Kibana的最新版本。一旦安装了Kibana,请通过运行以下命令重新加载Systemd服务守护程序:

sudo systemctl daemon-reload

您可以运行以下命令来启动Kibana,并使它能够在启动时自动启动:

sudo systemctl enable kibana
sudo systemctl start kibana

安装X-Pack for Kibana

您可以通过运行以下命令直接安装X-Pack for Kibana:

cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack

X-Pack for Kibana默认情况下启用了图形,机器学习和监视。X-Pack还为Kibana启用身份验证。默认用户名是kibana,密码是changeme。更改Kibana用户的默认密码很重要。运行以下命令来更改密码。

curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewKibanaPassword"
}
'

192.168.0.1服务器的实际专用IP地址和NewKibanaPasswordKibana用户的新密码替换。

通过运行以下命令编辑Kibana配置文件:

sudo nano /etc/kibana/kibana.yml

查找以下行,并根据提供的说明更改值。

#elasticsearch.url: "http://localhost:9200"
#elasticsearch.username: "user"
#elasticsearch.password: "password"

取消注释上面的行,并在其中elasticsearch.url提供Elasticsearch实例的URL。IP地址必须与中使用的IP地址相同elasticsearch.yml。此外,将用户名从设置为userelastic并提供您之前设置的弹性用户的密码。

通过运行以下命令重新启动Kibana实例:

sudo systemctl restart kibana

安装Nginx作为Kibana的反向代理

由于我们localhost在端口上运行Kibana 5601,因此建议使用Apache或Nginx设置反向代理以从本地网络外部访问Kibana。在本教程中,我们将Nginx设置为Kibana的反向代理。我们还将使用Let's Encrypt免费SSL证书来保护Nginx实例。

通过运行以下命令安装Nginx:

sudo apt -y install nginx

启动并启用Nginx以在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

现在已经安装并正在运行Nginx Web服务器,我们可以继续安装Certbot,它是官方的自动Let's Encrypt证书客户端。通过运行以下命令将Certbot PPA添加到您的系统:

sudo add-apt-repository ppa:certbot/certbot

更新存储库元信息。

sudo apt update

现在,您可以通过运行以下命令轻松安装最新版本的Certbot:

sudo apt -y install python-certbot-nginx 

前面的命令将解决并安装所需的依赖项以及Certbot软件包。

现在我们已经安装了Certbot,通过运行以下命令为您的域生成证书:

sudo certbot certonly --webroot -w /var/www/html/ -d kibana.example.com

不要忘记更改kibana.example.com您的实际域名。前面的命令将使用Certbot客户端。该certonly参数告诉Certbot客户端仅生成证书。使用此选项可确保不会自动安装证书,并且Nginx配置未更改。通过将质询文件放在指定webroot目录中来完成验证。

Certbot将要求您提供电子邮件地址以发送续订通知。您还需要接受许可协议。

要从Let's Encrypt CA获得证书,必须确保要为其生成证书的域指向服务器。如果不是,请对您域的DNS记录进行必要的更改,并等待DNS传播,然后再次提出证书请求。Certbot在提供证书之前会检查域权限。

生成的证书很可能存储在/etc/letsencrypt/live/kibana.example.com/目录中。SSL证书将存储为fullchain.pem,私钥将存储为privkey.pem

让我们加密证书将在90天后到期,因此建议使用cronjobs为证书设置自动续订。Cron是一项系统服务,用于运行定期任务。

通过运行以下命令打开cron作业文件:

sudo crontab -e

在文件末尾添加以下行。

30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet

上述cron作业将在每个星期一的5:30 AM运行。如果证书到期,它将自动更新它们。

通过运行以下命令,为Nginx编辑默认虚拟主机文件。

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

用以下内容替换现有内容。

server {
    listen 80 default_server;
    server_name kibana.example.com
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 default_server ssl http2;

    server_name kibana.example.com;

    ssl_certificate           /etc/letsencrypt/live/kibana.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/kibana.example.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    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.example.com使用您的实际域名进行更新,并验证SSL证书和私钥的路径。

通过运行以下命令重新启动Nginx Web服务器:

sudo systemctl restart nginx

如果一切配置正确,您将看到Kibana登录屏幕。使用用户名kibana和您设置的密码登录。您应该能够成功登录并查看Kibana仪表板。离开仪表板,现在,我们稍后将对其进行配置。

安装Logstash

Logstash也可以通过我们之前添加的官方Elasticsearch存储库进行安装。通过运行以下命令安装Logstash:

sudo apt -y install logstash

上面的命令将在您的系统上安装最新版本的Logstash。Logstash安装完成后,请运行以下命令重新加载Systemd服务守护程序:

sudo systemctl daemon-reload

启动Logstash并使它能够在启动时自动启动。

sudo systemctl enable logstash
sudo systemctl start logstash

安装X-Pack for Logstash

您可以通过运行以下命令直接安装X-Pack for Logstash:

cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack

X-Pack for Logstash带有默认用户logstash_system。您可以通过运行以下命令重置密码:

curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewLogstashPassword"
}
'

替换192.168.0.1为服务器的实际专用IP地址和NewLogstashPasswordLogstash用户的新密码。

现在,通过运行以下命令重新启动Logstash服务:

sudo systemctl restart logstash

通过运行以下命令编辑Logstash配置文件:

sudo nano /etc/logstash/logstash.yml

在文件末尾添加以下行以启用对Logstash实例的监视。

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: http://192.168.0.1:9200
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: NewLogstashPassword

根据您的设置替换Elasticsearch URL和Logstash密码。

现在,您可以将Logstash配置为使用不同的Beats接收数据。有多种类型的节拍可用:Packetbeat,Metricbeat,Filebeat,Winlogbeat和Heartbeat。您将需要分别安装每个Beat。

结论

在本教程中,我们在Ubuntu 17.04上安装了带有X-Pack的Elastic Stack。现在,服务器上已安装了基本的ELK堆栈。



Leave a Comment

如何在Ubuntu 16.04上安装Apache Maven

如何在Ubuntu 16.04上安装Apache Maven

简介Apache Maven是用于Java项目的免费开源项目管理工具。您可以轻松地管理项目的建立,报告,

在Ubuntu 14.04上安装Apache Tomcat

在Ubuntu 14.04上安装Apache Tomcat

由与流行的Apache Web服务器相同的组织创建的Apache Tomcat是一种Web服务器,允许您向访问者提供Java网页。在这

在Ubuntu 16.04上安装Tomcat

在Ubuntu 16.04上安装Tomcat

本指南说明了如何在Ubuntu 16.04服务器上安装Apache Tomcat。前提条件部署新的Ubuntu 16.04服务器实例。创建一个非根肥皂水

防止“Java 更新可用”彈出消息

防止“Java 更新可用”彈出消息

如何在 Windows 和 MacOS 中啟用或禁用 Java 更新可用消息。

在Ubuntu 18.04上安装Apache Maven

在Ubuntu 18.04上安装Apache Maven

简介Apache Maven是用于Java项目的免费开源项目管理工具。您可以轻松地管理项目的建立,报告,

在Ubuntu 16.04上安装Red5 Media Server

在Ubuntu 16.04上安装Red5 Media Server

使用其他系统?Red5是用Java实现的开源媒体服务器,它允许您运行Flash多用户应用程序,例如实时流媒体

如何在Ubuntu 16.10上安装Gradle

如何在Ubuntu 16.10上安装Gradle

使用其他系统?Gradle是基于Apache Ant和Apache Maven概念的免费和开源构建自动化工具集。Gradle提供

在Debian 8,Debian 9或CentOS 7上使用BungeeCord创建Minecraft服务器网络

在Debian 8,Debian 9或CentOS 7上使用BungeeCord创建Minecraft服务器网络

您需要什么具有至少1GB RAM的Vultr VPS。SSH访问(具有root /管理特权)。步骤1:首先安装BungeeCord

在CentOS上安装Java SE

在CentOS上安装Java SE

简介Java是一种流行的软件平台,可让您在各种硬件环境中开发和运行Java应用程序和小程序。那里

如何在CentOS 7上安装Apache Tomcat 8

如何在CentOS 7上安装Apache Tomcat 8

Apache Tomcat是设计用于服务Java网页的开源Web服务器。它被广泛部署并支持各种关键任务Web应用程序

如何在Ubuntu 16.04上手动安装Java 8

如何在Ubuntu 16.04上手动安装Java 8

在本指南中,您将学习如何在Ubuntu 16.04上手动安装Java 8。本教程中的说明也适用于其他版本的Ubuntu

Debian Wheezy上的Minecraft Bukkit服务器

Debian Wheezy上的Minecraft Bukkit服务器

简介Bukkit是Minecraft的扩展,提供了一些独有的功能以及可极大改善游戏体验的插件。

如何在CentOS 7上安装Scala

如何在CentOS 7上安装Scala

Scala是一种面向对象的功能性编程语言。它是一种流行的语言,已用于开发应用程序,例如Spark,Akka,

如何在Vultr CentOS 7服务器实例上安装Elasticsearch

如何在Vultr CentOS 7服务器实例上安装Elasticsearch

Elasticsearch是一种流行的开源全文本搜索和分析引擎。凭借其多功能性,可扩展性和易用性,Elasticsearch广泛

在CentOS 7上安装Red5媒体服务器

在CentOS 7上安装Red5媒体服务器

使用其他系统?Red5是用Java实现的开源媒体服务器,它允许您运行Flash多用户应用程序,例如实时流媒体

如何在CentOS 7上安装Gradle

如何在CentOS 7上安装Gradle

使用其他系统?Gradle是基于Apache Ant和Apache Maven概念的免费和开源构建自动化工具集。Gradle提供

如何在CentOS 7上安装Apache Maven 3.5

如何在CentOS 7上安装Apache Maven 3.5

Apache Maven是一个免费的开源软件项目管理工具,被广泛用于部署基于Java的应用程序。先决条件

如何在CentOS 7上安装和配置GoCD

如何在CentOS 7上安装和配置GoCD

使用其他系统?GoCD是一个开源的持续交付和自动化系统。它允许您使用其并行的

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。