Go To My HomePage

beats的使用

一、简介

一个轻量级的基于golang开发的数据传输者,用于收集数据常用的beat有下:

  • Filebeat 日志文件
  • Metricbeat 收集操作系统和常用软件数据
  • Packetbeat 收集网络数据
  • Heartbeat 健康检查

数据扭转可能的示例如下

beats【收集数据】 =》 elasticsearch【存储,Ingest Node处理】=》kibana【可视化分析】

beats【收集数据】 =》 logstash【数据处理过滤】=》elasticsearch【存储,Ingest Node处理】=》kibana【可视化分析】

二、Ingest Node

ingest node是elasticsearch的一种节点类型【选举节点、协调节点、数据节点】。可以在数据存储到ES之前对数据进行处理。

默认情况下所有节点都已启用此功能,也可通过node.ingest:false关闭

####################################### 创建Pipeline #######################################
PUT _ingest/pipeline/test
{
  "description": "This is a test pipeline",
  "processors": [
    {
      "set": {
        "field": "custom_field",
        "value": "custom_value"
      }
    },
    {
      "convert": {
        "field": "age",
        "type": "integer"
      }
    }
  ],
  "version": 1
}

##################################### 删除、查询Pipeline #####################################
DELETE _ingest/pipeline/test
GET _ingest/pipeline/test

##################################### 模拟测试Pipeline #####################################
POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description": "This is a test pipeline",
    "processors": [
      {
        "set": {
          "field": "custom_field",
          "value": "custom_value"
        },
        "geoip":{
          "field": "ip",
          "target_field": "ip_info"
        },
        "user_agent": {
          "field": "agent",
          "target_field": "user_ua"
        },
        "convert": {
          "field": "age",
          "type": "integer",
          "on_failure": [
            {
              "set": {
                "field": "age_conver_error",
                "value": ""
              }
            }
          ]
        }
      }
    ],
    "version": 1
  },
  "docs": [
    {
      "_source": {
        "message": "m m m m m ",
        "age": "xxx18",
        "ip":"124.207.37.189",
        "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
      }
    }
  ]
}


POST _ingest/pipeline/test/_simulate
{
  "docs": [
    {
      "_source": {
        "message": "m m m m m "
      }
    }
  ]
}

Pipelineprocessors基本上和logstash的filter一一对应

  • convert
  • grok
  • data
  • gsub
  • join
  • json
  • geoip
  • user_agent
  • remove
  • script =》 ruby

三、Filebeat

Filebeat是用于转发和集中日志数据的轻量级传送程序,特性有下

  • 读取日志,但是不做数据的解析处理
  • 保证数据至少被读取一次,即数据不会丢失
  • 可以处理多行数据,可以解析json格式数据,拥有简单的过滤能力

配置Filebeat

filebeat.inputs:
- type: log                 #type的类型有:Log、Stdin、Redis、UDP、Docker、TCP、Syslog、NetFlow
  paths:                    #文件的位置
    - "/var/log/nginx/*"
  encoding: utf-8           #文件编目
  tags: ["txt","web"]       #添加的自定义标签
  fields:                   #添加的自定义字段
    apache: true
  fields_under_root: true   #解析出来的字段是否放在根下,否则在field下
  
output.elasticsearch:       #输出到的es地址,output只能有一个,调试可以启动时用用 -d "publish" 打印
  hosts: ["localhost:9200"]
  
setup.kibana:               #kibana地址,用于导入Dashboard
  host: "localhost:5601"

配置Index Template

如果仅使用一次不建议在Filebeat中创建,可直接在elasticsearch中创建

#是否启用template
setup.template.enable: false
#是否每次beats启动就要覆盖以前的template定义
setup.template.overwrite: true
#要向elasticsearch中的创建的template名称
setup.template.name: "nginx"
#要向elasticsearch中的创建的template的pattern
setup.template.pattern: "nginx-*"
#要向elasticsearch中的创建的template的mapping信息
setup.template.fields: "nginx_filed.yml"

配置Kibana Dashboard

可以通过配置打开Dashboard也可以通过命令导入./filebeat setup --dashboards,都是一次性全部导入

#向kibana创建的Dashboard的index名称
setup.dashboards.index: "nginx-*"
#是否启用Dashboard,默认false
setup.dashboards.enabled: true

查看配置

./filebeat export config     #查看当前配置文件的详细定义
./filebeat export template   #查看当前配置文件使用的template的详细定义
./filebeat export template -E setup.template.fields=nginx_field.yml  #查看指定的template的详细定义

可以通过./filebeat -e -c filebeat.yml -d "publish"执行时看到详细信息

-e:输出到stderr,默认输出到logs/filebeat文件

-d “publish”:输出”publish”的相关日志信息

Modules的使用

  1. 查看模块列表./filebeat modules list
  2. 开启模块./filebeat modules enable nginx
  3. 关闭模块./filebeat modules disable nginx
  4. 修改modules文件夹下对应开启的模块的yml文件【主要时配置文件路径,注意文件权限】
  5. 执行nohup ./filebeat -e -c filebeat.yml -d "publish" &

四、Metricbeat

简介

metricbeat用于定期收集操作系统、软件服务的指标数据。存入elasticsearch用于记录度量和聚合数据,具有计划性

Modules的使用

  1. 查看模块列表./metricbeat modules list
  2. 开启模块./metricbeat modules enable system
  3. 关闭模块./metricbeat modules disable system
  4. 修改metricbeat.yml配置output和Dashboard
  5. 导入Dashboard配置./metricbeat setup --dashboards
  6. 修改对应模块的配置,开启需要的metricsets和调整收集时间间隔
  7. 执行nohup ./metricbeat -e -c metricbeat.yml -d "publish" &

五、Packetbeat

简介

用于抓取网络包数据,可以自动解析网络包协议例如ICMP DNSHTTPMysql/PgSQL/MongoDBMemcacheThriftTLS

packetbeat抓包配置有两种

使用

  1. 修改packetbeat.yml配置output和Dashboard
  2. 配置packetbeat.yml各个模块的参数信息
  3. 导入Dashboard配置./packetbeat setup --dashboards
  4. 执行nohup ./packetbeat -e -c packetbeat.yml -d "publish" &【注意网卡权限,不行需要用root用户执行】

六、Heartbeat

简介

做心跳检测,判断对方是否存活

使用

  1. 修改heartbeat.yml配置output和Dashboard
  2. 配置heartbeat.yml各个程序需要的协议
  3. 导入Dashboard配置./heartbeat setup --dashboards
  4. 执行nohup ./heartbeat -e -c heartbeat.yml -d "publish" &

更多社区beat查看链接