南国薏米

南国不须收薏苡,百年终竟是芭蕉。

0%

Elastic Stack实战之Metricbeat初体验

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


壹、软件版本

1
2
3
4
5
6
7
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

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

3.3 使用Kibana展示Metricbeat系统指标

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

2020030707

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

2020030708
2020030709

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

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

  • 开启nginx的状态查询

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

    script
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #重新编译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

    script
    1
    ./metricbeat modules enable nginx
    script
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    [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的配置

    script
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [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,足够了我们日工作需要了。


薏米笔记