如何在Ubuntu 18.04上安装Elasticsearch Logstash Kibana(Elastic Stack)
在本教程中,您将学习在Ubuntu 18.04上安装Elastic stack。
弹性堆栈(以前称为ELK堆栈)是Elastic Company的用于集中式日志记录的免费或者开源软件的集合或者堆栈。
它使您能够以多种格式搜索,分析和可视化来自不同来源的日志。
集中式日志记录有助于从公共角度识别服务器或者应用程序问题。
Elastic Stack组件
弹性堆栈包括4个主要组件。
- Elasticsearch:这是一个RESTful搜索引擎,用于存储或者保存所有收集的数据
- Logstash:这是处理数据并将其解析为弹性搜索的组件
- Kibana:这是一个可视化日志的Web界面
- Beats:这些是轻量级的数据传送器,可将日志从成百上千的服务器传送到配置了ELK的中央服务器。
现在让我们看看如何在Ubuntu 18.04上安装Elastic stack。
前提条件
在开始安装之前,请确保您具有以下基础结构。
话虽如此,让我们深入研究并开始在Ubuntu上安装Elastic stack。
首先,我们将把Elasticsearch的公共GPG密钥导入APT。
Elastic Stack软件包通常使用Elasticsearch签名密钥进行签名,以保护您的系统免受软件包欺骗的侵害。
另外,通过身份验证的程序包被程序包管理器认为是受信任的。
1.在Ubuntu上安装Elasticsearch
要导入GPG密钥,请运行:
接下来,使用以下命令将Elastic存储库添加到sources.list.d
目录中。
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
现在,使用以下命令更新系统的存储库。
sudo apt update
现在,使用以下命令安装Elasticsearch。
sudo apt install elasticsearch
Elasticsearch侦听端口9200。
但是,我们将限制外部访问,以使外部方无法访问数据并关闭弹性集群。
也就是说,我们将对Elasticsearch配置文件进行一些修改,如下所示
2.在Ubuntu上配置Elasticsearch
找到" network.host"属性并取消注释,并添加" localhost"作为其值。
同时取消注释" http.port"属性。
sudo nano /etc/elasticsearch/elasticsearch.yml
接下来,启动并启用Elasticsearch服务,如图所示。
network.host: localhost http.port: 9200
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
此时,Elasticsearch应该已启动并正在运行。
您可以通过运行以下命令来验证这一点。
systemctl status elasticsearch
您也可以使用如图所示的netstat
命令。
同样,您可以如图所示运行curl
命令。
netstat -pnltu
curl -X GET "localhost:9200"
我们已经完成了Elasticsearch的安装和配置。
接下来,我们将安装和配置Logstash。
我们将要安装的Elastic stack的第二个组件是Logstash。
Logstash将负责使用filebeat数据发送程序从各种服务器收集和集中日志。
然后它将过滤系统日志数据并将其中继到Elasticsearch。
3.安装和配置Logstash
首先,让我们确认OpenSSL正在运行。
为此,请运行。
openssl version -a
要安装Logstash,请运行以下命令。
sudo apt install logstash -y
接下来,编辑/etc/hosts
文件并添加以下内容。
其中18.224.44.11是masterELk服务器的IP地址。
18.224.44.11 elk-master
然后,我们将生成SSL证书密钥,以保护从客户端文件拍到logstash服务器的日志数据传输安全。
为此,首先,在logstash配置目录"/etc/logstash"下创建一个新的SSL目录,并导航到该目录。
现在,您可以生成SSL证书,如下所示。
mkdir -p /etc/logstash/ssl cd /etc/logstash/
接下来,我们将为logstash创建新的配置文件。
我们将创建一个配置文件" filebeat-input.conf"作为来自文件beat的输入文件,创建" syslog-filter.conf"用于进行syslog处理,最后创建一个" output-elasticsearch.conf"文件来定义Elasticsearch输出。
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目录,然后在" 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" } }
对于处理日志数据的系统日志,我们使用名为" grok"的过滤器插件来解析系统日志文件。
创建一个新配置" 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" ] } } }
最后,为弹性搜索输出创建一个名为" 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服务。
要验证Logstash是否正在运行,请运行命令。
sudo systemctl enable logstash sudo systemctl start logstash
示例输出
sudo systemctl status logstash
您也可以使用如图所示的netstat
命令。
netstat -pnltu
4.在Ubuntu上安装和配置Kibana
接下来,我们将使用以下命令安装Kibana。
sudo apt install kibana -y
接下来,我们将对kibana配置文件进行一些修改。
找到并取消注释以下属性。
vim /etc/kibana/kibana.yml
保存并退出文本编辑器。
server.port: 5601 server.host: "localhost" elasticsearch.url: "https://localhost:9200"
然后启用并启动Kibana服务:
sudo systemctl enable kibana sudo systemctl start kibana
您可以使用" netstat"命令确认kibana是否在默认端口5601上运行,如图所示。
netstat -pnltu
5.安装和配置NGINX作为Kibana的反向代理
我们将NGINX用作kibana仪表板的反向代理。
您需要安装Nginx和" Apache2-utils",如下所示。
sudo apt install nginx apache2-utils -y
接下来,创建一个名为kibana的新虚拟主机文件。
vim /etc/nginx/vim sites-available/kibana
将以下内容粘贴到虚拟主机文件中
server { listen 80; server_name localhost; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.kibana-user; location/{ proxy_pass https://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; } }
保存并退出文本编辑器。
接下来,如图所示,使用htpasswd命令为kibana仪表板创建基本身份验证。
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服务器。
在此步骤中,我们将在elk-master服务器上配置filebeat数据发送程序。
这会将所有系统日志消息中继到logstash,kibana将对其进行处理和可视化。
systemctl enable nginx systemctl restart nginx
6.安装和配置Filebeat
要安装filebeat,请运行:
sudo apt install filebeat
接下来,打开filebeat配置文件。
sudo vim /etc/filebeat/filebeat.yml
我们将使用Logstash对Filebeat收集的数据执行附加处理。
不需要Filebeat将任何数据直接发送到Elasticsearch。
因此,如图所示,找到elasticsearch部分并对其进行注释。
#output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"]
接下来,前往Logstash部分并取消注释,如图所示。
output.logstash: # The Logstash hosts hosts: ["localhost:5044"]
通过将"已启用"行值更改为" true"来启用文件。
enabled: true
指定要发送到logstash服务器的系统日志文件。
在此示例中,我们将添加ssh日志文件" auth.log"和syslog文件。
paths: - /var/log/auth.log - /var/log/syslog
保存并退出。
最后,将logstash证书文件logstash-forwarder.crt复制到"/etc/filebeat"目录。
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
现在启动并启用filebeat。
systemctl start filebeat systemctl enable filebeat
要检查filebeat的状态,请运行:
systemctl status filebeat
7.测试Elasticsearch Stack
要测试我们的弹性堆栈,请打开浏览器并浏览服务器的IP,然后浏览端口5601,这是kibana监听的端口。
ip-address:5601
输入用户名和密码,稍后,将显示以下屏幕。
单击"发现"选项卡,然后单击" Filebeat"。
将出现以下界面,为您提供实时可视化数据流。