Elastic Stack实战之Metricbeat初体验

Elastic Stack实战之Metricbeat初体验

薏米 3,819 2020-03-07

前面的话前面介绍了Elastic Stack的Beats家族,并且体验了Filebeat,接下来我们就继续来体验一下。


壹、软件版本

Centos:CentOS-7-x86_64-Minimal-1908
VM: 15.5.0 build-14665864
Java: 1.8.0_211
Elasticsearch: elasticsearch-7.6.0
Logstash: logstash-7.6.0
Kibana: kibana-7.6.0
MetricBeat:filebeat-7.6.0

贰、MetricBeat介绍

MetricBeat是一种轻量型指标采集器,用于从系统和服务收集指标。Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据,从 CPU 到内存,从 Redis 到 Nginx,不一而足。

  • 系统级监控,更简洁

screenshot-infrastructure-ui

  • 单个二进制文件提供多种模块

    Metricbeat 提供多种内部模块,这些模块可从多项服务(诸如 Apache、Jolokia、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus 等等)中收集指标。安装简单,完全零依赖性。只需在配置文件中启用您所需的模块即可。

    而且,如果您没有看到要找的模块,还可以自己构建。以 Go 语言编写 Metricbeat 模块,过程十分简单。

    • 系统

    metricbeat-modules-system

    • Docker

    container-monitoring-screenshot-carousel-docker

    • MongoDB

    metricbeat-modules-mongo

    • Kubernetes

    container-monitoring-screenshot-carousel-kubernetes

  • 容器就绪

    近来是不是所有工作都转移到了 Docker 中?通过 Elastic Stack,您能够轻松地监测容器。将 Metricbeat 部署到同一台主机上的一个单独容器后,它将收集与主机上运行的其他每一个容器相关的统计数据。在收集统计数据时,它直接从 proc 文件系统读取 cgroup 信息,这就意味着它无需特权即可访问 Docker API,并且同样适用于其他 Runtime。针对 Docker 的 Autodiscovery 让事情进一步简化,您只需指定一个条件即可开启 Metricbeat 模块。

  • 不错过任何检测信号

    将指标通过假脱机传输方式输送至磁盘,这样您的数据管道再也不会错过任何一个数据点,即使发生中断(例如网络问题),也勿需担心。Metricbeat 会保留传入的数据,并在重新上线后将这些指标输送至 Elasticsearch 或 Logstash。

  • 输送至 Elasticsearch 或 Logstash。在 Kibana 中实现可视化。

    Metricbeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实指标,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Metricbeat 都能轻松地将您的数据发送至最关键的地方。

叁 MetricBeat安装

3.1 下载地址

metricBeat-7.6.0-linux-x86_64

3.2 解压metricBeat-7.6.0-linux-x86_64

tar -zvxf metricBeat-7.6.0-linux-x86_64.tar.gz -C /usr/elastic

3.3 使用Kibana展示Metricbeat系统指标

  • 修改Metricbeat配置
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["http://192.168.237.11:9200"]
  • 启动
[iio@192 metricbeat]$ ./metricbeat -e
  • 在Elasticsearch中查看采集的数据

2020030707

  • 修改Metricbeat配置
setup.kibana:
  host: "192.168.237.11:5601"
  • 安装仪表盘
./metricbeat setup --dashboards
  • 重启服务查看效果

2020030708
2020030709

到这里我们就监控了我们系统的指标,并且利用Kibana提供的仪表板做了图形化展示。

3.4 使用Kibana展示Metricbeat采集nginx指标

  • 开启nginx的状态查询

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

    #重新编译nginx
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
    make
    make install
    
    ./nginx -V #查询版本信息
    nginx version: nginx/1.12.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
    configure arguments: --prefix=/usr/local/nginx/ --with-http_stub_status_module
    
    
    #配置nginx
    vi nginx.conf
    location /nginx-status {
        stub_status on;
        access_log off;
    }
    

    2020030710

    结果说明:

    • Active connections:正在处理的活动连接数
    • server accepts handled requests
      • 第一个 server 表示Nginx启动到现在共处理了22个连接
      • 第二个 accepts 表示Nginx启动到现在共成功创建 22 次握手
      • 第三个 handled requests 表示总共处理了 193 次请求
      • 请求丢失数 = 握手数 - 连接数 ,可以看出目前为止没有丢失请求
    • Reading: 0 Writing: 1 Waiting: 2
      • Reading:Nginx 读取到客户端的 Header 信息数
      • Writing:Nginx 返回给客户端 Header 信息数
      • Waiting:Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于 Active - (Reading+Writing))
  • 配置Nginx Module

    默认Metricbeat之开启了system modules,所以我们这里要手动启用nginx modules

    ./metricbeat modules enable nginx
    
    [iio@192 metricbeat]$ ./metricbeat modules list
    Enabled:
    nginx
    system
    
    Disabled:
    activemq
    aerospike
    apache
    appsearch
    aws
    azure
    beat
    beat-xpack
    ceph
    cockroachdb
    consul
    coredns
    couchbase
    couchdb
    docker
    dropwizard
    elasticsearch
    elasticsearch-xpack
    envoyproxy
    etcd
    golang
    googlecloud
    graphite
    haproxy
    http
    jolokia
    kafka
    kibana
    kibana-xpack
    kubernetes
    kvm
    logstash
    logstash-xpack
    memcached
    mongodb
    mssql
    munin
    mysql
    nats
    oracle
    php_fpm
    postgresql
    prometheus
    rabbitmq
    redis
    sql
    stan
    statsd
    tomcat
    traefik
    uwsgi
    vsphere
    windows
    zookeeper
    
  • 修改nginx modules的配置

    [iio@192 modules.d]$ vi nginx.yml 
    
    # Module: nginx
    # Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.6/metricbeat-module-nginx.html
    
    - module: nginx
      #metricsets:
      #  - stubstatus
      period: 10s
    
      # Nginx hosts
      hosts: ["http://192.168.237.11"]
    
      # Path to server status. Default server-status
      server_status_path: "nginx-status" #配置的nginx状态访问地址
    
      #username: "user"
      #password: "secret"
    
    
  • 启动测试

2020030711
2020030712

到这里我们采集的nginx的指标数据,并且利用Kibana安装的Metricbeatd的nginx仪表盘做了图形化展示。

肆、Metricbeat组成

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

  • Module

    收集的对象,如:mysql、redis、nginx、操作系统等;

  • Metricset

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


后面的话】在本文中我们利用Metricbeat监控了系统和nginx的系统指标,并且做了图标化的展示。其他module的使用也类似,他们都是利用Metricbeat给被监控的机器放松状态指令,然后采集数据,再做图形化的展示。同时我们也看到Merticbeat也内置了很多的module,足够了我们日工作需要了。


薏米笔记


# Elastic Stack