Elastic Stack Workshop | 刘征 Developer Advocate @ Elastic

Version 0.2.5

搜索、观测、保护三大解决方案实战教程,各种级别和类型的学习资料,欢迎一起学习和共建。

在 CentOS 上安装 Elastic Stack 7.16

本文讲解如何在 CentOS 上安装 Elastic Stack 7.16.3。测试环境有两台虚拟机组成。

参考文章:刘晓国的博客 - Elastic:在 CentOS 上一步一步安装 Elastic Stack

Elasticsearch 的各种安装包类型,以及和所适合环境的建议。

es support matrix

以下是本实验建议的环境概况:

  • 虚拟机 1

    • Elasticsearch
    • Kibana
  • 虚拟机 2

    • Logstash
    • MetricBeat

虚拟机配置推荐:

  • 虚拟机 1

    • CPU x 2, 内存 4+GB,磁盘 8+GB
    • 私有/共有 IP 地址,开放端口:22、5601、9200;下文是:192.168.1.141 。
  • 虚拟机 2

    • CPU x 1, 内存 2+GB,磁盘 8+GB
    • 私有/共有 IP 地址,开放端口:22;下文是:192.168.1.132 。

注意:这里使用的虚拟机可以是云主机,也可以是本地创建的虚拟机,用 Vagrant 创建本地虚拟机的方法参看:刘晓国的博客 - Elastic:在 CentOS 上一步一步安装 Elastic Stack

网络示意图

建议通过使用两个虚拟机可以达到最佳的练习效果,如果条件有限,至少准备一个虚拟机,配置不低于虚拟机 1。本文使用的操作系统是 CentOS 8;。

安装 Elasticsearch 服务器

系统准备

首先 SSH 登陆至虚拟机 1,执行下面的命令,完成设置主机名,关闭防火墙,测试虚拟机 2 是否可以ping通。

hostnamectl set-hostname elk-1
systemctl status firewalld
systemctl stop firewalld
ping 192.168.1.132

SSH 登陆虚拟机 2,执行下面的命令,完成设置主机名,关闭防火墙,测试虚拟机 1 是否可以 ping 通;安装 Logstash 所需要的 JDK,并验证 java 版本。

hostnamectl set-hostname beat-1
systemctl status firewalld
systemctl stop firewalld
ping 192.168.1.141
yum install -y java-1.8.0-openjdk
java -version

选择最优 YUM 源

如果你使用的是国外公有云的虚拟机,请直接使用 Elastic 官方网站提供的 yum 源服务器。

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

本文使用清华的镜像站点:https://mirror.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.16.3/

你在国内各大云厂商的开源镜像网站上都可以找到 Elastic Stack 的 yum 安装源。

安装 Elasticsearch 软件包

在虚拟机1中,执行如下免 yum repo 配置的 rpm 软件包安装命令:

yum install -y https://mirror.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.16.3/elasticsearch-7.16.3-x86_64.rpm

查看默认的 Elasticsearch 配置文件,在最后增加以下四行:

cluster.name: elk101
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true

注释:0.0.0.0 意味着 Elasticsearch 将响应任何网段的访问请求。

用 vi 在原有配置文件的最后增加四行新配置参数。

vi /etc/elasticsearch/elasticsearch.yml

启动 Elasticsearch 服务:

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
systemctl status elasticsearch

检查 Elasticsearch 服务的状态和日志:

systemctl status elasticsearch
ls /var/log/elasticsearch/
tail -f /var/log/elasticsearch/elk101.log
journalctl --unit elasticsearch

为 Elasticsearch 系统的所有内置账户设置统一密码 elastic101 ,使用一下命令,并在提示符中输入相同密码之后按回车继续。「仅限测试目的」。

