分类: Monitoring 日志 弹性搜索 运维 服务器 Ubuntu 18.04
2019-03-15 14:41:42
作者选择了计算机历史博物馆作为Write for DOnations计划的一部分进行捐赠。
Metricbeat是一个帮助将各种类型的服务器数据发送到Elastic Stack服务器的Beats之一,它是一个轻量级的数据发送器,一旦安装在您的服务器上,就会定期收集系统范围和每个进程的CPU和内存统计信息并发送数据直接发送到您的Elasticsearch部署。 此托运人替换了弹性5.0版中的早期Topbeat 。
目前可从Elastic获得的其他Beats是:
在本教程中,您将使用Metricbeat将本地系统指标(如CPU /内存/磁盘使用情况和网络利用率)从Ubuntu 18.04服务器转发到安装了Elastic Stack的同类服务器。 使用此shippers,您将收集获取服务器当前状态所需的基本指标。
要学习本教程,您需要:
ufw
配置的防火墙。 在一台服务器上,您将下载Elastic Stack; 本教程将此称为“弹性服务器”。 Elastic Stack服务器将监控您的第二台服务器; 这第二台服务器将被称为“第二台Ubuntu服务器”。 注意 :安装Elastic Stack时,必须在整个中使用相同的版本。 在本教程中,您将使用整个的最新版本,在撰写本文时,Elasticsearch 6.6.2,Kibana 6.6.2,Logstash 6.6.2和Metricbeat 6.6.2。
如何在Ubuntu 18.04上安装Elasticsearch,Logstash和Kibana(弹性)教程仅限于对localhost的Elasticsearch访问。 实际上,这很少见,因为您经常需要监控许多主机。 在此步骤中,您将配置Elastic Stack组件以与外部IP地址进行交互。
以非root用户身份登录Elastic Stack服务器:
ssh sammy@Elastic_Stack_server_ip
使用首选文本编辑器编辑Elasticsearch的主配置文件elasticsearch.yml
。 本教程将使用nano
:
sudo nano /etc/elasticsearch/elasticsearch.yml
找到以下部分并对其进行修改,以便Elasticsearch监听所有接口:
. . .
network.host: 0.0.0.0
. . .
地址0.0.0.0
在许多上下文中被赋予特定含义。 在这种情况下, 0.0.0.0
表示“任何IPv4地址”。
通过按CTRL+X
保存并关闭elasticsearch.yml
,然后按Y
,然后如果您使用的是nano
,则ENTER
。 然后,使用systemctl
重新启动Elasticsearch服务以应用新设置:
sudo systemctl restart elasticsearch
现在,允许从第二个Ubuntu服务器访问Elasticsearch端口。 你将使用ufw
:
sudo ufw allow from second_ubuntu_server_ip/32 to any port 9200
如果您有两个以上的服务器,请为每个服务器重复此命令。 如果您的服务器位于同一网络上 ,则可以允许使用一个规则访问网络上的所有主机。 为此,您需要使用较低的值替换前缀/32
,例如/24
。 您可以在UFW Essentials中找到更多UFW设置示例:通用防火墙规则和命令教程。
接下来,测试连接。 以非root用户身份登录到第二个Ubuntu服务器:
ssh sammy@second_ubuntu_server_ip
使用telnet
命令测试与Elastic Stack服务器的连接。 此命令使用Telnet协议启用与其他主机的通信,并可以检查远程系统上端口的可用性。
telnet Elastic_Stack_server_ip 9200
您将收到以下输出:
Trying Elastic_Stack_server_ip...
Connected to Elastic_Stack_server_ip.
Escape character is '^]'.
按CTRL+]
关闭Telnet连接,然后按CTRL+d
。 您可以键入quit
然后按ENTER
以退出Telnet实用程序。
现在您已准备好将指标发送到Elastic Stack服务器。
在接下来的两个步骤中,您将首先在Elastic Stack服务器上安装Metricbeat并导入所有需要的数据,然后在第二个Ubuntu服务器上安装和配置客户端。
以非root用户身份登录Elastic Stack服务器:
ssh sammy@Elastic_Stack_server_ip
由于您之前在先决条件中设置了Elasticsearch存储库,因此您只需安装Metricbeat:
sudo apt install metricbeat
完成Metricbeat安装后,将索引模板加载到Elasticsearch中。 Elasticsearch索引是具有类似特征的文档集合。 特定名称标识每个索引,Elasticsearch将在执行各种操作时使用这些索引来引用索引。 创建新索引时,Elasticsearch服务器将自动应用索引模板。
要加载模板,请使用以下命令:
sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'
您将看到以下输出:
Loaded index template
Metricbeat附带了示例Kibana仪表板,可视化和搜索,以便在Kibana中可视化Metricbeat数据。 在使用仪表板之前,您需要创建索引模式并将仪表板加载到Kibana中。
要加载模板,请使用以下命令:
sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
您将看到如下所示的输出:
. . .
2019-02-15T09:51:32.096Z INFO instance/beat.go:281 Setup Beat: metricbeat; Version: 6.6.2
2019-02-15T09: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"}
2019-02-15T09:51:32.137Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.137Z INFO [publisher] pipeline/module.go:110 Beat name: elastic
2019-02-15T09:51:32.138Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.140Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.148Z INFO template/load.go:130 Template already exists and will not be overwritten.
2019-02-15T09:51:32.148Z INFO instance/beat.go:894 Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-02-15T09:51:32.149Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.150Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.151Z INFO kibana/client.go:118 Kibana url: http://localhost:5601
2019-02-15T09:51:56.209Z INFO instance/beat.go:741 Kibana dashboards successfully loaded.
Loaded dashboards
现在您可以启动并启用Metricbeat:
sudo systemctl start metricbeat
sudo systemctl enable metricbeat
Metricbeat将开始将您的系统统计信息发送到Elasticsearch。
要验证Elasticsearch是否确实正在接收此数据,请使用以下命令查询Metricbeat索引:
curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'
您将看到与此类似的输出:
...
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 108,
"max_score" : 1.0,
"hits" : [
{
"_index" : "metricbeat-6.6.2-2019.02.15",
"_type" : "doc",
"_id" : "A4mU8GgBKrpxEYMLjJZt",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2019-02-15T09:54:52.481Z",
"metricset" : {
"name" : "network",
"module" : "system",
"rtt" : 125
},
"event" : {
"dataset" : "system.network",
"duration" : 125260
},
"system" : {
"network" : {
"in" : {
"packets" : 59728,
"errors" : 0,
"dropped" : 0,
"bytes" : 736491211
},
"out" : {
"dropped" : 0,
"packets" : 31630,
"bytes" : 8283069,
"errors" : 0
},
"name" : "eth0"
}
},
"beat" : {
"version" : "6.6.2",
"name" : "elastic",
"hostname" : "elastic"
},
...
"total" : 108 ,
表示Metricbeat已找到该特定指标的108个搜索结果。 如果您的输出显示总命中数为0,则需要检查设置是否有错误。 如果收到预期的输出,请继续执行下一步,在第二步中,将在第二个Ubuntu服务器上安装Metricbeat。
在要将指标发送到Elastic Stack服务器的所有Ubuntu服务器上执行此步骤。
以非root用户身份登录到第二个Ubuntu服务器:
ssh sammy@second_ubuntu_server_ip
Ubuntu的默认包存储库中没有Elastic Stack组件。 但是,您可以在添加Elastic的包源列表后使用APT安装它们。
所有Elastic Stack的软件包都使用Elasticsearch签名密钥进行签名,以保护您的系统免受软件包欺骗。 您的包管理器将信任使用该密钥进行身份验证的包。 在此步骤中,您将导入Elasticsearch公共GPG密钥并添加Elastic包源列表以安装Metricbeat。
首先,运行以下命令将Elasticsearch公共GPG密钥导入APT:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
接下来,将Elastic源列表添加到sources.list.d
目录,其中APT将查找新的源:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
接下来,更新您的包列表,以便APT将读取新的Elastic源:
sudo apt update
然后使用以下命令安装Metricbeat:
sudo apt install metricbeat
完成Metricbeat安装后,将其配置为连接到Elasticsearch。 打开其配置文件metricbeat.yml
:
sudo nano /etc/metricbeat/metricbeat.yml
注意: Metricbeat的配置文件是YAML格式,这意味着缩进非常重要! 编辑此文件时,请确保不添加任何额外的空格。
Metricbeat支持多种输出,但您通常只将事件直接发送到Elasticsearch或Logstash以进行其他处理。 找到以下部分并更新IP地址:
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["Elastic_Stack_server_ip:9200"]
...
保存并关闭文件。
您可以使用模块扩展Metricbeat的功能。 在本教程中,您将使用system
模块,该模块允许您监视服务器的统计信息,如CPU /内存/磁盘使用情况和网络利用率。
在这种情况下,默认情况下启用system
模块。 您可以通过运行以下命令查看启用和禁用模块的列表:
sudo metricbeat modules list
您将看到类似于以下内容的列表:
Enabled:
system
Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper
您可以在/etc/metricbeat/modules.d/system.yml
配置文件中查看模块的参数。 在本教程中,您无需更改配置中的任何内容。 默认度量标准集是cpu
, load
, memory
, network
, process
和process_summary
。 每个模块都有一个或多个度量集。 度量集是获取和构造数据的模块的一部分。 度量集不是将每个度量收集为单独的事件,而是在对远程系统的单个请求中检索多个相关度量的列表。
现在您可以启动并启用Metricbeat:
sudo systemctl start metricbeat
sudo systemctl enable metricbeat
您需要在要收集指标的所有服务器上重复此步骤。 之后,您可以继续下一步,了解如何浏览Kibana的一些仪表板。
在此步骤中,您将了解Kibana,即您在“先决条件”部分中安装的Web界面。
在Web浏览器中,转到Elastic Stack服务器的FQDN或公共IP地址。 输入您在Elastic Stack教程的第2步中定义的登录凭据后,您将看到Kibana主页:
单击左侧导航栏中的“ 发现”链接。 在“ 发现”页面上,选择预定义的meticbeat- *索引模式以查看Metricbeat数据。 默认情况下,这将显示过去15分钟内的所有日志数据。 您将找到直方图和一些指标详细信息:
在这里,您可以搜索和浏览指标,还可以自定义信息中心。 但是,此时不会有太多因为您只是从服务器收集系统统计信息。
使用左侧面板导航到仪表板页面并搜索Metricbeat System仪表板。 在那里,您可以搜索Metricbeat system
模块附带的示例仪表板。
例如,您可以查看有关所有主机的简要信息:
您还可以单击主机名并查看详细信息:
Kibana还有许多其他功能,例如图形和过滤功能,因此您可以随意浏览。
在本教程中,您已安装Metricbeat并配置Elastic Stack以收集和分析系统指标。 Metricbeat附带内部模块 ,可从Apache,Nginx,Docker,MySQL,PostgreSQL等服务中收集指标。 现在,您只需打开所需的模块即可收集和分析应用程序的指标。
如果您想了解有关服务器监控的更多信息,请查看指标简介,监控和警报以及将监控和警报付诸实践 。
关注云架构公众号
Linux入门
QQ交流群:308781113