Centos7系统ansible安装filebeat

云计算

Centos7系统ansible安装filebeat

2025-01-27 00:07


?CentOS 7系统Ansible自动化部署Filebeat全流程 (含企业级安全加固与配置优化方案) ? 核心逻辑: 基于Ansible实现批量部署 Filebeat作为轻量级日志采集器

                                            




?CentOS 7系统Ansible自动化部署Filebeat全流程
(含企业级安全加固与配置优化方案)


核心逻辑:

  • 基于Ansible实现批量部署
  • Filebeat作为轻量级日志采集器
  • 支持加密传输与负载均衡

Playbook设计规范

▶ 目录结构规划

filebeat-deploy/
├── group_vars/
│   └── all.yml       # 全局变量定义
├── roles/
│   └── filebeat/
│       ├── tasks/
│       │   └── main.yml
│       ├── templates/
│       │   └── filebeat.yml.j2
│       └── files/
│           └── ca.crt  # SSL证书
└── site.yml

▶ 主Playbook示例

# site.yml
- name: 部署Filebeat集群
  hosts: log_servers
  gather_facts: true
  become: true
  roles:
    - role: filebeat
      tags: filebeat

核心任务分解

任务1:安全安装包下载

# roles/filebeat/tasks/main.yml
- name: 导入Elastic GPG密钥
  rpm_key:
    state: present
    key: "https://artifacts.elastic.co/GPG-KEY-elasticsearch"

- name: 安装Filebeat
  yum:
    name: filebeat
    enablerepo: elastic-8.x
    state: latest

关键参数说明:

  • enablerepo:指定官方仓库版本分支
  • state: latest:保持版本自动更新(生产环境建议固定版本)

任务2:配置文件模板

# roles/filebeat/templates/filebeat.yml.j2
filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
  fields:
    env: "{{ env_tag }}"  # 环境标识

output.elasticsearch:
  hosts: [{% for host in es_hosts %}"{{ host }}:9200"{% if not loop.last %},{% endif %}{% endfor %}]
  username: "{{ es_user }}"
  password: "{{ es_pass }}"
  ssl.certificate_authorities: "/etc/filebeat/ca.crt"

安全增强:

  • 使用SSL证书加密通信
  • 通过Ansible Vault加密敏感凭证
  • 字段级日志分类标识

任务3:证书部署

- name: 部署CA证书
  copy:
    src: files/ca.crt
    dest: /etc/filebeat/
    owner: root
    group: root
    mode: 0644

任务4:服务管理

- name: 重载服务配置
  systemd:
    name: filebeat
    state: reloaded
    enabled: yes
    daemon_reload: yes

- name: 验证服务状态
  command: filebeat test output
  register: test_result
  failed_when: "'ERROR' in test_result.stdout"

企业级配置优化

1. 多日志输入配置

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/*.log
  fields_under_root: true
  fields:
    service: nginx

- type: log  
  paths:
    - /var/log/java/*.log
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

2. 负载均衡输出

output.elasticsearch:
  hosts: ["es-node1:9200", "es-node2:9200"]
  loadbalance: true
  compression_level: 5
  worker: 4

3. 本地缓存配置

queue.spool:
  file:
    path: "/var/lib/filebeat"
    size: 512MB
    page_size: 16MB

部署验证与排错

1. 服务状态检查

ansible log_servers -m shell -a "systemctl status filebeat"
ansible log_servers -m shell -a "filebeat export template"

2. 日志传输测试

# 生成测试日志
echo "$(date) Ansible test log" >> /var/log/test.log

# 查看Filebeat采集状态
journalctl -u filebeat -f --since "1 min ago"

3. Elasticsearch验证

curl -XGET 'http://es-node:9200/_cat/indices?v' | grep filebeat

安全合规要点

  1. 权限控制
- name: 配置文件权限
  file:
    path: /etc/filebeat/
    owner: root
    group: root
    mode: 0750
  1. 审计日志
logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat.log
  keepfiles: 7
  1. 网络防护
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="elasticsearch" source address="192.168.1.0/24" accept'

运维建议:

  • 使用Ansible Tower实现可视化部署
  • 配合ELK Stack构建完整日志分析平台
  • 定期执行 filebeat setup --index-management优化索引
  • 通过Metricbeat监控Filebeat运行状态

标签:
  • Centos7
  • ansible