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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

<think>好的,我现在需要帮助用户找到使用docker-compose部署EFK日志系统的教程。用户提到了几个引用,我需要先仔细看看这些引用内容,看看是否有直接相关的步骤或配置。 首先,引用[1]提到在Dockerfile目录下运行docker build命令构建Fluentd镜像,然后运行docker-compose。引用[2]描述了线上应用通过logback发送日志到Fluentd的24224端口,并提到版本信息,比如Fluentd 1.3.2,Elasticsearch 6.5.4等。引用[3]说明EFK是一套解决方案,需要docker-compose,并提到了各个组件的作用。引用[4]则提供了Docker版本和CentOS系统信息,以及配置镜像加速的步骤。 用户的需求是寻找使用docker-compose部署EFK的教程。综合这些引用,我需要整理出一个清晰的步骤指南。首先,可能需要准备Docker环境,包括安装Docker和docker-compose,配置镜像加速(如引用4中的阿里镜像)。然后,编写docker-compose.yml文件,包含Elasticsearch、Fluentd和Kibana的服务配置。可能需要构建自定义的Fluentd镜像,如引用1中的docker build命令,因为Fluentd可能需要特定的插件,比如fluent-plugin-elasticsearch。引用2提到版本兼容性,所以需要注意各组件的版本匹配,例如Elasticsearch和Kibana都使用6.5.4版本,Fluentd的插件版本为4.1.1。此外,配置文件的路径和端口映射也是关键点,比如Fluentd监听24224端口,Kibana的5601端口需要暴露。 接下来,用户可能需要启动服务,验证日志收集是否正常,以及通过Kibana界面查看日志。另外,可能还需要配置应用程序的日志输出到Fluentd,如引用2中提到的SpringBoot应用使用logback发送日志24224端口。在整理步骤时,需要确保每一步都正确无误,并且考虑到可能的常见问题,比如端口冲突、权限问题或版本不兼容。 最后,生成相关问题,可能涉及性能优化、配置细节或故障排除。比如如何调整Elasticsearch的资源配置,如何扩展Fluentd以处理更多日志,或者如何排查日志未显示的问题。</think>### 分步指南:使用docker-compose部署EFK日志系统 以下是基于引用内容整理的部署步骤,确保版本兼容性与配置完整性: --- #### **1. 环境准备** - **安装Docker与docker-compose** 确保Docker版本≥18.06.1,docker-compose≥1.25.0[^4]。 ```bash # 安装Docker curl -fsSL https://get.docker.com | bash -s docker # 安装docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` - **配置镜像加速(可选但推荐)** 修改`/etc/docker/daemon.json`,添加阿里云镜像加速[^4]: ```json { "registry-mirrors": ["https://registry.docker-cn.com/"] } ``` 重启服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` --- #### **2. 编写docker-compose.yml** 创建`docker-compose.yml`文件,内容如下(兼容版本参考[^2][^3]): ```yaml version: '3' services: elasticsearch: image: elasticsearch:6.5.4 container_name: elasticsearch environment: - "discovery.type=single-node" volumes: - es_data:/usr/share/elasticsearch/data ports: - "9200:9200" - "9300:9300" networks: - efk-net kibana: image: kibana:6.5.4 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 depends_on: - elasticsearch networks: - efk-net fluentd: build: ./fluentd # 指向自定义Fluentd镜像的Dockerfile目录 container_name: fluentd ports: - "24224:24224" - "24224:24224/udp" volumes: - ./fluentd/conf:/fluentd/etc depends_on: - elasticsearch networks: - efk-net volumes: es_data: networks: efk-net: driver: bridge ``` --- #### **3. 配置Fluentd** - **创建Fluentd配置文件** 在`fluentd/conf/fluent.conf`中添加以下内容(适配Elasticsearch插件): ```xml <source> @type forward port 24224 bind 0.0.0.0 </source> <match *.**> @type elasticsearch host elasticsearch port 9200 index_name fluentd-%Y%m%d <buffer> @type file path /fluentd/log/buffer flush_interval 5s </buffer> </match> ``` - **构建自定义Fluentd镜像** 在`fluentd/Dockerfile`中指定插件版本: ```dockerfile FROM fluent/fluentd:v1.3.2-debian RUN gem install fluent-plugin-elasticsearch -v 4.1.1 COPY conf/ /fluentd/etc/ ``` 构建镜像: ```bash docker build -t fluentd_es:v1 ./fluentd ``` --- #### **4. 启动EFK服务** ```bash docker-compose up -d ``` --- #### **5. 验证部署** 1. **检查服务状态** - Elasticsearch: `http://服务器IP:9200` 应返回版本信息。 - Kibana: `http://服务器IP:5601` 可访问Web界面。 2. **发送测试日志** 通过`nc`命令模拟日志发送: ```bash echo '{"message":"test log"}' | nc localhost 24224 ``` 3. **在Kibana中查看日志** - 创建索引模式`fluentd-*`。 - 在`Discover`页查看日志数据。 --- #### **常见问题** - **版本兼容性**:Elasticsearch、Kibana、Fluentd插件需版本匹配(如6.x系列)。 - **存储权限**:若Elasticsearch启动失败,检查`es_data`目录权限(需`chmod 777 es_data`)。 - **网络配置**:确保所有服务在同一个Docker网络`efk-net`中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值