• 2.Beats入门简介


    使用Beat收集nginx日志和指标数据

    项目需求

    Nginx是一款非常优秀的web服务器,往往nginx服务会作为项目的访问入口,那么,nginx的性能保障就变得非常重要了,如果nginx的运行出现了问题就会对项目有较大的影响,所以,我们需要对nginx的运行有监控措施,实时掌握nginx的运行情况,那就需要收集nginx的运行指标和分析nginx的运行日志了。

    业务流程

    说明:

    • 通过Beats采集Nginx的指标数据和日志数据
    • Beats采集到数据后发送到Elasticsearch中
    • Kibana读取数据进行分析
    • 用户通过Kibana进行查看分析报表

    部署Nginx

    部署教程可以参考这篇博客:CentOS下如何安装Nginx?

    部署完成后,我们就可以启动nginx了

    启动完成后,我们通过下面命令,就可以获取到nginx中的内容了

    tail -f /var/log/nginx/access.log

    Beats简介

    通过查看ElasticStack可以发现,Beats主要用于采集数据

    官网地址:https://www.elastic.co/cn/beats/

     Beats平台其实是一个轻量性数据采集器,通过集合多种单一用途的采集器,从成百上千台机器中向Logstash或ElasticSearch中发送数据。

    通过Beats包含以下的数据采集功能

    • Filebeat:采集日志文件
    • Metricbeat:采集指标
    • Packetbeat:采集网络数据
    • 如果我们的数据不需要任何处理,那么就可以直接发送到ElasticSearch中

      如果们的数据需要经过一些处理的话,那么就可以发送到Logstash中,然后处理完成后,在发送到ElasticSearch

      最后在通过Kibana对我们的数据进行一系列的可视化展示

      Filebeat

      介绍

      Filebeat是一个轻量级的日志采集器

    • 为什么要用Filebeat?

      当你面对成百上千、甚至成千上万的服务器、虚拟机和溶气气生成的日志时,请告别SSH吧!Filebeat将为你提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁华,关于Filebeat的记住以下两点:

      • 轻量级日志采集器
      • 输送至ElasticSearch或者Logstash,在Kibana中实现可视化

      架构

      用于监控、收集服务器日志文件.

    • 流程如下:

      • 首先是input输入,我们可以指定多个数据输入源,然后通过通配符进行日志文件的匹配
      • 匹配到日志后,就会使用Harvester(收割机),将日志源源不断的读取到来
      • 然后收割机收割到的日志,就传递到Spooler(卷轴),然后卷轴就在将他们传到对应的地方

      下载

      官网地址:https://www.elastic.co/cn/downloads/beats/filebeat

      选中对应版本的Filebeat,我这里是Centos部署的,所以下载Linux版本

    下载后,我们上传到服务器上,然后创建一个文件夹

    # 创建文件夹
    mkdir -p /soft/beats
    # 解压文件
    tar -zxvf filebeat-7.9.1-linux-x86_64.tar.gz 
    # 重命名
    mv filebeat-7.9.1-linux-x86_64/ filebeat

    然后我们进入到filebeat目录下,创建对应的配置文件

    # 进入文件夹
    cd filebeats
    # 创建配置文件
    vim mogublog.yml

    添加如下内容

    filebeat.inputs: # filebeat input输入
    - type: stdin    # 标准输入
      enabled: true  # 启用标准输入
    setup.template.settings: 
      index.number_of_shards: 3 # 指定下载数
    output.console:  # 控制台输出
      pretty: true   # 启用美化功能
      enable: true

    启动

    在我们添加完配置文件后,我们就可以对filebeat进行启动了

    ./filebeat -e -c mogublog.yml

    后台启动

    nohup ./logstash -f ./mogu-dashboard.conf  > catalina.out  2>&1 &

     然后我们在控制台输入hello,就能看到我们会有一个json的输出,是通过读取到我们控制台的内容后输出的

     内容如下

    {
        "@timestamp":"2019-01-12T12:50:03.585Z",
        "@metadata":{ #元数据信息
            "beat":"filebeat",
            "type":"doc",
            "version":"6.5.4"
        },
        "source":"",
        "offset":0,
        "message":"hello", #元数据信息
        "prospector":{
            "type":"stdin" #元数据信息
        },
        "input":{ #控制台标准输入
            "type":"stdin"
        },
        "beat":{  #beat版本以及主机信息
            "name":"itcast01",
            "hostname":"ElasticStack",
            "version":"6.5.4"
        },
        "host":{
            "name":"ElasticStack"
        }
    }

    读取文件

    我们需要再次创建一个文件,叫 mogublog-log.yml,然后在文件里添加如下内容

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /soft/beats/logs/*.log
    setup.template.settings:
      index.number_of_shards: 3
    output.console:
      pretty: true
      enable: true

    添加完成后,我们在到下面目录创建一个日志文件

    # 创建文件夹
    mkdir -p /soft/beats/logs
    
    # 进入文件夹
    cd /soft/beats/logs
    
    # 追加内容
    echo "hello" >> a.log

    然后我们再次启动filebeat

     ./filebeat -e -c mogublog-log.yml

    能够发现,它已经成功加载到了我们的日志文件 a.log

     同时我们还可以继续往文件中追加内容

    echo "are you ok ?" >> a.log

    追加后,我们再次查看filebeat,也能看到刚刚我们追加的内容

    可以看出,已经检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。

    自定义字段

    但我们的元数据没办法支撑我们的业务时,我们还可以自定义添加一些字段

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /soft/beats/logs/*.log
      tags: ["web", "test"]  #添加自定义tag,便于后续的处理
      fields:  #添加自定义字段
        from: test-web
      fields_under_root: true #true为添加到根节点,false为添加到子节点中
    setup.template.settings:
      index.number_of_shards: 3
    output.console:
      pretty: true
      enable: true

    添加完成后,我们重启 filebeat

    ./filebeat -e -c mogublog-log.yml

    然后添加新的数据到 a.log中

    echo "test-web" >> a.log

    我们就可以看到字段在原来的基础上,增加了两个

    输出到ElasticSearch

    我们可以通过配置,将修改成如下所示

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /soft/beats/logs/*.log
      tags: ["web", "test"]
      fields:
        from: test-web
      fields_under_root: false 
    setup.template.settings:
      index.number_of_shards: 1
    output.elasticsearch:
      hosts: ["127.0.0.1:9200"]

    启动成功后,我们就能看到它已经成功连接到了es了

    然后我们到刚刚的 logs文件夹向 a.log文件中添加内容

    echo "hello mogublog" >> a.log

    在ES中,我们可以看到,多出了一个 filebeat的索引库

    然后我们浏览对应的数据,看看是否有插入的数据内容

  • 相关阅读:
    python编程学习进度七
    python编程学习进度六
    SOA——2020.5.15
    代码大全001/
    Refined Architecture阶段——细化架构
    架构即未来003(摘自网络)
    我对外包公司的小小看法
    架构即未来002
    每日日报
    架构即未来阅读笔记001
  • 原文地址:https://www.cnblogs.com/2839888494xw/p/15825095.html
Copyright © 2020-2023  润新知