Elasticsearch 学习笔记Day 32

116 阅读8分钟

hi,我是蛋挞,一个初出茅庐的后端开发,希望可以和大家共同努力、共同进步!


开启掘金成长之旅!这是我参与「掘金日新计划 · 4 月更文挑战」的第 16 天,点击查看活动详情

  • 起始标记->探索X-Pack套件(6讲):「84 | 用Monitoring和Alerting监控Elasticsearch集群」
  • 结尾标记->探索X-Pack套件(6讲):「89 | 用Canvas做数据演示」

用Monitoring和Alerting监控Elasticsearch集群

X-Pack Monitoring

  • X-Pack 提供了免费集群监控的功能
  • 使用 Elasticsearch 监控 Elasticsearch
    • Xpack.monitoring.collection.interval 默认设置 10 秒
  • 在生产环境中,建议搭建 dedicated 集群用于 ES 集群的监控。有以下几个好处
    • 减少负载和数据
    • 当被监控集群出现问题,还能看到监控相关的数据

配置Monitoring

配置项含义
xpack.monitoring.collection.indices默认监控所有索引。支持配置索引列表(逗号间隔)
xpack.monitoring.collection.interva搜集数据的时间间隔,默认 10 秒
xpack.monitoring.history.duration数据保留的时间,默认7天

wwwelastic.co/guide/en/x-…

