如何在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权限
我们将要做什么?
- 安装弹性
- 安装Java
- 安装和配置ElasticSearch
- 安装和配置Kibana
- 安装和配置Nginx作为Kibana的反向代理
- 安装和配置Logstash
- 在Ubuntu 18.04上安装和配置Filebeat
- 在CentOS 7.5上安装和配置Filebeat
- 测试
第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 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 '目录。
安装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现在已启动并运行,请使用下面的netstat命令netstat和curl命令进行检查。
netstat -plntu
curl -XGET 'localhost:9200/?pretty'
现在,您将获得弹性搜索版本“6.2.4”在默认端口“9200”上运行。
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仪表板安装已完成。
安装和配置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仪表板的反向代理已经完成。
安装和配置Logstash
本指南的弹性的最后一个组件是“Logstash”。 我们将安装和配置Logsatash以使用filebeat集中来自客户端源的服务器日志,然后过滤并转换所有数据(Syslog)并将其传输到存储(Elasticsearch)。
在安装logstash之前,请确保检查OpenSSL版本是否为您的服务器。
openssl version -a
对于本指南,我们将使用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
使用下面的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 .
接下来,通过添加弹性键并添加弹性存储库来安装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服务。
systemctl status filebeat
tail -f /var/log/filebeat/filebeat
filebeatshippers已在Ubuntu 18.04服务器下启动并运行。
第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 .
接下来,通过添加弹性键并添加弹性存储库来安装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服务。
systemctl status filebeat
tail -f /var/log/filebeat/filebeat
filebeatshippers在CentOS 7.5服务器下启动并运行。
第4步 - 测试
打开Web浏览器并输入弹性域名,我的是:'elastic-stack.io'。
系统将提示您从基本身份验证到Kibana仪表板的用户名和密码。
使用您的密码键入用户名'elastic'。
现在您将获得美丽的kibana仪表板,单击右侧的“设置索引模式”按钮。
定义'filebeat- *'索引模式,然后单击“下一步”按钮。
对于“时间过滤器字段名称”,选择“@timestamp”并单击“创建索引模式”。
并且已创建filebeat索引模式。
接下来,我们将尝试在每个客户端服务器的elk-client01'Ubuntu系统和'elk-client02'CentOS系统上获取SSH登录的日志信息失败。
在Kibana仪表板内,单击“发现”菜单以获取所有服务器日志。
将'beat.hostname'设置为'elk-client01'服务器,'source'是'/var/log/auth.log'文件,您将得到如下所示的结果。
以下是来自'auth.log'文件的SSH失败密码的示例日志详细信息。
对于'elk-client02'CentOS服务器,将'beat.hostname'设置为'elk-client02'服务器,'source'是'/ var / log / secure'文件,您将得到如图所示的结果下面。
以下是来自“安全”文件的SSH失败密码的示例日志详细信息。
Elastic Stack和Elastic Beat'Filebeat'安装和配置已成功完成。