如何在 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 地址或子网的访问,请使用 firewalldrich 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