ELK 日志采集框架:功能测试与告警集成

Posted AusKa_T

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK 日志采集框架:功能测试与告警集成相关的知识,希望对你有一定的参考价值。

1 部署日志模块

1.1 打包

参考博文: ELK 日志采集框架(二):日志模块开发

下载源码,打包成jar包,上传到服务器的 /usr/local/

1.2 部署

[root@localhost software]# cd /usr/local
[root@localhost local]# ll
-rw-r--r--. 1 root   root   252554263 3月  27 18:20 collector.jar

1.3 启动

[root@localhost local]# nohup java -jar collector.jar

2 启动服务

2.1 启动 zookeeper

[root@localhost software]# /opt/module/zookeeper-3.4.10/bin/zkServer.sh start

2.2 启动 kafka

[root@localhost software]# /usr/local/kafka_2.12/bin/kafka-server-start.sh /usr/local/kafka_2.12/config/server.properties &

2.3 启动 elasticsearch

[root@localhost software]# /usr/local/elasticsearch-7.4.2/bin/elasticsearch

2.4 启动 filebeat

[root@localhost software]# /usr/local/filebeat-7.4.2/filebeat &

2.5 启动logstash

[root@localhost software]# nohup /usr/local/logstash-7.4.2//bin/logstash -f /usr/local/logstash-7.4.2/script/logstash-script.conf &

3 kibana配置

访问 kibana的 管理页面 192.168.51.4:5601 选择 Management -> Kinaba - Index Patterns

3.1 配置全量日志索引

3.1.1 定义索引模式

Create index pattern -> index pattern 输入 app-log-*

如果按照之前的教程已经汉化成功的话,直接选择索引模式,创建索引就可以

在这里插入图片描述

3.1.2 配置设置

Time Filter field name 选择 currentDateTime

如果按照之前的教程已经汉化成功的话,选择时间筛选字段为 currentDateTime
在这里插入图片描述

3.2 配置错误日志索引

3.2.1 定义索引模式

Create index pattern -> index pattern 输入 err-log-*

如果按照之前的教程已经汉化成功的话,直接选择索引模式,创建索引就可以

在这里插入图片描述

3.2.2 配置设置

Time Filter field name 选择 currentDateTime

如果按照之前的教程已经汉化成功的话,选择时间筛选字段为 currentDateTime

在这里插入图片描述

4 访问测试

4.1 访问日志模块

访问 index日志 方法: http://192.168.51.4:8001/index

**访问 err日志 方法: **http://192.168.51.4:8001/err

4.2 查看kafka数据

filebeat 将 日志里面的数据,写入到 kafka中。
在这里插入图片描述

4.3 查看kibana数据

4.3.1 全量日志信息

在这里插入图片描述

4.3.2 错误日志信息

在这里插入图片描述

在这里插入图片描述

5 集成告警

5.1 kibana许可证

我这里没有申请kibana许可证,采用的试用30天的白金版。
在这里插入图片描述

5.2 watch操作

开发工具 => 设置一个 watch监控

5.2.1 创建 watcher

## 创建一个watcher,比如定义一个trigger 每个5s钟看一下input里的数据
PUT _xpack/watcher/watch/error_log_collector_watcher
{
  "trigger": {
    "schedule": {
      "interval": "5s"
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["<error_log_collector-{now+8h/d}>"],
        "body": {
          "size": 0,
          "query": {
            "bool": {
              "must": [
                  {
                    "term": {"level": "ERROR"}
                  }
              ],
              "filter": {
                "range": {
                    "currentDateTime": {
                    "gt": "now-30s" , "lt": "now"
                  }
                }
              }
            }
          }
        }
      }
    }
  },

  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },

  "transform": {
    "search": {
      "request": {
        "indices": ["<error-log-collector-{now+8h/d}>"],
        "body": {
          "size": 1,
          "query": {
            "bool": {
              "must": [
                  {
                    "term": {"level": "ERROR"}
                  }
              ],
              "filter": {
                "range": {
                    "currentDateTime": {
                    "gt": "now-30s" , "lt": "now"
                  }
                }
              }
            }
          },
          "sort": [
            {
                "currentDateTime": {
                    "order": "desc"
                }
            }
          ]
        }
      }
    }
  },
  "actions": {
    "test_error": {
      "webhook" : {
        "method" : "POST",
        "url" : "http://192.168.51.4:8001/accurateWatch",
        "body" : "{\\"title\\": \\"异常错误告警\\", \\"applicationName\\": \\"{{#ctx.payload.hits.hits}}{{_source.applicationName}}{{/ctx.payload.hits.hits}}\\", \\"level\\":\\"告警级别P1\\", \\"body\\": \\"{{#ctx.payload.hits.hits}}{{_source.messageInfo}}{{/ctx.payload.hits.hits}}\\", \\"executionTime\\": \\"{{#ctx.payload.hits.hits}}{{_source.currentDateTime}}{{/ctx.payload.hits.hits}}\\"}"
      }
    }
 }
}

在这里插入图片描述

5.2.2 查看一个watcher

GET _xpack/watcher/watch/error_log_collector_watcher

5.2.3 删除一个watcher

DELETE _xpack/watcher/watch/error_log_collector_watcher

5.2.4 执行watcher

POST _xpack/watcher/watch/error_log_collector_watcher/_execute

5.2.5 查看执行结果

GET /.watcher-history*/_search?pretty{  "sort" : [    { "result.execution_time" : "desc" }  ],  "query": {    "match": {      "watch_id": "error_log_collector_watcher"    }  }}

5.3 自定义索引模板

#PUT _template/error-log-{    "template": "error-log-*",    "order": 0,    "settings": {        "index": {            "refresh_interval": "5s"        }    },    "mappings": {        "dynamic_templates": [            {                "message_field": {                    "match_mapping_type": "string",                    "path_match": "message",                    "mapping": {                        "norms": false,                        "type": "text",                        "analyzer": "ik_max_word",                        "search_analyzer": "ik_max_word"                    }                }            },            {                "throwable_field": {                    "match_mapping_type": "string",                    "path_match": "throwable",                    "mapping": {                        "norms": false,                        "type": "text",                        "analyzer": "ik_max_word",                        "search_analyzer": "ik_max_word"                    }                }            },            {                "string_fields": {                    "match_mapping_type": "string",                    "match": "*",                    "mapping": {                        "norms": false,                        "type": "text",                        "analyzer": "ik_max_word",                        "search_analyzer": "ik_max_word",                        "fields": {                            "keyword": {                                "type": "keyword"                            }                        }                    }                }            }        ],        "properties": {            "hostName": {                "type": "keyword"            },            "ip": {                "type": "ip"            },            "level": {                "type": "keyword"            },            "currentDateTime": {                "type": "date"            }        }    }}

5.4 告警信息

5.4.1 告警列表

在这里插入图片描述

5.4.2 告警详细数据

在这里插入图片描述

5.4.3 触发告警

在这里插入图片描述

6 相关信息

博文不易,辛苦各位猿友点个关注和赞,感谢

以上是关于ELK 日志采集框架:功能测试与告警集成的主要内容,如果未能解决你的问题,请参考以下文章

ELK 日志采集框架:ElasticSearch安装与配置

ELK 日志采集框架:Filebeat安装与配置

ELK 日志采集框架:Kibana安装与配置

ELK 日志采集框架:Kafka安装与配置

springboot集成elk 二:springboot + elk 采集日志

ELK日志系统搭建实战