作者选择了 计算机历史博物馆作为 写给捐赠计划的一部分接受捐赠。
介绍
Metricbeat,它是帮助将不同类型的服务器数据发送到 Elastic Stack服务器的几种 Beats之一,是一个轻量级的数据发送器,一旦安装在您的服务器上,会定期收集系统和每个过程的CPU和内存统计数据,并将数据直接发送到您的Elasticsearch部署。
目前可用的其他 Beats 来自 Elastic 是:
- Filebeat:收集和发送日志文件. * Packetbeat:收集和分析网络数据. * Winlogbeat:收集Windows事件日志. * Auditbeat:收集Linux审计框架数据并监控文件完整性。
在本教程中,您将使用 Metricbeat 传输本地系统指标,如 CPU/memory/disk 使用率和网络利用率,从 CentOS 7 服务器到安装了 Elastic Stack 的同类服务器。
前提条件
要遵循本教程,您将需要:
- 2个CentOS 7服务器,由遵循[与CentOS 7的初始服务器设置 (https://andsky.com/tech/tutorials/initial-server-setup-with-centos-7)指南而设置,包括一个拥有sudo权限的非root用户和一个用"防火墙"设置的防火墙. 要设置"防火墙",遵循[新CentOS 7 服务器的附加建议步骤 (https://andsky.com/tech/tutorials/additional-recommended-steps-for-new-centos-7-servers)教程的["配置基本防火墙"(https://andsky.com/tech/tutorials/additional-recommended-steps-for-new-centos-7-servers# configuring-a-basic-firewall)部分. 在一个服务器上,您将下载
弹性堆栈
;这个教程将将此称为弹性堆栈服务器
。 弹性 Stack 服务器将在此教程中拥有 4GB RAM 和 2 CPU, 将监视您的第二个服务器 。 这个第二个服务器将被称为"第二个CentOS服务器". - Elastic Stack 安装在Elastic Stack 服务器上的方法是遵循 [如何在 CentOS 7上安装 Elasticsearch, Logstash, and Kibana (Elastic Stack) (https://andsky.com/tech/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-centos-7). .
注意:在安装 Elastic Stack 时,您必须在整个堆栈中使用相同的版本. 在本教程中,您将使用整个堆栈的最新版本,这些版本在本文写作时是 Elasticsearch 6.7.0、Kibana 6.7.0、Logstash 6.7.0 和 Metricbeat 6.7.0。
步骤 1 — 配置 Elasticsearch 以收听外部 IP 上的流量
教程 How To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7仅限制了Elasticsearch访问到本地主机
。在实践中,这是罕见的,因为您通常需要监控许多主机。
登录您的 Elastic Stack 服务器作为您的非根用户:
1[environment local]
2ssh sammy@Elastic_Stack_server_ip
使用您喜爱的文本编辑器来编辑 Elasticsearch 的主要配置文件 elasticsearch.yml
. 本教程将使用 vi
:
1sudo vi /etc/elasticsearch/elasticsearch.yml
查找下面的部分,并修改它,以便Elasticsearch在所有界面上收听。通过按i
来输入插入模式,然后添加以下突出的项目:
1[label /etc/elasticsearch/elasticsearch.yml]
2...
3network.host: 0.0.0.0
4...
地址0.0.0.0
在某些情况下被赋予了特定含义,在这种情况下,0.0.0.0
意味着任何IPv4地址
。
完成後,請按「ESC」來離開插入模式,然後按「:wq」和「ENTER」來儲存和退出檔案。 若要了解更多關於文本編輯器 vi 及其繼任者 Vim 的資訊,請參閱我們的教程 在雲端伺服器上安裝和使用 Vim 文本編輯器。
1sudo systemctl restart elasticsearch
现在,允许从第二个 CentOS 服务器访问 Elasticsearch 端口. 为了配置来自特定 IP 地址或子网的访问,请使用 firewalld
的 rich rule功能:
1sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="second_centos_server_ip/32" port protocol="tcp" port="9200" accept'
丰富的规则允许您创建更复杂和可自定义的防火墙
规则,以获得对防火墙的更大控制权. 在此命令中,您正在添加一个规则,该规则接受从源
的ipv4
流量,您将其设置为第二个CentOS服务器的IP地址,到您的Elastic Stack服务器的端口``9200
。
接下来,重新加载firewalld
以激活新规则:
1sudo firewall-cmd --reload
如果您的服务器位于同一个 网络,您可以使用网络上的所有主机使用一个规则允许访问。
接下来,测试连接. 登录您的第二个 CentOS 服务器作为您的非根用户:
1[environment local]
2ssh sammy@second_centos_server_ip
使用curl
命令来测试与 Elastic Stack 服务器的连接:
1[environment second]
2curl Elastic_Stack_server_ip:9200
您将收到类似于以下的输出:
1[environment second]
2[secondary_label Output]
3{
4 "name" : "tl5Is5f",
5 "cluster_name" : "elasticsearch",
6 "cluster_uuid" : "W9AcSNWHQ3mYs2uE8odklA",
7 "version" : {
8 "number" : "6.7.0",
9 "build_flavor" : "default",
10 "build_type" : "rpm",
11 "build_hash" : "3bd3e59",
12 "build_date" : "2019-03-06T15:16:26.864148Z",
13 "build_snapshot" : false,
14 "lucene_version" : "7.6.0",
15 "minimum_wire_compatibility_version" : "5.6.0",
16 "minimum_index_compatibility_version" : "5.0.0"
17 },
18 "tagline" : "You Know, for Search"
19}
现在你知道连接工作了,你已经准备好将指标发送到你的 Elastic Stack 服务器。
步骤 2 — 在 Elastic Stack 服务器上安装和配置 Metricbeat
在接下来的两个步骤中,您将首先在 Elastic Stack 服务器上安装 Metricbeat 并导入所有必要的数据,然后在第二个 CentOS 服务器上安装和配置客户端。
登录您的 Elastic Stack 服务器,作为您的非根用户:
1[environment local]
2ssh sammy@Elastic_Stack_server_ip
由于您先前设置了 Elasticsearch 存储库作为先决条件,您只需要安装 Metricbeat:
1sudo yum install metricbeat
一旦安装完成,请将索引模板加载到 Elasticsearch. 一个 Elasticsearch index 是具有相似特征的文档集合。 特定名称识别每个索引,Elasticsearch 在执行各种操作时会用来参考索引。
要加载模板,请使用以下命令:
1sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'
您将看到以下结果:
1[secondary_label Output]
2Loaded index template
Metricbeat 配备了类似的 Kibana 仪表板、可视化和搜索,以便在 Kibana 中可视化 Metricbeat 数据. 在您使用仪表板之前,您需要创建索引模式并将仪表板加载到 Kibana。
要加载模板,请使用以下命令:
1sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
你会看到这样的输出:
1[secondary_label Output]
2...
32019-03-20T09:51:32.096Z INFO instance/beat.go:281 Setup Beat: metricbeat; Version: 6.7.0
42019-03-20T09:51:32.136Z INFO add_cloud_metadata/add_cloud_metadata.go:323 add_cloud_metadata: hosting provider type detected as digitalocean, metadata={"instance_id":"133130541","provider":"digitalocean","region":"fra1"}
52019-03-20T09:51:32.137Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
62019-03-20T09:51:32.137Z INFO [publisher] pipeline/module.go:110 Beat name: elastic
72019-03-20T09:51:32.138Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
82019-03-20T09:51:32.140Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0
92019-03-20T09:51:32.148Z INFO template/load.go:130 Template already exists and will not be overwritten.
102019-03-20T09:51:32.148Z INFO instance/beat.go:894 Template successfully loaded.
11Loaded index template
12Loading dashboards (Kibana must be running and reachable)
132019-03-20T09:51:32.149Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
142019-03-20T09:51:32.150Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0
152019-03-20T09:51:32.151Z INFO kibana/client.go:118 Kibana url: http://localhost:5601
162019-03-20T09:51:56.209Z INFO instance/beat.go:741 Kibana dashboards successfully loaded.
17Loaded dashboards
现在你可以开始Metricbeat:
1sudo systemctl start metricbeat
要让 Metricbeat 从现在开始自动启动,请使用启用
命令:
1sudo systemctl enable metricbeat
Metricbeat 将开始将您的系统统计数据发送到 Elasticsearch。
要验证 Elasticsearch 是否确实收到这些数据,请使用此命令查询 Metricbeat 索引:
1curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'
您将看到一个类似于此的输出:
1[secondary_label Output]
2...
3{
4 "took" : 3,
5 "timed_out" : false,
6 "_shards" : {
7 "total" : 1,
8 "successful" : 1,
9 "skipped" : 0,
10 "failed" : 0
11 },
12 "hits" : {
13 "total" : 108,
14 "max_score" : 1.0,
15 "hits" : [
16 {
17 "_index" : "metricbeat-6.7.0-2019.03.20",
18 "_type" : "doc",
19 "_id" : "A4mU8GgBKrpxEYMLjJZt",
20 "_score" : 1.0,
21 "_source" : {
22 "@timestamp" : "2019-03-20T09:54:52.481Z",
23 "metricset" : {
24 "name" : "network",
25 "module" : "system",
26 "rtt" : 125
27 },
28 "event" : {
29 "dataset" : "system.network",
30 "duration" : 125260
31 },
32 "system" : {
33 "network" : {
34 "in" : {
35 "packets" : 59728,
36 "errors" : 0,
37 "dropped" : 0,
38 "bytes" : 736491211
39 },
40 "out" : {
41 "dropped" : 0,
42 "packets" : 31630,
43 "bytes" : 8283069,
44 "errors" : 0
45 },
46 "name" : "eth0"
47 }
48 },
49 "beat" : {
50 "version" : "6.7.0",
51 "name" : "elastic",
52 "hostname" : "elastic"
53 },
54...
总
线:108表示Metricbeat为此特定指标找到了108个搜索结果.任何搜索结果表示Metricbeat正在工作;如果您的输出显示0个总打击,您将需要对设置进行检查,以检测错误。
步骤 3 — 在第二个 CentOS 服务器上安装和配置 Metricbeat
如果你也有Ubuntu服务器,你可以安装Metricbeat,通过遵循第3步的 如何在Ubuntu 18.04上使用Metricbeat收集基础设施计量。
登录您的第二个 CentOS 服务器,作为您的非根用户:
1[environment local]
2ssh sammy@second_centos_server_ip
Elastic Stack 组件默认情况下不是通过 yum 包管理器可用的,但您可以通过添加 Elastic 的包库来安装它们。
所有 Elastic Stack 包都使用 Elasticsearch 签名密钥签名,以保护您的系统免受包裹欺骗。 您的包管理员将信任使用密钥身份验证的包裹。 在此步骤中,您将导入 Elasticsearch 公共 GPG 密钥并添加 Elastic 包源列表以安装 Metricbeat。
首先,运行以下命令来下载并安装 Elasticsearch 公共签名密钥:
1[environment second]
2sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
然后添加 Elastic 存储库. 使用您偏好的文本编辑器在 /etc/yum.repos.d/
目录中创建 elasticsearch.repo
文件:
1[environment second]
2sudo vi /etc/yum.repos.d/elasticsearch.repo
要为 yum 提供下载和安装 Elastic Stack 组件所需的信息,请按i
键进入插入模式,并将下列行添加到文件中:
1[environment second]
2[label /etc/yum.repos.d/elasticsearch.repo]
3[elasticsearch-6.x]
4name=Elasticsearch repository for 6.x packages
5baseurl=https://artifacts.elastic.co/packages/6.x/yum
6gpgcheck=1
7gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
8enabled=1
9autorefresh=1
10type=rpm-md
完成后,保存并关闭文件。
接下来,用这个命令安装Metricbeat:
1[environment second]
2sudo yum install metricbeat
一旦 Metricbeat 完成安装,请将其配置为连接到 Elasticsearch. 打开其配置文件, metricbeat.yml
:
1[environment second]
2sudo vi /etc/metricbeat/metricbeat.yml
<$>[注] 注: Metricbeat 的配置文件是 YAML 格式,这意味着插入非常重要! 请确保您在编辑此文件时不添加任何额外的空间。
Metricbeat 支持多种输出,但您通常只会直接将事件发送到 Elasticsearch 或 Logstash 进行额外处理。
1[environment second]
2[label /etc/metricbeat/metricbeat.yml]
3#-------------------------- Elasticsearch output ------------------------------
4output.elasticsearch:
5 # Array of hosts to connect to.
6 hosts: ["Elastic_Stack_server_ip:9200"]
7
8...
保存并关闭文件。
在本教程中,您将使用 system
模块,允许您监控服务器的统计数据,如CPU/内存/磁盘使用率和网络利用率。
在这种情况下,系统
模块默认启用,您可以通过运行以下方式查看启用和禁用模块的列表:
1[environment second]
2sudo metricbeat modules list
你会看到一个类似于以下的列表:
1[environment second]
2[secondary_label Output]
3Enabled:
4system
5
6Disabled:
7aerospike
8apache
9ceph
10couchbase
11docker
12dropwizard
13elasticsearch
14envoyproxy
15etcd
16golang
17graphite
18haproxy
19http
20jolokia
21kafka
22kibana
23kubernetes
24kvm
25logstash
26memcached
27mongodb
28munin
29mysql
30nginx
31php_fpm
32postgresql
33prometheus
34rabbitmq
35redis
36traefik
37uwsgi
38vsphere
39windows
40zookeeper
您可以在 /etc/ metricbeat/moules.d/ system.yml' 配置文件中看到模块的参数。 对于此教程, 您不需要更改配置 。 默认的衡量标准是
cpu'、负荷'、
记忆'、网络'、
进程'和`进程-摘要'。 每个模块都有一个或多个度量衡集. 参数集是模块中获取和构建数据的部分. 计量集不是作为单独事件收集每个计量,而是在向远程系统提出的单一请求中检索一个多个相关计量清单.
现在您可以开始并启用 Metricbeat:
1[environment second]
2sudo systemctl start metricbeat
3sudo systemctl enable metricbeat
在您想要收集指数的所有服务器上重复此步骤,然后您可以转到下一步,您将看到如何导航Kibana的一些仪表板。
第4步:探索Kibana仪表板
在此步骤中,您将查看Kibana,您在前提
部分安装的 Web 界面。
在 Web 浏览器中,前往您的 Elastic Stack 服务器的 FQDN 或公共 IP 地址. 在您在 Elastic Stack 教程的第 2 步中定义的登录凭证后,您将看到 Kibana 主页:
在发现
页面上,选择预定义的meticbeat-***
索引模式以查看 Metricbeat 数据. 默认情况下,这将向您显示过去 15 分钟的所有日志数据。
在这里,你可以搜索和浏览你的指标,并自定义你的仪表板. 然而,在这个时候,那里不会有很多,因为你只是从你的服务器收集系统统计数据。
使用左侧面板导航到 Dashboard 页面并搜索 ** Metricbeat System** 仪表板. 一旦到达那里,您可以搜索带有 Metricbeat 的系统
模块的示例仪表板。
例如,您可以查看有关所有主机的简短信息:
您还可以点击主机名称并查看更多详细信息:
Kibana有许多其他功能,如图形和过滤,所以可以自由探索。
结论
在本教程中,您已经安装了 Metricbeat 并配置了 Elastic Stack 来收集和分析系统指标。 Metricbeat 配备了内部 模块来收集来自 Apache, Nginx, Docker, MySQL, PostgreSQL 等服务的指标。
如果您想了解有关服务器监控的更多信息,请参阅 引入指标,监控和警报和 实施监控和警报。