beat

filebeat

介绍

​ filebeat中message要么是一段字符串,要么在日志生成的时候拼接成json然后在filebeat中指定为json。但是大部分系统日志无法去修改日志格式,filebeat则无法通过正则去匹配出对应的field,这时需要结合logstash的grok来过滤,所以filebeat只负责在服务器上收索转发日志数据,过滤功能则交给logstash来处理。

​ Filebeat更加的轻量级,Logstash占用更多的系统资源,如果在每个服务器上部署Logstash,有时候会影响到业务服务,导致服务响应缓慢;

​ Filebeat能够记录文件状态,文件状态记录在文件中(~FILEBEAT_HOME/data/registry)。此状态可以记住harvesters 收集文件的偏移量,重启后prospectors 能知道每个日志文件的记录状态再进行收集文件;

​ Filebeat保证至少有一次输出,因为Filebeat将每个事件的传递状态保存在文件中。在没有得到接收方确认时,会尝试一直发送,直到得到回应。

beat6.0之前可以配置多个输出。


配置文件及说明

filebeat.yml

filebeat.inputs:
- type: log
  paths:  # 这里是容器内的path
      - /var/lib/docker/containers/*/*.log

  json.keys_under_root: true # 因为docker使用的log driver是json-file,因此采集到的日志格式是json格式,设置为true之后,filebeat会将日志进行json_decode处理
  json.overwrite_keys: true
  json.add_error_key: true #如果启用此设置,则在出现JSON解组错误或配置中定义了message_key但无法使用的情况下,Filebeat将添加“error.message”和“error.type:json”键。
  json.message_key: log #一个可选的配置设置,用于指定应用行筛选和多行设置的JSON密钥。 如果指定,键必须位于JSON对象的顶层,且与键关联的值必须是字符串,否则不会发生过滤或多行聚合。
  tail_files: true #每次从尾部开始检测

  multiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}' #合并错误日志 
  multiline.negate: true
  multiline.match: after
  multiline.timeout: 10s

processors:
  - drop_fields:
        fields: ["prospector","source","input", "beat", "offset","tags","host"]
  - decode_json_fields:
        fields: ['message'] #要进行解析的字段
        target: "" #json内容解析到指定的字段,如果为空(“”),则解析到顶级结构下
        overwrite_keys: true #如果解析出的json结构中某个字段在原始的event(在filebeat中传输的一条数据为一个event)中也存在,是否覆盖event中该字段的值,默认值:false
        #process_array: false #数组是否解码,默认值:false
        #max_depth: 1 #解码深度,默认值:1

#output.file:     #输出到文件
#  path: "/tmp"
#  filename: "filebeat_test.txt" 
output:
  logstash:  # 我这里是输出到logstash
     hosts: ["logstash:5044"] # 
     
  • json.message_key 根据具体设置的key,对此内容进行json化,但解析后,保存日志完整内容的message字段(也即完整的json串)消失了,解决方法加入decode_json_fields

  • @version,@timestamp等filebeat自带字段在脚本里无法drop_fields,具体删除可在logstash里进行处理

  • scan_frequency: 50 #扫描间隔,单位为秒;设置太小会引起filebeat频繁扫描文件,导致cpu占用百分比过高

  • filebeat输入设置

    #============== Filebeat prospectors ===========
    filebeat.inputs:   # 6.3以前是 filebeat.prospectors:
    - type: log        # 默认为log  。6.0以前配置是 - input_type: log
    
  • filebeat 探测器读取日志行数文件位于 /usr/share/filebeat/data/registry(6x版本与7x不同,7x改路径为文件夹,6x为文件),filebeat服务运行请设置管理员权限。

Filebeat 用处理器(processors)实现了类似 Logstash 中 filter 的功能

常用的 processors:

  • add_cloud_metadata:添加云服务器的 meta 信息;
  • add_locale:添加本地时区;
  • decode_json_fields:解析并处理包含 Json 字符串的字段;
  • drop_event:丢弃符合条件的消息事件;
  • drop_fields:删除符合条件的字段;
  • include_fields:选择符合条件的字段;
  • rename:字段重命名;
  • add_kubernetes_metadata:添加 k8s 的 meta 信息;
  • add_docker_metadata:添加容器的 meta 信息;
  • add_host_metadata:添加操作系统的 meta 信息;
  • dissect:类似与 gork 的正则匹配字段的功能;
  • dns:配置 filebeat 独立的 dns 解析方式;
  • add_process_metadata:添加进程的元信息。

metricbeat

metricbeat可以监控服务器的CPU使用率、内存使用情况、线程数等机器物理性能,类似于Windows的资源管理器功能。而且内部自带docker,nginx,mysql,redis等监控模块方便使用。

metricbeat.yml

metricbeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

#output.file:
#  path: '/tmp'
#  filename: 'test'
output.elasticsearch:
  #hosts: ['127.0.0.1:9200'] 
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
setup.kibana:
  host: "11.23.254.120:5601"
setup.dashboards.enabled: true #设置metricbeat自带模板,导入kibana仪表盘


  • metricbeat modules enable xxx.yml.disabled 激活相关配置,其实直接改后缀名也可
  • metricbeat.reference.yml 官方demo配置文档

docker启动脚本

#!/bin/bash
docker service rm metricbeat
docker service create \
--name metricbeat \
-u root \
--network wushan \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--mount type=bind,source="$(which docker)",target="$(which docker)" \
--mount type=bind,source=/usr/lib64/libltdl.so.7,target=/usr/lib64/libltdl.so.7 \
--mount type=bind,source="$(pwd)"/config/metricbeat.yml,target=/usr/share/metricbeat/metricbeat.yml \
--mount type=bind,source="$(pwd)"/modules.d,target=/usr/share/metricbeat/modules.d \
--replicas 3 \
docker.elastic.co/beats/metricbeat:6.7.2

  • metricbeat作为docker内部容器,要获取docker的相关运行信息必须实现以下两个绑定

    --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock
    --mount type=bind,source="(which docker)",target="(which docker)"

  • 必须赋予metricbeat服务管理员权限

    -u root


其他说明

在具有POSIX文件权限的系统上,所有Beats配置文件都受到所有权和文件权限检查。 这些检查的目的是防止未经授权的用户提供或修改由Beat运行的配置。 配置文件的所有者必须是root用户或执行Beat进程的用户。 每个文件的权限必须禁止所有者以外的任何人写入。

​ 当通过RPM或DEB软件包安装时,/etc/{beatname}/{beatname}.yml中的配置文件将具有正确的所有者和权限。 该文件由root拥有,文件权限为0644(-rw-r - r--)。

​ 如果配置文件未能通过这些检查,可能会遇到以下错误:

<font color="red">Exiting: error loading config file: config file ("{beatname}.yml") must be owned by the beat user (uid=501) or root</font>

​ 若要更正此问题,可以使用chown root {beatname} .yml或chown 501 {beatname} .yml来更改配置文件的所有者。

<font color=red>Exiting: error loading config file: config file ("{beatname}.yml") can only be writable by the owner but the permissions are "-rw-rw-r--" (to fix the permissions use: 'chmod go-w /etc/{beatname}/{beatname}.yml')</font>

​ 要解决此问题,请使用chmod go-w /etc/{beatname}/{beatname}.yml删除除所有者以外的任何人的写入权限。其他配置文件(如modules.d目录中的文件)受到相同的所有权和文件权限检查。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容