efk-elastalert-alerta集中日志自动告警

组成

1、efk: 日志收集框架

2、estalert: 是基于 Elasticsearch 的报警工具

3、elastalert-kibana-plugin : kibana中elastalert插件,可以实现在kibana界面上编辑elastalert的告警规则配置。

4、alerta: 告警集中收集平台,elastalert告警规则可以配置alerta为接收平台。之前npgstack中alerta作为监控指标信息告警接收平台,日志信息告警配置为同一个alerta作为告警接收平台,实现一个界面管理和观察多种维度的告警信息。

部署

上一篇文章使用docker-compose来部署efk日志收集框架,这样通过改造kibana容器镜像,把elastalert-kibana-plugin插件安装上。在yml文件增加服务elastalert。

改造kibana容器镜像,Dockerfile文件内容如下:

FROM kibana/kibana-oss:7.5.0
COPY ./elastalert-kibana-plugin-1.1.0-7.5.0.zip /tmp/
RUN ["kibana-plugin", "install", "file:///tmp/elastalert-kibana-plugin-1.1.0-7.5.0.zip"]

执行命令构建镜像

docker build -f Dockerfile -t kibana/kibana-oss:7.5.0-ea .

docker-compose.yml增加服务elastalert。

---
version: '2'
services:
  elastalert:
    image: bitsensor/elastalert:3.0.0-beta.1
    ports:
      - 3030:3030
      - 3333:3333
    volumes:
      - ./elastalert/config/elastalert.yaml:/opt/elastalert/config.yaml
      - ./elastalert/config/elastalert-test.yaml:/opt/elastalert/config-test.yaml
      - ./elastalert/config/config.json:/opt/elastalert-server/config/config.json
      - ./elastalert/rules:/opt/elastalert/rules
      - ./elastalert/rule_templates:/opt/elastalert/rule_templates
    network_mode: "bridge"
    links:
    - "elasticsearch"

  elasticsearch:
    image: elasticsearch/elasticsearch-oss:7.6.2
    environment:
      - 'node.name=HEYJUDE'
      - 'discovery.type=single-node'
      - 'bootstrap.memory_lock=true'
      - 'ES_JAVA_OPTS=-Xms256m -Xmx256m'
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch:/usr/share/elasticsearch/data
    network_mode: "bridge"
  
  kibana:
    image: kibana/kibana-oss:7.5.0-ea
    ports:
      - 5601:5601
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    network_mode: "bridge"
    links:
    - "elasticsearch"
    - "elastalert"
  
  fluentd:
    image: fluent/fluentd:v1.4.2-2.0-es
    ports:
      - 24224:24224
      - 24224:24224/udp
    volumes:
      - ./fluentd/etc:/fluentd/etc
    network_mode: "bridge"
    links:
    - "elasticsearch"
  
networks:
  default:
    external:
      name: bridge

kibana服务增加配置项如下:

# cat kibana/config/kibana.yml 
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elastalert-kibana-plugin.serverHost: elastalert
elastalert-kibana-plugin.serverPort: 3030

alerta使用的是npgstack中的服务alerta。

elastalert测试告警规则

配置测试告警规则如下:

es_host: elasticsearch
es_port: 9200
name: test
type: frequency
index: fluent*
num_events: 5
timeframe:
    hours: 6
filter:
- term:
    log: "error"
alert:
  - alerta
alerta_api_url: "http://192.168.122.61:8889/api/alert"
alerta_api_key: "BU0SYnGHu9_1qEiWM12rXP7yMAZkFldWcupRIU7x"
alerta_text: "error in log"
alerta_value: "error"
alerta_event: "error_log"

告警规则表明,如果6小时内es中索引为fluent*的log字段出现error信息达到5次,则触发一个告警到alerta中。

告警类型:frequency

alerta显示界面配置:alerta_text,alerta_value,alerta_event。

其他的配置项容易理解。

在这里插入图片描述
在这里插入图片描述

在alerta界面看到的告警信息。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过docker compose可以一次性部署Elasticsearch、Filebeat和Kibana(EFK)。你需要使用以下镜像: - docker pull store/elastic/filebeat:7.6.2 - docker pull elasticsearch:7.6.2 - docker pull kibana:7.6.2 在docker compose文件中,你可以创建一个包含两个Elasticsearch节点的集群。其中一个节点(es01)监听本地主机的9200端口,另一个节点(es02)通过Docker网络与es01通信。为了保持数据的一致性,你可以将数据目录(data01和data02)挂载到Docker存储节点上。如果目录不存在,docker compose会在启动集群时自动创建它们(默认位置为/var/lib/docker/volumes/)。 在Filebeat和Kibana的配置中,你需要将Elasticsearch的主机地址改为集群中监听9200端口的es01节点。 以下是一个示例的docker compose文件部分内容(假设为filebeat.docker-compose.yml): ``` version: '3' services: elasticsearch: image: elasticsearch:7.6.2 ports: - 9200:9200 volumes: - data01:/path/to/data01 filebeat: image: store/elastic/filebeat:7.6.2 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/containers:/var/lib/docker/containers configs: - source: filebeat-config target: /usr/share/filebeat/filebeat.yml kibana: image: kibana:7.6.2 environment: - ELASTICSEARCH_HOSTS=es01:9200 ports: - 5601:5601 volumes: data01: configs: filebeat-config: file: ./filebeat.yml ``` 请注意,以上仅为示例,你可能需要根据实际情况进行调整。另外,为了解决一些常见问题,你可能需要确保正确设置了vm.max_map_count,并了解如何手动创建Kibana节点并加入集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值