Elastic Stack之Metricbeat

128 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

Metricbeat的功能

  • 轻量型指标采集器
  • 用于从系统和服务收集指标。Metricbeat能够以一种轻量型的方式,输送各种系统和服务统计数据,从CPU 到内存,从Redis到Nginx,不一而足。
  • 定期收集操作系统或应用服务的指标数据
  • 存储到Elasticsearch中,进行实时分析

Metricbeat有2部分组成,一部分是Module,另一个部分为Metricset

  • Module

    • 收集的对象:如 MySQL、Redis、Nginx、操作系统等
  • Metricset

    • 收集指标的集合:如 cpu、memory,network等

首先我们到官网,找到Metricbeat进行下载

统一7.9.1

tar -zxvf metricbeat-7.9.1-linux-x86_64.tar.gz 
mv metricbeat-7.9.1-linux-x86_64 metricbeat
vim metricbeat.yml #修改配置文件,默认配置文件 system.yml
./metricbeat modules enable nginx #开启nginx模块
vim modules.d/nginx.yml #开启nginx模块信息
./metricbeat -e #启动Metricbeat

然后修改配置文件

vim metricbeat.yml

添加如下内容

metricbeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression
setup.kibana:
output.elasticsearch:
  hosts: [""127.0.0.1:9200"]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

开启Nginx Module

在nginx中,需要开启状态查询,才能查询到指标数据。

#重新编译nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make
make install
​
./nginx -V #查询版本信息
nginx version: nginx/1.11.6
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module
​
#配置nginx
vim nginx.conf
location /nginx-status {
    stub_status on;
    access_log off;
}
​
# 重启nginx
./nginx -s reload

结果说明:

  • Active connections:正在处理的活动连接数

  • server accepts handled requests

    • 第一个 server 表示Nginx启动到现在共处理了9个连接
    • 第二个 accepts 表示Nginx启动到现在共成功创建 9 次握手
    • 第三个 handled requests 表示总共处理了 21 次请求
    • 请求丢失数 = 握手数 - 连接数 ,可以看出目前为止没有丢失请求
  • Reading: 0 Writing: 1 Waiting: 1

    • Reading:Nginx 读取到客户端的 Header 信息数
    • Writing:Nginx 返回给客户端 Header 信息数
    • Waiting:Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于 Active - (Reading+Writing))

配置nginx module

#启用redis module
./metricbeat modules enable nginx
​
#修改redis module配置
vim modules.d/nginx.yml

然后修改下面的信息

# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/6.5/metricbeat-modulenginx.
html
  - module: nginx
#metricsets:
# - stubstatus
  period: 10s
# Nginx hosts
  hosts: ["http://127.0.0.1"]
# Path to server status. Default server-status
  server_status_path: "nginx-status"