solutionDrive.logstash
Ansible角色:Logstash
这是一个用于在RedHat/CentOS和Debian/Ubuntu上安装Logstash的Ansible角色。
请注意,此角色默认安装一个syslog grok模式;如果您想添加更多过滤器,请查看logstash_configuration_files
和logstash_filter_files
的文档。
例如,您可以创建一个名为13-myapp.conf
的文件,并使用适当的grok过滤器,然后重启logstash开始使用。可以通过Grok调试工具测试您的grok正则表达式。
需求
虽然其他方法也是可能的,但此角色旨在与Elasticsearch一起使用,以存储日志消息。
角色变量
可用的变量如下所列,并包含默认值(请参见defaults/main.yml
):
logstash_listen_port_beats: 5044
Logstash监听beats的端口。
logstash_version: 2.3
要安装的Logstash默认主版本。
logstash_configuration_files:
- 01-lumberjack-input.conf
- 30-lumberjack-output.conf
logstash_filter_files:
- 10-syslog.conf
- 11-nginx.conf
- 12-apache.conf
- 14-solr.conf
- 15-drupal.conf
logstash_elasticsearch_host: localhost
将要安装的输入/输出(配置文件)和过滤器文件的列表。默认情况下,会安装lumberjack输入/输出和变量过滤器文件。您可以通过将输入/输出文件放置在自己的templates
目录中,并将过滤器放在自己的files
目录中来指定自己的配置文件。然后在vars/main.yml
目录中创建自己的列表,并在包装角色中定义vars_files
,并包括此角色以使用自己的配置部署Logstash。请参见下面的示例剧本
。
logstash_elasticsearch_hosts:
- http://localhost:9200
Logstash应将日志发送到Elasticsearch的主机。
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
Logstash的SSL配置,用于接受来自远程主机上运行的logstash-forwarder的请求。安全提示:在生产或面向公众的(例如任何非测试)服务器上,您应创建自己的密钥/证书对,并使用该对,而不是包含的默认值!您可以使用OpenSSL创建密钥和证书文件,命令如下:
openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt
。
请注意,如果您没有在服务器上添加完整的信任链(包括自签名证书的证书颁发机构),filebeat和logstash可能无法正确使用自签名证书。请参见:https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
对于logstash_ssl_certificate_file
和logstash_ssl_key_file
,您可以提供相对于角色目录的路径,或文件的绝对路径。
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
是否应将本地syslog文件(定义为logstash_local_syslog_path
)的配置添加到logstash。如果您以不同方式监控本地syslog,或者您不关心本地syslog文件,请将其设置为false
。其他本地日志可以通过您自己放置在/etc/logstash/conf.d
中的配置文件添加。
logstash_enabled_on_boot: yes
如果您不希望logstash在系统启动时运行,请将其设置为no
。
logstash_install_plugins:
- logstash-input-beats
应安装的Logstash插件列表。
logstash_install_dir: /usr/share/logstash
安装目录的路径。以前,"/opt/logstash"是硬编码的,现在默认值是"/usr/share/logstash"。
其他说明
如果您发现在某个logstash
进程中CPU使用率很高,并且您正在使用Logstash与另一个在端口80上运行的应用程序一起使用,并且平台类似于带有upstart的Ubuntu,则logstash-web
进程可能会由于尝试在端口80上启动而陷入循环,失败后又尝试重新启动,因为在/etc/init/logstash-web.conf
中存在restart
标志。
要避免此问题,您可以更改该行以在重新启动语句中添加limit
,或者在剧本中将logstash-web
服务设置为enabled=no
,例如:
- name: 确保logstash-web进程已停止并禁用。
service: name=logstash-web state=stopped enabled=no
示例剧本
- hosts: search
vars_files:
- vars/main.yml
roles:
- geerlingguy.elasticsearch
- geerlingguy.logstash
许可证
MIT / BSD
作者信息
该角色由Jeff Geerling于2014年创建,他是Ansible for DevOps的作者。
ansible-galaxy install solutionDrive.logstash