freedomofpress.elk
ELK Ansible角色
安装ELK堆栈(Elasticsearch、Logstash和Kibana),用于日志聚合和监控。旨在与Riemann集成,以实现告警功能。
需求
- freedomofpress.generate-ssl-cert角色
- 日志服务器需要2GB RAM
- 日志客户端用于发送日志
角色变量
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文件。
运行测试
此角色使用Molecule和ServerSpec进行测试。使用方法:
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.