Featured image of post 最简化 Elasticsearch & Kibana & Filebeat 安装说明

最简化 Elasticsearch & Kibana & Filebeat 安装说明

这可能是最简洁的 Elastic Stack搭建说明,立刻开启你的日志集中式管控

elk

本文描述如何搭建一套具备用户名和密码安全认证的 Elastic Stack 系统,并开始使用 Filebeat 的基础模块实现分布式的日志收集。

  • 安装单节点 Elasticsearch 服务器,启用用户名和密码安全认证,并创建 TLS 数字证书备用
  • 安装 Kibana 服务器,并配置与 Elasticsearch 服务的连接
  • 安装和配置 Filebeat 代理程序,并配置 system 和 auditd 模块
  • 使用 Kibana 监控 Filebeat 所采集的系统日志,并监控系统的状态

为了使你也获得与我一致的安装和测试体验,请先下载并浏览相本文所使用的代码库:https://github.com/martinliu/elastic-labs

试验环境概述和启动

本文所使用相关软件以及版本。

  • macOS Catalina version 10.15.3
  • Vagrant 2.2.4
  • VirtalBox 6.0
  • 操作系统镜像: bento/centos-8 (virtualbox, 202002.04.0)
  • Elastic Stack 安装包(RPM)
    • Elasticsearch 7.6.1
    • Kibana 7.6.1
    • Filebeat 7.6.1
  • 使用 Vagrant 的目录共享功能,分享安装包到测试机的 /vagrant/rpm 目录下

注意事项:

  1. 你也可以使用任何一台 CentOS 8 虚拟机或者云主机,则后续的安装命令和 rpm 安装包的路径需要有所变化。
  2. Vagrant 文件中定义的虚拟机配置为 4 GB 内存,建议你的操作系统最低为 8GB 内存,推荐 16GB 或者更高,
  3. 本文也适用于 Linux 或 Windows 操作系统的 Vagrant 测试环境,需要提前下载并且准备好 bento/centos-8 的基础操作系统镜像。

启动测试环境。

1
2
vagrant up
vagrant status

安装 Elasticsearch 服务器

SSH 登录测试虚拟机。

vagrant ssh

执行 RPM 安装命令,安装 elasticsearch 服务器。

1
2
3
4
5
6
cd /vagrant/rpm
sudo rpm -ivh  ./elasticsearch-7.6.1-x86_64.rpm
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
sudo systemctl status elasticsearch.service

测试 Elasticsearch 服务是否功能正常 【 Dry run 】

curl localhost:9200

