如何在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堆栈。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息