opstree_devops.elastalert

https://galaxy.ansible.com/opstree_devops/elastalert 由 Ashutosh Mishra 提供

Ansible 角色:ElastAlert

此角色用于安装和设置 ElastAlert,并根据用户定义的警报配置进行配置。

版本历史

日期 版本 描述 修改人
2020 年 6 月 27 日 v0.0.1 初始草稿 Ashutosh Mishra
2021 年 1 月 11 日 v0.0.2 规则管理更新 Paul Belloc @NanoPish 通过 https://perfmaker.com/

主要特性

  • 该角色通过 ElastAlert 自动化设置警报。 在此角色中,可以附加 ElastAlert 规则文件。

支持的操作系统

  • Ubuntu bionic
  • Ubuntu xenial

要求

  • python3
  • python-pip3
  • PyYAML
  • setuptools

依赖项

  • Elasticsearch

目录结构

├── README.md
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   ├── install.yml
│   ├── main.yml
│   └── service.yml
├── templates
│   ├── config.yaml.j2
│   └── elastalert-systemd.service.j2
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

7 个目录,12 个文件

角色变量

变量 默认值 描述 类型
host_name localhost Elasticsearch 主机 必须
es_port 9200 Elasticsearch 端口 必须
elastalert_rules_dir /opt/elastalert/rules ElastAlert 规则目录 必须
elastalert_upload_local_rules_dir files/elastalert/rules Ansible 机器上传规则的目录。如果想手动上传,则使用 False 如果希望角色从 ansible 机器的 elastalert_upload_local_rules_dir 上传规则到 elastalert 机器的 elastalert_rules_dir,则必须
elastalert_delete_rules_not_in_elastalert_upload_local_rules_dir yes 将删除不在 elastalert_upload_local_rules_dir 中的规则 如果希望删除 elastalert 机器上不在 ansible 机器的 elastalert_upload_local_rules_dir 中的规则,则必须
elastalert_service_user_name elastalert ElastAlert 用户名 必须
elastalert_service_group_name elastalert ElastAlert 组名 必须
elastalert_data_dir /opt 数据目录 必须
installation_dir /opt ElastAlert 安装目录 必须
elastalert_version 0.2.1 ElastAlert 版本 必须
es_user elastic Elasticsearch 用户名 如果 ES 中有身份验证,则必须
es_pass password Elasticsearch 密码 如果 ES 中有身份验证,则必须
use_ssl False 使用 SSL 可选(仅在需要 SSL 时)
verify_certs False 验证证书 可选(仅在需要 SSL 且想验证证书时)
client_cert /opt/elastalert/clientcert.cer SSL 证书 可选(仅在需要 SSL 时)
client_key /opt/elastalert/clientcert.key SSL 证书密钥 可选(仅在需要 SSL 时)

示例剧本

简单示例

---
- name: 自动化 ElastAlert 设置
  hosts: elastalert
  roles:
    - role: osm_elastalert
        es_pass: password
        host_name: "你的 Elasticsearch IP 或域名"
...

带有 HTTP Elasticsearch 身份验证 + SSL + 特定的本地 ElastAlert 规则目录 + 在规则文件中使用的 slack webhook

---
- name: 自动化 ElastAlert 设置
  hosts: elastalert
  roles:
    - role: osm_elastalert
        es_pass: password
        use_ssl: True
        client_cert: /opt/elastalert/clientcert.cer
        client_key: /opt/elastalert/clientcert.key
        slack_webhook_url: "https://hooks.slack.com/services/your_webhook_url"
        host_name: "你的 Elasticsearch IP 或域名"
        elastalert_upload_local_rules_dir: files/elastalert/cluster_one_elastalert_rules/
...

运行所有任务

$  ansible-playbook site.yml -i inventory

仅运行与上传和删除规则相关的任务,以同步 elastalert 规则目录与本地 ansible 规则目录的内容

$  ansible-playbook site.yml --tags elastalert,elastalert-rules

清单

清单应如下所示:

[server]                 
192.xxx.x.xxx    ansible_user=ubuntu 

未来拟议的更改

  • 更新 ElastAlert 到 CentOS 6 和 7。

参考资料

作者信息

姓名:Ashutosh Mishra
邮件:ashutosh.mishra@opstree.com
安装
ansible-galaxy install opstree_devops.elastalert
许可证
Unknown
下载
77
拥有者