Beats 平台

    也就是说,所有的 beat 工具,在配置上,除了 input 以外,在 output、filter、shipper、logging、run-options 上的配置规则都是完全一致的。

    5.0 版本后,beats 新增了简单的 filter 功能,用来完成事件过滤和字段删减:

    • equals
    • contains
    • regexp
    • range
    • or
    • and
    • not

    目前 beat 可以发送数据给 Elasticsearch、Logstash、File、Kafka、Redis 和 Console 六种目的地址。

    beats 发送到 Elasticsearch 也是走 HTTP 接口。示例配置段如下:

    1. elasticsearch:
    2. hosts: ["http://localhost:9200", "https://onesslip:9200/path", "anotherip"]
    3. parameters: {pipeline: my_pipeline_id} # 仅用于 Elasticsearch 5.0 以后的 ingest 方式
    4. username: "user"
    5. password: "pwd"
    6. index: "topbeat"
    7. bulk_max_size: 20000
    8. flush_interval: 5
    9. tls:
    10. certificate_authorities: ["/etc/pki/root/ca.pem"]
    11. certificate: "/etc/pki/client/cert.pem"
    12. certificatekey: "/etc/pki/client/cert.key"
    • index 表示写入 Elasticsearch 时索引的前缀,比如示例即表示索引名为 topbeat-yyyy.MM.dd

    Logstash

    1. input {
    2. beats {
    3. port => 5044
    4. }
    5. }
    6. output {
    7. elasticsearch {
    8. hosts => ["http://localhost:9200"]
    9. index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    10. }
    11. }

    beat 示例配置段如下:

    这里 worker 的含义,是 beat 连到每个 host 的线程数。在 loadbalance 开启的情况下,意味着有 4 个worker 轮训发送数据。

    1. output:
    2. file:
    3. path: "/tmp/topbeat"
    4. filename: topbeat
    5. rotate_every_kb: 1000
    6. number_of_files: 7

    Kafka

    1. output:
    2. kafka:
    3. hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
    4. topic: '%{[type]}'
    5. topics:
    6. - key: "info_list"
    7. when:
    8. contains:
    9. message: "INFO"
    10. - key: "debug_list"
    11. when:
    12. contains:
    13. - key: "%{[type]}"
    14. "http": "frontend_list"
    15. "nginx": "frontend_list"
    16. "mysql": "backend_list"
    17. partition:
    18. round_robin:
    19. reachable_only: true
    20. required_acks: 1
    21. compression: gzip
    22. max_message_bytes: 1000000
    • 大于 max_message_bytes 长度的事件(注意不只是原日志长度)会被直接丢弃。
    • partition 策略默认为 hash。可选项还有 random 和 round_robin。
    • compression 可选项还有 none 和 snappy。
    • required_acks 可选项有 -1、0 和 1。分别代表:等待全部副本完成、不等待、等待本地完成。
    • topics 用来配置基于匹配规则的选择器,支持 when 和 mapping,when 条件下可以使用上小节列出的各种 filter。如果都匹配不上,则采用 topic 配置。

    Console

    1. output:
    2. console:
    3. pretty: true

    shipper 部分是一些和网络拓扑相关的配置,就目前来说,大多数是 packetbeat 独有的。

    1. shipper:
    2. name: "my-shipper"
    3. tags: ["my-service", "hardware", "test"]
    4. ignore_outgoing: true
    5. refresh_topology_freq: 10
    6. topology_expire: 15
    7. geoip:
    8. paths:
    9. - "/usr/share/GeoIP/GeoLiteCity.dat"
    1. runoptions:
    2. uid=501