一、前言

开发排查系统问题用得最多的手段就是查看系统日志,ELKElastic 公司开源的实时日志处理与分析解决方案,已经为日志处理方案的主流选择。

而在生产环境中,如何针对 ELK 进行监控,保证各个组件正常运行?如何知道目前的资源是否能承受线上的压力呢?本文主要是以 Elastic Stack 7.x 版本为例,介绍如何监控 ELK 自身的各个组件。

二、总体架构

常见的 Elastic Stack 日志系统架构如下

其中可使用 Metricbeat 组件作为轻量级监视代理,通过HTTP端点收集各个组件的监控信息,并把监控数据落盘到 Elasticsearch 中,最终通过 Kibana 以图形化的方式展示各种监控数据。

三、部署Metricbeat

建议在每台服务器上都运行 Metricbeat 收集指标,多个Metricbeat实例的指标将在 Elasticsearch 服务器上合并。

下载对应版本的 Metricbeat 地址如下:

https://www.elastic.co/cn/downloads/past-releases#metricbeat

3.1. 收集Elasticsearch信息

Metricbeat 中启用并配置 Elasticsearch x-pack 模块

从安装目录中,运行:

./metricbeat modules enable elasticsearch-xpack

默认情况下,模块从 http://localhost:9200 收集 Elasticsearch 指标。如果本地服务器有不同的地址,请在 modules.d/elasticsearch-xpack.yml 中将其添加到主机设置。

3.2. 收集Kibana信息

Metricbeat 中启用并配置 Kibana x-pack 模块

./metricbeat modules enable kibana-xpack

该模块将默认从 http://localhost:5601 收集 Kibana 监测指标。如果本地 Kibana 实例有不同的地址,则必须通过 modules.d/kibana-xpack.yml 文件中的 hosts 设置进行指定。

3.3. 收集Logstash信息

Metricbeat 中启用并配置 Logstash x-pack 模块

./metricbeat modules enable logstash-xpack

该模块将默认从 http://localhost:9600 收集 Logstash 监测指标。如果本地 Logstash 实例有不同的地址,则必须通过 modules.d/logstash-xpack.yml 文件中的 hosts 设置进行指定。

3.4. 收集Beats信息

所有类型的 Beats 配置都一样

3.4.1. 开启HTTP端点

需要开启 Beats 自己的HTTP端点输出监控数据,例如 Filebeat 修改 filebeat.yml 文件,在最后添加以下配置

http:
enabled: true
host: 0.0.0.0
port: 5066

3.4.2. 启用Beat模块

Metricbeat 中启用并配置 Beat x-pack 模块

./metricbeat modules enable beat-xpack

该模块将默认从 http://localhost:5066 收集 beat 监测指标。如果正在监测的 beat 实例有不同的地址,则必须通过 modules.d/beat-xpack.yml 文件中的 hosts 设置进行指定。

3.5. 数据输出配置

配置 Metricbeat 以发送至监测集群,在 metricbeat.yml 文件中修改以下内容

output.elasticsearch:
hosts: ["http://localhost:9200"] ## Monitoring cluster # Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"

PS:地址、用户名和密码按实际情况修改

3.6. 启动Metricbeat

./metricbeat -e

四、收集Elasticsearch日志

使用 Filebeat 收集 Elasticsearch 自身的日志数据。

首先需要在 Elasticsearch 所在的服务器中安装 Filebeat 组件。

4.1. 启用es模块

Filebeat 中启用并配置 Elasticsearch 模块,执行以下命令

./filebeat modules enable elasticsearch

4.2. 配置es模块

修改es模块的配置信息,指定日志路径

vim modules.d/elasticsearch.yml

修改为以下内容