Watcher for Alerting

  • 需要 Gold 账户
  • 一个 Watcher 由 5个部分组成
    • Trigger - 多久被触发一次(例如: 5 分钟触发一次
    • Input - 查询条件 (在所有日志索引中查看“ERROR”相关)
    • Condition - 查询是否满足条件 (例如: 大于 1000 条返回
    • Actions - 执行相关操作 (例如: 发送邮件)

步骤

image.pngimage.png image.png 可以试用30天 image.png 打开后就可以看到,已经提供了多种级别的监控 image.png 节点的详细信息都会展示到这个界面上。

Watcher

watcher功能开启一个alert功能,第一种是定义一个阈值 image.png 下面演示第一种 image.png 需要选择索引,选择索引字段,选择时间 image.png 配置什么时候,针对那些文档,数值,以及时间范围。 image.png 选择当条件达到时alert的active,最后save就可以保存了

本节知识小节

介绍了如何在X-Pack中对Elasticsearch和Kinbana做一个性能监控,同时也介绍了如何打开三十天的试用,通过在watcher中定义一些阈值,实现一个报警的功能。

用APM进行程序性能监控

Elastic 全栈监控

  • Real User Monitoring
  • Application Level Monitoring
  • Server-Level Monitoring
  • Logging

核心应用指标

  • 请求响应时间
  • 未处理的错误及异常
  • 可视化调用关系
  • 发现性能瓶颈
  • 代码下钻

步骤

image.png 找到APM的选项 image.png 提供了不同语言不通框架的支持 image.png image.png 找到过去发布的版本,注意需要版本都相互对应 image.pngimage.png image.png 安装完成后点击连接即可查看安装说明。 image.png点击查看是否连接成功。 image.png image.png image.png 通过这个例子可以知道,结合APM对应用性能做一个监控,结合性能测试的脚本,就可以很方便的去了解这个应用程序在实际运行当中会发生的事情,帮助我们对应用程序做一个优化。

本节知识小节

通过一个具体的实例帮助理解如何在Elastchstash当中通过下载安装APM Server,使用APM Server对我们的应用程序做一个实时性的监控,通过Kinbana的展示可以很方便的很容易的去理解应用程序背后的性能指标,方便对应用程序做一个优化。

用机器学习实现时序数据的异常检测(上)

异常检测所解决的问题

  • 解决一些基于规则或者 Dashboard 难以实时发现的问题
  • IT 运维
    • 如何知道系统正常运行/如何调节值触发合适的报警/如何进行归因分析
  • 信息安全
    • 哪些用户构成了内部威胁/系统是否感染了病毒
  • 物联网/数据采集监控
    • 工厂和设备是否正常运营

什么是正常

  • 什么是正常
    • 随着时间的推移,某个个体一直表现出一致的行为
    • 某个个体和他的同类比较,一直表现出和其他个体一致的行为

什么是异常

  • 什么是异常
    • 和自己比 - 个体的行为发生了急剧的变化
    • 和他人比 - 个体明显区别于其他的个体

image.png

判定异常需要一定的指导

相关术语

  • Elastic 平台的机器学习功能
    • Elastic 的ML,主要针对时序数据异常检测预测
  • 非监督机器学习
    • 不需要使用人工标签的数据来学习,仅仅依靠历史数据自动学习
  • 贝叶斯统计
    • 一种概率计算方法,使用先验结果来计算现值或者预测未来的数值
  • 异常检测
    • 异常代表的是不同的,但未必代表的是坏的 /定义异常需要一些指导,从哪个方面去看

如何学习“正常“

  • 观察不同的人每天走路的步数,由此预测明天他会走多少步
  • 需要观察不同的人,需要观察多久?
    • 一天 /一周 /一个月 /一年 /十年
  • 直觉: 观察的数据多,你的预测越准确
  • 使用这些观察来创建一个模型
    • 概率分布函数;使用这个模型找出什么事几乎不可能的事件

机器学习帮你自动挑选模型

  • 使用成熟的机器学习技术,挑选适合数据的正确的统计模型
  • 更好的模型=更好的异常检测=更少的误报和漏报
  • 出现在低概率区域,发现异常

模型与需要考虑任何的周期

image.png

  • 周期选择
  • 需要一定周期的学习,才能使的置信区间的范围更小
  • 时间太长:影响因素太多,导致随机分布
  • 时间大短·宗全是随机波动

ES ML: 单指标/多指标/种群分析

image.png

步骤

image.png image.png image.png image.png image.png Bucket Span:时间分割 Field:字段 Aggregation:表 image.png 计算 image.png 预测 image.png 定制化 image.png image.png 保存 image.png 结合创建新的异常检测集 image.png

相关阅读

本节知识小节

学习了Elastic 的machine learning异常检测的相关知识,学习了相关的概念,知道如何去定义一个正常和异常,通过对一个导入数据集,进行单指标的异常检测的实际操作。

用机器学习实现时序数据的异常检测(下)

接上一章

image.png 可以指定多个Fields进行指标的检测 image.png 选择后可以生成机器学习 image.png 运行完成后查看结果 image.png 结果集 image.png 选择Population image.png image.png 第一个Population指的是以怎样的方式去区分这个用户 Fields代表这个用户发送的数据包 image.png 添加新的calendar image.png

本节知识小节

演示了如何创建一个机器学习的任务,如何使用Population的方式发现一系列用户当中的异常行为,也介绍了如何使用calendar的方式避免在一些节假日的日期对数据做异常的检测。

用ELK进行日志管理

日志的重要性

  • 为什么重要
    • 运维:医生给病人看病。日志就是病人对自己的陈述
    • 恶意攻击,恶意注册,刷单,恶意密码猜测
  • 挑战
    • 关注点很多,任何一个点都有可能引起问题
    • 日志分散在很多机器,出了问题时,才发现日志被删了
    • 很多运维人员是消防员,哪里有问题去哪里

image.png

集中化日志管理

日志搜集 -> 格式化分析 -> 检索与可视化 -> 风险告警 image.png

Filebeat 简介

  • 简介
    • A log data shipper for local files
    • 加工处理读取日志文件,Filebeat 不做数据的解析
      • 日志是非结构化数据
      • 需要进行处理后,以结构化的方式保存到 Elasticsearch
    • 保证数据至少被读取一次
    • 处理多行数据,解析 JSON 格式 ,简单的过滤

Filebeat 简介

image.png

Filebeat 执行流程

  • 定义数据采集: Prospector 配置。通过 filebeat.yml
  • 建立数据模型: Index Template
  • 建立数据处理流程:Ingest Pipeline
  • 存储并提供可视化分析: ES + Kibana Dashboard

步骤

image.png image.png image.png image.png image.png image.pngimage.png image.png image.png image.png 非常多的自定义控制显示的内容

CodeDemo

./filebeat modules list
./filebeat modules enable system
./filebeat modules enable elasticsearch


## 进 modules.d 编辑相应的文件,修改log路径

./filebeat setup –dashboards

./filebeat export template | more

./filebeat -e

本节知识小节

介绍了如何使用Elasticstak去做日志的集中化的管理,可以通过Filebeat的方式到服务器上收集相关的文件,因为Filebeat本身不会做过多的数据的转换,我们可以通过Ingest Pipeline,在Elasticsearch上Ingest Nodes上去做处理,同时Filebeat提供了大量的开箱即用的Module,通过这些Module只需要简单的一些指令就可以把很多Index Template,Ingest Pipeline写入到Elasticsearch当中,还可以为Kinbana创建丰富的相关日志的Dashboard,在kibana上还提供了logs应用,通过这个应用就可以使实时的查看感兴趣的日志,在kibana上还可以对感兴趣的日志进行搜索。

用Canvas做数据演示

实时展示数据,并且达到完美像素级要求

  • 用更加酷炫的方式,演绎你的数据
    • 基于ES实现准实时的数据分析
  • 更好的想法,更大的屏幕
    • 品牌宣传,会议大屏
  • 高度定制化
    • 调色板 / CSS / 拖放元素

步骤

image.png 1682325219625.png 1682325231045.png image.png image.png image.png 创建Canvas image.png 自己定制 image.png 可以设定刷新时间 image.png

CodeDemo

POST elasticoffee/_search { "size": 0, "aggs": { "by": { "terms": { "field": "beverage.keyword", "size": 10 } } } }

本节知识小节

介绍了Elasticsearch的Canvas的功能,使用Canvas不但可以实时的展示数据,还可以以一种非常炫酷的方式去演绎数据背后的故事。


此文章为4月Day16学习笔记,内容来源于极客时间《Elasticsearch 核心技术与实战》