如何在 CentOS 7 上使用 Metricbeat 收集基础设施指标

作者选择了 计算机历史博物馆作为 写给捐赠计划的一部分接受捐赠。

介绍

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 主页:

Kibana Homepage

在发现页面上,选择预定义的meticbeat-***索引模式以查看 Metricbeat 数据. 默认情况下,这将向您显示过去 15 分钟的所有日志数据。

Discover page

在这里,你可以搜索和浏览你的指标,并自定义你的仪表板. 然而,在这个时候,那里不会有很多,因为你只是从你的服务器收集系统统计数据。

使用左侧面板导航到 Dashboard 页面并搜索 ** Metricbeat System** 仪表板. 一旦到达那里,您可以搜索带有 Metricbeat 的系统模块的示例仪表板。

例如,您可以查看有关所有主机的简短信息:

Syslog Dashboard

您还可以点击主机名称并查看更多详细信息:

Sudo Dashboard

Kibana有许多其他功能,如图形和过滤,所以可以自由探索。

结论

在本教程中,您已经安装了 Metricbeat 并配置了 Elastic Stack 来收集和分析系统指标。 Metricbeat 配备了内部 模块来收集来自 Apache, Nginx, Docker, MySQL, PostgreSQL 等服务的指标。

如果您想了解有关服务器监控的更多信息,请参阅 引入指标,监控和警报和 实施监控和警报。

Published At
Categories with 技术
comments powered by Disqus