geerlingguy.logstash

Ansible 角色:Logstash

CI

一个在 RedHat/CentOS 和 Debian/Ubuntu 上安装 Logstash 的 Ansible 角色。

请注意,此角色默认安装 syslog grok 模式;如果您想添加更多过滤器,请在 /etc/logstash/conf.d/ 目录中添加它们。例如,您可以创建一个名为 13-myapp.conf 的文件,并添加适当的 grok 过滤器,然后重启 Logstash 开始使用。使用 Grok Debugger 测试您的 grok 正则表达式。

要求

虽然其他方法也是可能的,但这个角色是设计用来与 Elasticsearch 配合使用,作为存储日志消息的后端。

角色变量

可用变量如下所示,并列出了默认值(参见 defaults/main.yml):

logstash_version: '7.x'

要安装的 Logstash 主要版本。

logstash_package: logstash

要安装的具体软件包。您可以通过更改软件包名称来使用适合您平台和软件包管理器的语法指定软件包的版本。

logstash_listen_port_beats: 5044

Logstash 监听 beats 的端口。

logstash_elasticsearch_hosts:
  - http://localhost:9200

Logstash 应该将日志发送到的 Elasticsearch 主机。

logstash_dir: /usr/share/logstash

Logstash 安装的目录。

logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key

SSL 证书和密钥文件的本地路径,将复制到 logstash_ssl_dir 中。

有关生成和使用自签名证书与 Logstash 及 Filebeat 的信息,请参见 生成自签名证书

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: true

如果不希望 Logstash 在系统启动时运行,请将其设置为 false

logstash_install_plugins:
  - logstash-input-beats
  - logstash-filter-multiline

应安装的 Logstash 插件列表。

logstash_setup_default_config: true

如果不希望添加此角色随附的默认配置文件(在 files/filters 目录中),请将其设置为 false。您可以在 /etc/logstash/conf.d 中添加自己的配置文件。

生成自签名证书

出于安全考虑,您应使用自己的有效证书和密钥文件,并在您的剧本中更新 logstash_ssl_* 变量以使用您的证书。

要生成自签名证书/密钥对,您可以使用以下命令:

$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'

请注意,Filebeat 和 Logstash 可能无法与自签名证书正常工作,除非您还将自签名证书的完整信任链(包括证书颁发机构)添加到您的服务器上。请参见:https://github.com/elastic/logstash/issues/4926#issuecomment-203936891

较新版本的 Filebeat 和 Logstash 还要求使用 pkcs8 格式的私钥,这可以通过转换之前生成的密钥来生成,例如:

openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8

其他说明

如果您看到某个 logstash 进程的 CPU 使用率很高,并且您在像 Ubuntu 这样的平台上与其他应用程序一起使用 Logstash,且该应用程序占用端口 80,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

  pre_tasks:
    - name: 在 Debian/Ubuntu 上使用 Java 8。
      set_fact:
        java_packages:
          - openjdk-8-jdk
      when: ansible_os_family == 'Debian'

  roles:
    - geerlingguy.java
    - geerlingguy.elasticsearch
    - geerlingguy.logstash

许可证

MIT / BSD

作者信息

此角色由 Jeff Geerling 于 2014 年创建,他是 Ansible for DevOps 的作者。

安装
ansible-galaxy install geerlingguy.logstash
许可证
mit
下载
247.7k
拥有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns