FIleBeat配置
output
目前 beat 可以发送数据给 Elasticsearch、Logstash、File、Kafka、Redis 和 Console 六种目的地址。
Elasticsearch
beats 发送到 Elasticsearch 也是走 HTTP 接口。示例配置段如下:
代码语言:javascript复制output:
elasticsearch:
hosts: ["http://localhost:9200", "https://onesslip:9200/path", "anotherip"]
parameters: {pipeline: my_pipeline_id} # 仅用于 Elasticsearch 5.0 以后的 ingest 方式
username: "user"
password: "pwd"
index: "topbeat"
bulk_max_size:
flush_interval:
tls:
certificate_authorities: ["/etc/pki/root/ca.pem"]
certificate: "/etc/pki/client/cert.pem"
certificatekey: "/etc/pki/client/cert.key"
hosts
中可以通过 URL 的不同形式,来表示 HTTP 还是 HTTPS,是否有添加代理层的 URL 路径等情况。 index
表示写入 Elasticsearch 时索引的前缀,比如示例即表示索引名为 topbeat-yyyy.MM.dd
Logstash
beat 写入 Logstash 时,会配合 Logstash-1.5 后新增的 metadata 特性。将 beat 名和 type 名记录在 metadata 里。所以对应的 Logstash 配置应该是这样:
代码语言:javascript复制input {
beats {
port =>
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{ YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
beat 示例配置段如下:
代码语言:javascript复制output:
logstash:
hosts: ["localhost:5044", "localhost:5045"]
worker:
loadbalance: true
index: topbeat
这里 worker
的含义,是 beat
连到每个 host
的线程数。在loadbalance
开启的情况下,意味着有 4
个worker 轮训发送数据。
File
代码语言:javascript复制output:
file:
path: "/tmp/topbeat"
filename: topbeat
rotate_every_kb:
number_of_files:
Kafka
代码语言:javascript复制output:
kafka:
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
topic: '%{[type]}'
topics:
- key: "info_list"
when:
contains:
message: "INFO"
- key: "debug_list"
when:
contains:
message: "DEBUG"
- key: "%{[type]}"
mapping:
"http": "frontend_list"
"nginx": "frontend_list"
"mysql": "backend_list"
partition:
round_robin:
reachable_only: true
required_acks:
compression: gzip
max_message_bytes:
大于 max_message_bytes
长度的事件(注意不只是原日志长度)会被直接丢弃。 partition
策略默认为 hash
。可选项还有 random
和 round_robin
compression
可选项还有 none
和 snappy
。 required_acks
可选项有 -1、0 和 1。分别代表:等待全部副本完成、不等待、等待本地完成。 topics
用来配置基于匹配规则的选择器,支持 when
和 mapping
,when
条件下可以使用上小节列出的各种 filter
。如果都匹配不上,则采用 topic
配置。
Redis
代码语言:javascript复制output:
redis:
hosts: ["localhost"]
password: "my_password"
key: "filebeat"
db:
timeout:
Redis 输出也有 keys 配置。方式和 Kafka 的 topics 类似。
Console
代码语言:javascript复制output:
console:
pretty: true
shipper
shipper 部分是一些和网络拓扑相关的配置,就目前来说,大多数是 packetbeat 独有的。
代码语言:javascript复制shipper:
name: "my-shipper"
tags: ["my-service", "hardware", "test"]
ignore_outgoing: true
refresh_topology_freq:
topology_expire:
geoip:
paths:
- "/usr/share/GeoIP/GeoLiteCity.dat"
logging
代码语言:javascript复制logging:
level: warning
to_files: true
to_syslog: false
files:
path: /var/log/mybeat
name: mybeat.log
keepfiles:
run options
代码语言:javascript复制runoptions:
uid=
gid=