期待的输出类似下面。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "name" : "elk-master",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "X4V2Yvc-SJ6ccjWbXQ5OmQ",
  "version" : {
    "number" : "7.6.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
    "build_date" : "2020-02-29T00:15:25.529771Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

浏览和学习 Elasticsearch 默认的配置文件。

sudo cat /etc/elasticsearch/elasticsearch.yml

使用 Elasticsearch 的精简版目标测试配置文件。

1
2
3
sudo cp /vagrant/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml
sudo systemctl restart  elasticsearch.service
sudo systemctl status   elasticsearch.service

手工查看 Elasticsearch 服务器的日志,并确认服务启动正常。

sudo tail -f /var/log/elasticsearch/my-elk.log

Ctl + c 终止以上日志查看,再次测试 Elasticsearch 服务。

curl localhost:9200

替换为 IP 地址测试。

curl http://192.168.50.10:9200/

配置 Elasticsearch 服务的 TLS 数字证书和身份验证

停止 Elasticsearch 服务。

sudo systemctl stop elasticsearch.service

创建 TLS 数字证书

1
2
3
cd /usr/share/elasticsearch
sudo bin/elasticsearch-certutil cert -out /etc/elasticsearch/elastic-certificates.p12 -pass ""
sudo chmod 660 /etc/elasticsearch/elastic-certificates.p12

更新 Elasticsearch 配置文件

手工打开 Elasticsearch 配置文件。

sudo vi /etc/elasticsearch/elasticsearch.yml

在配置文件的末端增加下面的配置段落。

1
2
3
4
5
6
# ------------------------------- TLS and Cert ---------------------------------
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

重新启动配置 Elasticsearch 服务。

1
2
sudo systemctl restart  elasticsearch.service
sudo systemctl status  elasticsearch.service

确认服务已经正常启动。

sudo tail -f /var/log/elasticsearch/my-elk.log

创建 Elasticsearch 服务的用户密码

运行 Elasticsearch 的密码配置工具,为各种内置用户生成随机的密码。

1
2
sudo cd /usr/share/elasticsearch
sudo bin/elasticsearch-setup-passwords auto

将生成的密码信息妥善保存备用。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Changed password for user apm_system
PASSWORD apm_system = AHyg5HzJRZg8Fiva0buW

Changed password for user kibana
PASSWORD kibana = Kt72IXkiarlGr7do02Yp

Changed password for user logstash_system
PASSWORD logstash_system = Q9nnlOdf6V9kyPbbhqN7

Changed password for user beats_system
PASSWORD beats_system = bLNrZDggPKRSKc35EG32

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = o1pi2yTDnhrKBGcS6xqP

Changed password for user elastic
PASSWORD elastic = RO11xymgXTCD16ivTP33

在浏览器中访问http://192.168.50.10:9200/ ,测试并确认上面的 elastic 用户的密码。

安装和配置 Kibana 服务器

执行 Kibana 安装命令

1
2
cd /vagrant/rpm/
sudo rpm -ivh  kibana-7.6.1-x86_64.rpm

查看并学习 Kibana 默认配置文件

sudo cat /etc/kibana/kibana.yml

更新默认配置文件,准备好 elastic 用户的密码,将其更新到 Kibana 配置文件中。

1
2
3
sudo cp /vagrant/kibana/kibna.yml /etc/kibana/kibana.yml
sudo systemctl start  kibana.service
sudo systemctl status   kibana.service

查看重启的服务是否工作正常。

sudo tail -f /var/log/messages

在浏览器里测试登录 Kibana http://192.168.50.10:5601 ,使用 elastic 的用户名和密码。

安装 filebeat 并配置 2 个模块

执行 Filebeat 安装包。

1
2
cd /vagrant/rpm
sudo rpm -ivh ./filebeat-7.6.1-x86_64.rpm

查看默认的 Filebeat 配置文件。

sudo cat /etc/filebeat/filebeat.yml

更新默认配置文件,准备好 elastic 用户的密码,将其更新到 Kibana 配置文件中。

sudo cp /vagrant/filebeat/filebeat.yml /etc/filebeat/filebeat.yml

查看 Filebeat 的默认日志监控模块。

sudo filebeat modules list

启用 Filebeat 的 System 和 Auditd 模块,监控系统日志和基础的操作系统安全信息。

sudo filebeat modules enable system auditd

查看 Filebeat 监控模块的配置文件。

1
2
sudo cd /etc/filebeat
sudo ls -l modules.d/

建议查看以上启用的 System 和 Auditd 模块的配置文件。

运行 Filebeat 在后台的初始化命令,在后台创建 Filebeat 所需要的索引 filebeat-* ,并导入所有模块相关的 Dashboard 等 Kibana 日志可视化分析工具。

sudo filebeat setup

在浏览器中登录 http://192.168.50.10:5601 Kibana 后,点击左侧的 Dashboard 图标,查看所有刚才导入的内容,搜索并打开 System 关键字的 Dasboard。

在启动日志收集代理 Filebeat 服务前,运行一下命令测试 Filebeat 配置文件的正确性。

sudo filebeat test config

启动 Filebeat 服务,开始对这台操作系统的日志进行监控。

1
2
sudo systemctl start filebeat
sudo systemctl status filebeat

建议的测试

  1. 点击左侧的 Dicovery 图标,选中 Filebeat-* 索引,打开并一条日志数据,并查看所有字段;用 KQL 进行全文搜索。
  2. 点击左侧的 Dashboard 图标,搜索 system 关键字,查看一个仪表板的日志展示;搜索 audit 关键字,并查打开一个仪表板,在命令行中尝试 ssh localhost,多尝试几次,刷新 Audit 仪表板,观察数据是否发生了变化。
  3. 点击左侧的 Logs 图标,用鼠标上下滚动日志信息流, 点击右上角的开始 Live Stream 查看模式,观察日志信息流的自动滚动效果,在 KQL 搜素框中输入 tags : demo-service ,体验它的搜索建议功能,在 Highlight 中输入 http://192.168.50.10:5601/app/infra ,观察日志信息流显示的变化。
  4. 点击左侧的 SIEM 图标,看看这里都有什么内容。

后续

  • 用启用 Filebeat 的 Elasticsearch, Kibana 日志监控模块
  • 安装 Apache, MySQL 等软件,并开启 Filebeat 的日志监控模块

参考文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html

comments powered by Disqus
本博客始于 2007 年
使用 Hugo 构建
主题 StackJimmy 设计