[[email protected] ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive -b
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
[[email protected] ~]

在浏览器里访问 Elasticsearch IP地址 + 服务端口址网址,验证密码:<http://192.168.1.141:9200>;使用用户名密码【elastic / elastic101】登陆,应该能够看到下面的结果:

{
  "name": "elk-1",
  "cluster_name": "elk101",
  "cluster_uuid": "dI50FfQtTlq13wlLI93fCw",
  "version": {
    "number": "7.16.3",
    "build_flavor": "default",
    "build_type": "rpm",
    "build_hash": "4e6e4eab2297e949ec994e688dad46290d018022",
    "build_date": "2022-01-06T23:43:02.825887787Z",
    "build_snapshot": false,
    "lucene_version": "8.10.1",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}

安装 Kibana 服务

SSH 登陆到虚拟机1 上,使用 Elasticserach 所选择的 yum 安装源服务器,执行如下安装命令:

yum install -y https://mirror.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.16.3/kibana-7.16.3-x86_64.rpm

用 vi 从上到下的查看 Kibana 的默认配置参数,vi /etc/kibana/kibana.yml ;并在最后增加下面的内容:

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: elastic
elasticsearch.password: elastic101
i18n.locale: zh-CN
server.publicBaseUrl: http://192.168.1.141:5601

注释:0.0.0.0 意味着 Kibana 将响应任何网段的访问请求。

启动 Kibana 服务:

systemctl daemon-reload
systemctl enable kibana
systemctl start kibana

使用下面的命令检查 Kibana 的状态和日志:

systemctl status kibana
tail -f /var/log/messages

在浏览器里访问 Kibana 服务的 ip + 端口网址: http://192.168.1.141:5601;使用用户名密码【elastic / elastic101】登陆,你应该能够看到 Kibana 登陆后的中文界面。点击 “自己浏览” 按钮进入界面。

点击 “试用样例数据” 链接,添加并且浏览三组 Kibana 内置的样例数据。

安装 Logstash 服务

SSh 登陆到虚拟机 2。先安装 Logstash ,使用 csv 插件导入数据文件到 Elasticsearch 中。

yum install -y https://mirror.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.16.3/logstash-7.16.3-x86_64.rpm

在 /tmp 目录下创建名为 bitcoin 的目录,用 vi 命令在 /tmp/bitcoin 目录下,创建名为 mtgoxusd.csv 的数据文件,该数据文件到内容如下。

Date,Open,High,Low,Close,Volume (BTC),Volume (Currency),Weighted Price
2014-02-25,173.2,173.84343,101.62872,135.0,29886.7532397,3667985.39624,122.729470372
2014-02-24,314.99996,316.78999,131.72093,173.871,94594.0225893,17590531.0124,185.958166604
2014-02-23,260.70495,348.98,220.1,309.99971,38395.103758,11051773.3535,287.843299581
2014-02-22,111.0,290.52557,96.6345,255.53,71861.2880229,11632970.1851,161.88090285
2014-02-21,111.61995,160.0,91.5,111.4,82102.9295521,9798282.70207,119.341450488

注释:这里使用手工创建的 csv 数据文件,你也可以在此处下载网上的任何 csv 格式数据文件。使用自带的 csv 数据文件的话,需要修改一下下面的流水线配置文件,修改表头为合适的字段名称。

用 vi 命令创建logstash 流水线配置文件 vi /etc/logstash/conf.d/csv-loading.conf,csv-loading.conf 配置文件的内容如下:

input {
  file {
    path => "/tmp/bitcoin/*.csv"
    start_position => "beginning"
  }
}
filter {
  csv {
    separator => ","
    #Date,Open,High,Low,Close,Volume (BTC),Volume (Currency),Weighted Price
    columns => ["Date","Open","High","Low","Close","Volume (BTC)", "Volume (Currency)" ,"Weighted Price"]
  }
}
output {
  elasticsearch {
    hosts => "http://192.168.1.141:9200"
    user  => elastic
    password => elastic101
    index => "bitcoin-prices"
  }
}

启动 Logstash 服务。

systemctl enable logstash
systemctl start logstash
systemctl status logstash
journalctl --unit logstash

观察 logstash 服务的状态是否正常,如果服务日志中有错误出现,请排错后在继续后续操作。

使用命令 tail -f /var/log/logstash/logstash-plain.log 查看 Logstash 服务的输出文件。

在 Kibana 中执行以下操作流程,查看由 Logstash 所导入的数据:

  • 登陆 Kibana 后,点击左侧的菜单
  • 在 ‘索引管理’ 菜单中,中查看并确认名为 ‘bitcoin-prices’ 的索引是否存在。
  • 进入 ‘索引模式‘ 菜单,并起创建名为 ’bitcon*‘ 的索引模式。
  • 在 ‘Discovery’ 菜单中,使用索引模式切换下拉菜单,切换到 ‘bitcon*’ 索引模式,浏览导入的5条数据。

5条数据

安装 Metricbeat 服务

Logstash 的输入插件中包含 Metricbeat ,但是在这个本实验练习中,我们并不打算使用 Logstash 对 Metricbeat 所采集到的数据进行任何数据加工操作;而且所有虚拟机都在同一个网段中,也没有必要用 Logstash 对 Metricbeat 的数据进行转发。在既不使用 Lostash 的数据转化处理(ETL)功能,也不需要使用 Logstahs 做跨网段转发的情况下,是完全不需要使用 Metricbeat/Filebeat 和 Logstash 的集成的。

Metricbeat 是系统性能监控模块,ssh 登陆到虚拟机 2,安装 Metricbeat 采集这个服务器的操作系统性能指标。

yum install -y https://mirror.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.16.3/metricbeat-7.16.3-x86_64.rpm

进入 Metricbeat 的配置文件目录 cd /etc/metricbeat/,查看 Metricbeat 的配置目录,熟悉目录中的结构和文件。

初始化 Metricbeat 索引,在命令行下运行下面的命令,根据你的网络环境替换其中的相关参数。

metricbeat setup -e  --index-management   --dashboards \
  -E output.elasticsearch.hosts=['192.168.1.141:9200']   \
  -E output.elasticsearch.username=elastic   \
  -E output.elasticsearch.password=elastic101   \
  -E setup.kibana.host=192.168.1.141:5601

从上到下的查看 Metricbeat 配置文件内容, vi /etc/metricbeat/metricbeat.yml

在当前目录下创建名为 mb.yml 的文件,内容如下:

metricbeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true
  reload.period: 10s

output.elasticsearch:
  hosts: ["192.168.1.141:9200"]
  username: "elastic"
  password: "elastic101"

setup.ilm.check_exists: false
logging.level: error
queue.spool: ~
monitoring.enabled: true

备份默认配置文件,并用以上 mb.yml 配置文件替换默认文件。

mv /etc/metricbeat/metricbeat.yml /etc/metricbeat/metricbeat.yml.bk
cp mb.yml /etc/metricbeat/metricbeat.yml

测试配置文件的语法的正确性,测试与 Elasticsearch 服务器的连接配置参数。

metricbeat test config
metricbeat test output

注释:以上 test configtest config Beat 测试命令也同样适用于其他的 Beat,如: FileBeat、AuditBeat 等。

启动并查看 Metricbeat 服务的状态。

systemctl enable  metricbeat
systemctl start  metricbeat
systemctl status  metricbeat

用如下命令查看 Metricbeat 的采集模块有哪些。

metricbeat modules list

从输出中,我们可以看到 Metricbeat 默认启用了操作系统性能采集模块。

在 Kibana 中查看 Metricbeat 的相关仪表板:

  • 打开 Kibana 界面
  • 打开左侧菜单栏,点击 ‘Dashboard’ 选项
  • 在页面的搜索框中输入 system 后,查看 Metricbeat 自带的仪表板,它们都是是 metricbeeat setup 命令导入的。
  • 点击查看名为 “[Metricbeat System] Overview ECS” 的仪表板。 在 System Overview 和 Host Overview 的两个视图中切换查看所采集到的性能数据。
  • 进入左侧 ‘Observabile’ 菜单下面的 ’概览‘选项。查看指标下面的,名为 beat-1 的主机。

可观测性

管理 Elastic Stack

登陆 Kibana ,在 Management 菜单中点击 “堆栈监测”, 并点击 ok 按钮确认,启用 Elastic Stack 的自监控功能,查看集群 elk101 的监控信息。

集群自监控

在 Stack Management 菜单中查看下面的重要选项,熟悉 Elastic Stack 的主要管理功能:

  • 索引管理
  • 用户
  • 角色
  • 索引模式

其它扩展练习【可选】

用上面所学到的知识,自行完成如下的扩展测试练习。

  1. 在 虚拟机1 上安装 Metricbeat ,并启用 Elasticstarch 和 Kibana 采集模块。
  2. 在两个虚拟机上安装配置 Filebeat,并启用 操作系统日志采集模块。
  3. 在 虚拟机2 上下载另外的大数量 csv 文件,尝试将其加载到 Elasticsearch 中,并在 Kibana中对其分析。

扩展工作坊推荐:

官方参考文档:

Last updated on 2017-10-17
Published on 2017-10-17
 Edit on GitHub