温馨提示×

如何用Filebeat监控远程服务器

小樊
47
2025-11-21 03:53:49
栏目: 云计算

总体思路

  • 在需要被采集的远程服务器上安装并运行 Filebeat,让它读取本机的日志文件。
  • 将事件通过 Logstash 或直接发送到 Elasticsearch;若走 Logstash,可在集中端做过滤、脱敏与路由。
  • Kibana 中创建索引模式并可视化查看。
  • 安全上建议启用 TLS/SSL认证,避免明文传输与越权访问。

方案一 远程服务器安装 Filebeat 直连 ES 或 Logstash

  • 安装 Filebeat(以 CentOS 为例)
    • 使用 YUM 安装:sudo yum install filebeat -y
  • 配置采集与输出(示例)
    • 直连 Elasticsearch
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/*.log
        fields:
          type: remote_nginx
      
      output.elasticsearch:
        hosts: ["es.example.com:9200"]
        protocol: https
        ssl.verification_mode: full
        ssl.certificate_authorities: ["/path/to/ca.crt"]
        username: "filebeat_writer"
        password: "YOUR_PASSWORD"
        index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
      
    • 或输出到 Logstash
      output.logstash:
        hosts: ["logstash.example.com:5044"]
      
  • 启动与验证
    • 启动:sudo systemctl start filebeat && sudo systemctl enable filebeat
    • 查看状态与日志:sudo systemctl status filebeatsudo journalctl -u filebeat -f
  • 说明
    • 若 Elasticsearch 使用自签名证书,开发环境可临时将 ssl.verification_mode 设为 none,生产环境应使用 full 并配置 CA/客户端证书

方案二 集中式 Logstash 接收多台远程 Filebeat

  • 远程服务器 Filebeat 配置(输出到集中 Logstash)
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
      fields:
        service: app01
        env: prod
    
    output.logstash:
      hosts: ["logstash.example.com:5044"]
    
  • 集中端 Logstash 配置(示例)
    input {
      beats {
        port => 5044
      }
    }
    filter {
      # 可在此做 grok、mutate、geoip 等处理
    }
    output {
      elasticsearch {
        hosts => ["es.example.com:9200"]
        index => "%{[fields][service]}-%{+YYYY.MM.dd}"
        user => "es_writer"
        password => "YOUR_PASSWORD"
      }
      stdout { codec => rubydebug }  # 调试用
    }
    
  • 运行与验证
    • Logstash 启动:bin/logstash -f logstash.conf
    • 在 Kibana 创建索引模式(如 filebeat-* 或按服务名前缀),开始检索与可视化。

安全与运维要点

  • 启用 TLS/SSL:生产环境将 ssl.verification_mode 设为 full,提供 CA 证书;必要时配置客户端证书与密钥。
  • 启用 认证:为 Elasticsearch/Logstash 配置 用户名/密码API Key,并在 Filebeat 输出中设置。
  • 资源与稳定性:为 Filebeat 配置合适的 close_inactivescan_frequencybackoff 参数,避免频繁打开/关闭文件句柄。
  • 多租户与路由:使用 fields/tags 标记来源,在 Logstash 中按字段分流到不同索引或做差异化处理。
  • 模块与解析:对常见日志(如 Nginx、MySQL、System)启用 Filebeat 模块 并使用内置 Ingest Pipeline 解析,减少在 Logstash 的复杂配置。

快速验证步骤

  • 在远程服务器确认 Filebeat 已运行:sudo systemctl status filebeat;实时看日志:sudo journalctl -u filebeat -f
  • 在 Elasticsearch 或 Kibana 检查是否出现以 filebeat-* 或自定义前缀的索引与数据。
  • 若有错误,优先检查输出目标地址、端口、证书路径与账号权限是否正确。

0