- module: elasticsearch
server:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_server.json gc:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/gc.log.[0-9]*
- /app/elk/elasticsearch/logs/gc.log audit:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_audit.json slowlog:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_index_search_slowlog.json
- /app/elk/elasticsearch/logs/*_index_indexing_slowlog.json deprecation:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_deprecation.json

PS:日志路径按实际情况修改

4.3. 配置输出

修改 filebeat.yml 文件,配置es相关信息

output.elasticsearch:
hosts: ["localhost:9200"] # Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"

PS:地址、用户名和密码按实际情况修改

4.4. 启动Filebeat

./filebeat -c filebeat.yml -e

五、查看监控界面

进入 Kibana 的控制台界面,进入 堆栈监测 菜单

即可查看各个组件的监控信息

扫码关注有惊喜!

如何实现对ELK各组件的监控?试试Metricbeat的更多相关文章

  1. 通过脚本实现对web的健康检查

    前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控 脚 ...

  2. 基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]

    ​ (我是个封面) docker简介 Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱.随着基于docker的开发者越来越多,doc ...

  3. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  4. 用 Python 脚本实现对 Linux 服务器的网卡流量监控

    *这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...

  5. zabbix实现对tomcat的监控

    zabbix实现对tomcat的监控 工作原理 比如:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix- ...

  6. 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解

    本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...

  7. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

  8. jmeter通过BeanShell 脚本,实现对http请求参数的加密

    jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的 ...

  9. 基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理

    http://www.cnblogs.com/wuhuacong/p/4175266.html 在一般的管理系统模块里面,越来越多的设计到一些常用文档的上传保存操作,其中如PDF.Word.Excel ...

  10. C#代码实现对HTTP POST参数进行排序

    private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...

随机推荐

  1. 安装centos7模板机[正常版]

    1. 安装centos 7模板机 准备好centos7的镜像 下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 安装centos 自定义硬件: ...

  2. 利用cycript动态调试app

    一.准备 ios系统越狱环境 安装ssh 安装cycript 二.执行命令 找到进程注入: 6187 ?? 0:00.70 /var/containers/Bundle/Application/ 61 ...

  3. js 表格的添加和删除操作

        大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国 ...

  4. 《python核心编程《第二版》》笔记章节索引

    本文章作为我的其它一系列关于<python核心编程<第二版>>的笔记的文章索引. 第一章:Python-快速入门:https://www.cnblogs.com/mrlayfo ...

  5. ETL工具-nifi干货系列 第一讲 揭开nifi神秘面纱

    1.nifi简介 Apache NiFi 是基于流程编程概念的数据流系统.它支持强大且可扩展的数据路由.转换和系统中介逻辑的有向图.NiFi具有基于Web的用户界面,用于设计.控制.反馈和监控数据流. ...

  6. #9134.反转eehniy

    blog 题面 yinhee 去面试 Google 总裁. 面试官给他了一个长度为 \(n\) 的 \(01\) 串. 面试官给他以下两种操作是的这个序列前 \(n-m\) 个数字与后 \(n-m\) ...

  7. 如何基于R包做GO分析?实现秒出图

    GO分析 基因本体论(Gene Ontology, GO)是一个用于描述基因和基因产品属性的标准术语体系.它提供了一个有组织的方式来表示基因在生物体内的各种角色.基因本体论通常从三个层面对基因进行描述 ...

  8. 初识python day1记录

    程序语言中的分类 在程序中有分为高级语言Java python go与低级语言C 汇编,每种语言都有自己的规则,但是最终目的都是给计算机识别的,所以他的底层肯定是一些二进制010101,像java/p ...

  9. python基础-元组tuple( )

    元组的定义和操作 元组的特性: 元素数量 支持多个 元素类型 任意 下标索引 支持 重复元素 支持 可修改性 不支持 数据有序 是 使用场景 不可修改.可重复的 一批数据记录场景     # 定义元组 ...

  10. BigCodeBench: 继 HumanEval 之后的新一代代码生成测试基准

    HumanEval 是一个用于评估大型语言模型 (LLM) 在代码生成任务中的参考基准,因为它使得对紧凑的函数级代码片段的评估变得容易.然而,关于其在评估 LLM 编程能力方面的有效性越来越多的担忧, ...