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界面看到的告警信息。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章