Filebeat 是一款轻量级的日志传输工具,它有输入和输出两端,一般是从日志文件中读取数据,输出到 Logstash 或 Elasticsearch 。其做用是收集业务服务器的日志,输出到一个日志系统便于集中管理。nginx
官网: https://www.elastic.co/cn/products/beats/filebeat正则表达式
系统环境:Centos6.x服务器
软件版本:filebeat-6.4.0-x86_64.rpm负载均衡
直接从官网下载 RPM 包,使用 rpm -ivh filebeat-6.4.0-x86_64.rpm 安装便可。ide
###################### Filebeat Configuration Example ######################### #=========================== Filebeat inputs ============================= filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. # 这里每个 type 表示定义了一个日志读取源,这个源是收集 Nginx 的访问日志 - type: log enabled: true paths: - /usr/log/nginx/access/access.log fields_under_root: true fields: alilogtype: nginxacclog # 收集某一个服务的错误日志 - type: log enabled: true paths: - /var/www/service/storage/logs/error.log fields_under_root: true fields: alilogtype: service_error serverip: ${serverip} # 收集某一个服务的错误日志,而且使用了多行合并 - type: log enabled: true paths: - /var/www/user_center/storage/logs/SERVER*.log fields_under_root: true fields: alilogtype: usercenter_serverlog serverip: ${serverip} multiline.pattern: '^\[' multiline.negate: true multiline.match: after #============================= Filebeat modules =============================== filebeat.config.modules: # Glob pattern for configuration loading path: ${path.config}/modules.d/*.yml # Set to true to enable config reloading reload.enabled: false # Period on which files under path should be checked for changes #reload.period: 10s #================================ Outputs ===================================== #-------------------------- Elasticsearch output ------------------------------ # 这部分是用于配置日志输出到 Elasticsearch 的部分 #----------------------------- Logstash output -------------------------------- # 将日志发送到 logstash 主机的 5044 端口,对应的这台 logstash 主机须要配置一个 input 监听于 5044 (配置过程,参考 Logstash 文档) output.logstash: hosts: ["10.26.10.15:5044"]
## 默认值 log ,表示一个日志读取源 type : log ## 该配置是否生效,若是设置为 false 将不会收集该配置的日志 enabled: true ## 要抓取的日志路径,写绝对路径 paths: /to/file.log ## fields 表示自定义字段,在下面缩进两格处写要本身添加的字段。如: alilogtype: usercenter_serverlog 表示在输出的每条日志中加入该字段,key:alilogtype , value:usercenter_serverlog 用于标识该日志源的类别,在传输到下一层 logstash 时能够根据该字段分类处理。 fields: alilogtype: usercenter_serverlog ## 意思相同,增长一个自定义字段,key:serverip ,value: ${serverip} 这个值是读取的系统环境变量,若是系统中没有定义这个环境变量,那么启动 filebeat 的时候会报错,找到这个值. serverip: ${serverip} ## 设置系统环境变量,建立文件 /etc/profile.d/serverip.sh 加入内容: export serverip=`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | cut -d':' -f2` ## 这里拿的是本机 IP ## 多行合并参数,正则表达式 multiline.pattern: '^\[' ## true 或 false;默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行 multiline.negate: true ## after 或 before,合并到上一行的末尾或开头 multiline.match: after ## ['ERROR','WARN'] 该属性能够配置只收集error级别和warn级别的日志,若是有配置多行收集,必定要将这个配置放在多行的后面 include_lines: ## ['DEBUG'] 该属性配置不收集DEBUG级别的日志,若是配置多行 这个配置也要放在多行的后面 exclude_lines: ## Logstash所在的主机 hosts: ## 若是设置为TRUE和配置了多台logstash主机,输出插件将负载均衡的发布事件到全部logstash主机。若是设置为false,输出插件发送全部事件到随机的一台主机上,若是选择的不可达将切换到另外一台主机。默认是false。 loadbalance ## 每一个配置的主机发布事件到Logstash的工做者数量。这最适用于启用负载平衡模式。示例:若是您有2个主机和3个工做人员,则共有6个工做人员启动(每一个主机3个)。 worker