freedomofpress.elk

ELK Ansible角色

安装ELK堆栈(Elasticsearch、Logstash和Kibana),用于日志聚合和监控。旨在与Riemann集成,以实现告警功能。

需求

角色变量

elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"

# 提供禁用快照功能的能力。由于未经过充分测试,默认值为false。如果在第一次运行中设置为true,可能需要在运行之前添加 `meta: flush_handlers`,以确保`path.repo:`变量被运行的elasticsearch服务识别。
elk_elasticsearch_snapshot: false

elk_elasticsearch_snapshot_directory: /var/lib/elasticsearch/backups
elk_elasticsearch_snapshot_repository: es_backup
elk_elasticsearch_snapshot_initialization:
  type: fs
  settings:
    location: "{{ elk_elasticsearch_snapshot_directory }}"
    compress: yes
  _hack: null

# 使用iso8601格式而不是时间戳会更好,但ElasticSearch API在使用iso8601格式时会抛出无效快照名称错误。
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"

# 在/etc/security/limits.conf中设置的限制。如果覆盖任何单独元素,请确保复制整个列表。
elk_elasticsearch_pam_limits:
    - domain: elasticsearch
      limit_item: memlock
      limit_type: hard
      value: unlimited

    - domain: elasticsearch
      limit_item: memlock
      limit_type: soft
      value: unlimited

    - domain: elasticsearch
      limit_item: nofile
      limit_type: soft
      value: 65535

    - domain: elasticsearch
      limit_item: nofile
      limit_type: hard
      value: 65535

# 用于警报的Riemann插件,适用于ElasticSearch v2的去点插件。
# 参见:https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
  - logstash-output-riemann
  - logstash-filter-de_dot

# 用于防火墙限制和IPv4查找的接口
elk_network_interface: eth0

elk_cluster_name: elk-logging

# 默认禁用SSL。将这些变量设置为您希望使用的SSL证书的完整路径,Nginx将强制使用HTTPS连接。
# 您必须在单独的剧本中将SSL证书放在那里。
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost

# 不适合生产使用!覆盖以保护登录。
elk_kibana_username: kibana
elk_kibana_password: kibana

# 覆盖以更改登录页面,例如自定义仪表板:
# "dashboard/Your-Dashboard-Name"。您必须将仪表板名称中的空格替换为连字符,因为Kibana对此有要求。
elk_kibana_default_app: discover

# 启用“日志客户端”的IP白名单的自动配置。使用ufw。如果您使用不同的角色进行防火墙配置,请禁用此功能。
elk_configure_firewall: true

# 允许下游剧本使用自定义网页服务器配置
# 将其设置为false以跳过此角色的nginx部署
elk_configure_nginx: true

# 允许下游剧本覆盖模式和过滤器的文件glob列表
elk_logstash_patterns:
  - logstash-patterns/*
elk_logstash_filters:
  - logstash-configs/*

# 声明要复制的GeoIP数据库的文件glob。默认关闭。
elk_logstash_geoipdbs: []

用法

在剧本中使用该角色,如下所示:

- hosts: logserver
  roles:
    - role: elk
      elk_kibana_username: admin
      elk_kibana_password: WowWhatAStrongPassword4

添加可视化

该角色尚未自动创建Kibana可视化。但是,您可以导入角色附带的保存可视化,文件位于files/kibana-dashboards.json。 在Kibana界面中进入 设置 -> 对象 -> 导入,然后浏览到JSON文件。

运行测试

此角色使用MoleculeServerSpec进行测试。使用方法:

pip install molecule
gem install serverspec
molecule test

您还可以运行选择命令:

molecule idempotence
molecule verify

有关更多信息,请参见Molecule文档。

进一步阅读

安装

开发自定义过滤器

请查看此代码库中的examples/writing-filters目录以获取预配置的开发环境。将该目录复制到安装了logstash的服务器上,或使用Vagrant测试虚拟机。

维护

许可证

MIT

关于项目

Stands up ELK stack for log aggregation.

安装
ansible-galaxy install freedomofpress.elk
许可证
Unknown
下载
152
拥有者
Defending and supporting cutting-edge transparency journalism in the face of adversity.