当前位置: 首页 > news >正文

兰州网站设计公司/常州百度推广公司

兰州网站设计公司,常州百度推广公司,网站团队的建设,专业英文网站建设在本教程中,我们将部署一个 metricbeat 来监控正在运行的容器的健康状况和系统指标。 为什么需要监控,为什么需要 Metricbeat? 一个常见的问题,但很少有人回答。 首先,无论我们部署的是 docker 容器还是老式的金属箱&…

 在本教程中,我们将部署一个 metricbeat 来监控正在运行的容器的健康状况和系统指标。

为什么需要监控,为什么需要 Metricbeat?

一个常见的问题,但很少有人回答。 首先,无论我们部署的是 docker 容器还是老式的金属箱(即物理服务器),监控它们的健康状况至关重要。 最大的问题是,当我们在现场运行多台服务器时,识别哪台服务器出现问题的效率如何? 或者确定特定服务器何时崩溃有多容易? 答案可以在监控数据中找到(如果我们一开始就收集过)。

基于经验和团队文化,管理员通常编写自己的脚本或程序来收集服务器指标。 事实上,这是一种相当直接的方法,通常效果很好……直到部署了许多服务器实例。 脚本和程序是否可扩展以处理多服务器监控? 有多少定制以及监控不同系统(例如操作系统、数据库、应用程序服务器等)的难易程度。 如果以上问题的答案不是很确定,我们可能需要更好的解决方案。

来自 Elastic(该公司)的 Metricbeat 提供了一个单一的可执行文件,它有助于获取最常见的服务器/服务指标,包括主机(即操作系统级别)、数据库(mySQL、postgreSQL)、消息队列(kafka、rabbitMQ)等等。 与其它解决方案不同,Metricbeat 得到维护并积极开发以支持度量消费; 现在我们需要做的就是维护配置文件而不是我们脚本/程序中的逻辑。

使用 docker 创建 Elastic Stack

我们首先来仿照之前的文章 “Elasticsearch:如何在 Docker 上运行 Elasticsearch 8.x 进行本地开发”  来创建我们的 docker-compose.yml 文件:

docker-compose.yml

version: "3.9"
services:elasticsearch:image: elasticsearch:8.6.2container_name: elasticsearchenvironment:- discovery.type=single-node- ES_JAVA_OPTS=-Xms1g -Xmx1g- xpack.security.enabled=falsevolumes:- type: volumesource: es_datatarget: /usr/share/elasticsearch/dataports:- target: 9200published: 9200networks:- elastickibana:image: kibana:8.6.2container_name: kibanaports:- target: 5601published: 5601depends_on:- elasticsearchnetworks:- elasticmetricbeat:image: docker.elastic.co/beats/metricbeat:8.6.2container_name: metricbeatenvironment:ELASTICSEARCH_HOSTS: http://elasticsearch:9200volumes:- metricbeat-data01:/usr/share/metricbeat/datanetworks:- elasticdepends_on:- elasticsearchvolumes:es_data:driver: localmetricbeat-data01:driver: localnetworks:elastic:name: elasticdriver: bridge

我们添加了一个名为 metricbeat 的服务,并通过环境变量 (ELASTICSEARCH_HOSTS) 声明了目标 elasticsearch 主机。 还为此服务 (metricbeat-data01) 添加了一个新卷(用于数据存储)。 该服务的网络应设置为 elastic,原因是该服务应与我们的目标 elasticsearch 主机/节点位于同一网络上。

让我们通过发出以下命令来启动服务:

docker-compose up

 等所有的容器都启动后,我们可以使用如下的命令来进行查看:

docker ps
$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED              STATUS              PORTS                              NAMES
52072cc96dfc   docker.elastic.co/beats/metricbeat:8.6.2   "/usr/bin/tini -- /u…"   About a minute ago   Up About a minute                                      metricbeat
2511ea046940   kibana:8.6.2                               "/bin/tini -- /usr/l…"   2 minutes ago        Up About a minute   0.0.0.0:5601->5601/tcp             kibana
4465801cb251   elasticsearch:8.6.2                        "/bin/tini -- /usr/l…"   2 minutes ago        Up About a minute   0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch

从上面,我们可以看出来正在运行的容器: elasticsearch,kibana 及 metricbeat。

我们可以到 Kibana 中进行查看:

 

 

从上面,我们可以看出来被收集进来的指标信息。

从上面显示的信息中,我们可以看出来它收集的正是运行 Metricbeat 容器的指标。在默认的情况下,system 模块是被启动的。它会自动帮我们收集系统指标。有关 Metricbeat 的使用请阅读之前的文章 “Beats:Beats 入门教程 (二)”。 

恭喜我们已经成功地在我们的集群上添加了 metricbeat 监控! 收集的数据可以显示在反映操作系统/主机指标的指标应用程序上,包括 CPU、内存、负载、网络、进程等。

显示操作系统/主机指标非常有用,但有时我们可能也想知道服务器/服务的行为方式。 举个例子,我们可以监控我们的 elasticsearch 节点的健康状况吗? 如果您现在点击 “Stack Monitoring” 应用程序,将显示此页面:

 

 

简单的意思是……没有可用的 Elasticsearch 监控数据 :(

 

了解 metricbeat 模块

对于现代版本的弹性堆栈,弹性搜索节点的监控建议启用名为“elasticsearch-xpack”的 metricbeat 模块。 那么什么是 metricbeat 模块??? 一个简单的句子——模块包含与目标服务器/服务对话的逻辑,并维护一组用于收集的指标的逻辑分组; 因此它就像一个配置管理器。

模块在 yml 文件中声明并存储在 {metricbeat_root}/modules.d 文件夹下。 elasticsearch-xpack.yml 示例如下:

elasticsearch-xpack.yml

# Module: elasticsearch
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/main/metricbeat-module-elasticsearch.html- module: elasticsearchxpack.enabled: trueperiod: 10shosts: ["http://localhost:9200"]#username: "user"#password: "secret"

对于大多数情况,我们会修改要收集的指标集(即指标集设置)、监控主机(例如 localhost:9200 或 node01:9200)并激活 xpack 监控功能(即 xpack.enabled)。

现在摆在我们面前的挑战是……如何更新 elasticsearch-xpack.yml 文件? 好吧……一种方法是我们启动服务,然后通过 telnet / ssh 进入 metricbeat 容器并更新配置文件。例如,我们可以这样来进入到容器中:

$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED             STATUS             PORTS                              NAMES
52072cc96dfc   docker.elastic.co/beats/metricbeat:8.6.2   "/usr/bin/tini -- /u…"   About an hour ago   Up About an hour                                      metricbeat
2511ea046940   kibana:8.6.2                               "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour   0.0.0.0:5601->5601/tcp             kibana
4465801cb251   elasticsearch:8.6.2                        "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour   0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch
$ docker exec -it metricbeat /bin/bash
metricbeat@52072cc96dfc:~$ 

这种方式可能是最简单的,但它根本不可扩展,并且引入了最终难以维护的手动操作。 一个不太脏的解决方案肯定是值得的。

构建自定义的 metricbeat docker 镜像

就像我们之前讨论的那样,我们试图只维护配置文件而不是脚本/程序逻辑(也是手动操作)。 因此,针对上述挑战的更简洁的解决方案是使用更新的 metricbeat.yml 构建自定义 docker 镜像。

创建 metricbeat.yml 如下:

metricbeat.yml

metricbeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: falseprocessors:- add_cloud_metadata: ~- add_docker_metadata: ~output.elasticsearch:hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'username: '${ELASTICSEARCH_USERNAME:}'password: '${ELASTICSEARCH_PASSWORD:}'# enabled modules for monitoring (e.g. elasticsearch-xpack)
metricbeat.modules:
- module: elasticsearchxpack.enabled: trueperiod: 10shosts: ["http://node01:9200"]
$ pwd
/Users/liuxg/data/metricbeat
$ ls
docker-compose.yml metricbeat.yml

我们声明要启用 elasticsearch 模块,目标主机是 elasticsearch:9200。 由于 hosts 配置是一个数组,因此可以仅设置 1 个 metricbeat 实例并使用多节点的指标。

接下来,让我们更新 docker-compose.yml 如下:

docker-compose.yml

version: "3.9"
services:elasticsearch:image: elasticsearch:8.6.2container_name: elasticsearchenvironment:- discovery.type=single-node- ES_JAVA_OPTS=-Xms1g -Xmx1g- xpack.security.enabled=falsevolumes:- type: volumesource: es_datatarget: /usr/share/elasticsearch/dataports:- target: 9200published: 9200networks:- elastickibana:image: kibana:8.6.2container_name: kibanaports:- target: 5601published: 5601depends_on:- elasticsearchnetworks:- elasticmetricbeat:build: .# image: docker.elastic.co/beats/metricbeat:8.6.2container_name: metricbeatenvironment:ELASTICSEARCH_HOSTS: http://elasticsearch:9200volumes:- metricbeat-data01:/usr/share/metricbeat/datanetworks:- elasticdepends_on:- elasticsearchvolumes:es_data:driver: localmetricbeat-data01:driver: localnetworks:elastic:name: elasticdriver: bridge

配置文件的唯一变化是用 build 配置替换 image 配置。 build 只是意味着我们正在从本地 Dockerfile 配置构建自定义镜像。 Dockerfile 包含构建自定义镜像的步骤和我们的版本如下:

FROM docker.elastic.co/beats/metricbeat:8.6.2
COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml
USER root
RUN chown root /usr/share/metricbeat/metricbeat.yml
$ pwd
/Users/liuxg/data/metricbeat
$ ls
Dockerfile         docker-compose.yml metricbeat.yml

这很简单,我们将基础 docker 镜像设置为 docker.elastic.co/beats/metricbeat:8.6.2。 然后我们将自定义的 metricbeat.yml 复制到镜像的 /usr/share/metricbeat 路径下。 最后使用 root 用户更改 metricbeat.yml 的访问权限并完成。

接下来是构建镜像,但是发出如下的命令:

如果一切顺利,我们的镜像很快就会建立起来了。

是时候启动服务并验证结果了:

docker-compose up

接下来,我们到 Kibana 中去查看:

 

很显然,这次我们看到了不一样的结果。

 

我们可以看到想要的指标信息。

Horray ~ 我们做到了,metricbeat 正在收集 elasticsearch 节点的指标。

相关文章:

Beats:在 Docker 中同时部署 Metricbeat 和 Elasticsearch

在本教程中,我们将部署一个 metricbeat 来监控正在运行的容器的健康状况和系统指标。 为什么需要监控,为什么需要 Metricbeat? 一个常见的问题,但很少有人回答。 首先,无论我们部署的是 docker 容器还是老式的金属箱&…...

编码技巧——Redis Pipeline

本文介绍Redis pipeline相关的知识点及代码示例,包括Redis客户端-服务端的一次完整的网络请求、pipeline与client执行多命令的区别、pipeline与Redis"事务"、pipeline的使用代码示例; pipeline与client执行多命令的区别 Redis是一种基于客户…...

ArcGIS制图技巧:制图入门与点、线、面状符号制作

目的: 1、了解地图制作目的; 2、了解在ArcMap平台中制作地图大致过程。 3、掌握地形图生成的操作; 4、掌握地形图的正确输出方法。 5、理解点状符号、线状符号、面状符号的基本概念; 6、理解地形点状符号、线状符号、面状符…...

Java基础 关于字典数据维护接口设计

开发环境 Eclipse2022JDK1.8 目录 1. 概述 2. 实现步骤 2.1 定义通用接口 2.2 定义实体类 2.3 接口扩展 2.4 接口实现 2.5 功能测试 3. 结语 1. 概述 每一个信息系统或多或少都带有一些数据字典,在维护上,基本上分为增删改查,也就是对数据…...

从零开始学架构——复杂度来源

复杂度来源——高性能 对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。现代的计算机CPU集成…...

什么时候需要分表分库?

在当今互联网时代,海量数据基本上是每一个成熟产品的共性,特别是在移动互联网产品中,几乎每天都在产生数据,例如,商城的订单表、支付系统的交易明细以及游戏中的战报等等。对于一个日活用户在百万数量级的商城来说&…...

冰刃杀毒工具使用实验(29)

实验目的 (1)学习冰刃的基本功能; (2)掌握冰刃的基本使用方法;预备知识 windows操作系统的基本知识,例如:进程、网络、服务和文件等的了解。 冰刃是一款广受好评的ARK工…...

聊聊图像分割的DICE和IOU指标

目录 1. 介绍 2. dice 和 iou 的联系 3. 代码实现 3.1 dice 3.2 iou 3.3 test 3.4 dice 和 iou 的关系曲线 4. 代码 1. 介绍 dice 和 iou 都是衡量两个集合之间相似性的度量 dice计算公式: iou计算公式: iou的集合理解: iou 其实就…...

软件设计师教程(十)计算机系统知识-结构化开发

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…...

链表OJ之 快慢指针法总结

欢迎来到 Claffic 的博客 💞💞💞 前言: 快慢指针指的是每次指针移动的步长,是解决链表相关的题目的一大利器,下面我将以例题的形式讲解快慢指针法。 目录 一. 链表的中间结点 思路: 代码实…...

C++STL详解(五)——list的介绍与使用

文章目录list的介绍list的使用list的定义方法list迭代器失效问题list插入和删除inserteraselist迭代器的使用begin,end 和 rbegin,rendlist元素访问front 和 backlist容量控制与数据清理resizeclearlist操作函数spliceremove 和 remove_ifuniquemergerev…...

进程和进程的调度

今天,为大家带来进程和进程的调度的学习 1.认识计算机 2.什么是操作系统 3.什么是进程 4.进程管理 5.进程的属性 6.进程的调度 7.进程调度的过程 8.内存分配 1.认识计算机 计算机的组成有五大部分 1.CPU(是计算机的大脑,负责逻辑运算和控制) 2.内存 3.外存 4.输入…...

TypeScript 深度剖析:TypeScript 的理解?与 JavaScript 的区别?

一、是什么 TypeScript 是 JavaScript 的类型的超集,支持ES6语法,支持面向对象编程的概念,如类、接口、继承、泛型等 超集,不得不说另外一个概念,子集,怎么理解这两个呢,举个例子,如…...

美颜SDK关键技术讲解——人脸识别与人脸美化

拍摄,自从智能手机普及之后就已经不再是小众爱好,使用手机拍摄记录生活几乎成了人们的日常。在巨量的需求下,美颜工具、美颜SDK已经被广泛应用于各大视频拍摄平台。虽然经常听到美颜SDK,但是大多数人并不了解它,下文小…...

Linux下C/C++ 网络扫描(主机扫描技术)

主机扫描是网络扫描的基础,通过对目标网络中主机IP地址的扫描,从一堆主机中扫描出存活的主机,然后以他们为目标进行后续的攻击。一般会借助于ICMP、TCP、UDP等协议的工作机制,检查打开的进程,开放的端口号等等。 主机…...

无法将“vue-cli-service”项识别为 cmdlet、函数、脚本文件或不是内部命令的原因和解决方案

经常有小伙伴问我说,为什么我们在开发vue项目的时候,需要在package.json的script对象中,去设置命令启动项目,而不是直接的通过"vue-cli-service serve"命令去把项目跑起来。带着这些疑问,小生在此总结了以下…...

逆流程 场景下 处理状态机变化的方案

背景: 针对某些业务场景下,存在逆流程。 比如场景的场景 正向流程如,发起某项申请->对某项申请进行审批。(审批为通过/驳回)。这样这个工作流程就算到最终态。 常见的状态机如, 申请未提交&#xff0…...

【剧前爆米花--爪哇岛寻宝】Java实现无头单向非循环链表和无头双向链表与相关题目

作者:困了电视剧 专栏:《数据结构--Java》 文章分布:这是关于数据结构链表的文章,包含了自己的无头单向非循环链表和无头双向链表实现简单实现,和相关题目,想对你有所帮助。 目录 无头单向非循环链表实现 …...

学习MvvmLight工具

最近学习了一下MvvmLight,觉得有些功能还是挺有特色的,所以记录一下 首先新建也给WPF程序 然后在Nuget里面安装MvvmLightLib 包,安装上面那个也可以,但是安装上面那个会自动在代码里面添加一些MvvmLight的demo ,安装M…...

基于BiLSTM+CRF医学病例命名实体识别项目

研究背景 为通过项目实战增加对命名实体识别的认识,本文找到中科院软件所刘焕勇老师在github上的开源项目,中文电子病例命名实体识别项目MedicalNamedEntityRecognition。对其进行详细解读。 原项目地址:https://github.com/liuhuanyong/Med…...

05 C语言数据类型

05 C语言数据类型 1、数据类型 编程语言对数据类型分为两派&#xff1a;一种认为要注重&#xff0c;一种认为可以忽视。 C语言类型 1、整数 : char < short < int < long < long long &#xff0c;bool 2、浮点数&#xff1a;float < double < long doub…...

C++11:右值引用和移动语义

文章目录1. 左值和右值表达式1.1 概念1.2 左值和右值2. 左值引用和右值引用2.1 相互引用2.2 示例代码2.3 左值引用使用场景缺点2.4 右值引用和移动语义小结2.5 移动赋值2.6 右值引用的其他使用场景右值引用版本的插入函数3. 完美转发3.1 万能引用3.2 如何实现完美转发3.3 完美转…...

tcpdump网络抓包工具

tcpdump 是一个强大的网络抓包工具&#xff0c;在分析服务之间调用时非常有用。可以将网络中传送的数据包抓取下来进行分析。tcpdump 提供灵活的抓取策略&#xff0c;支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供 and、or、not 等逻辑语句来去掉不想要的信…...

MaxCompute SQL中的所有保留字与关键字如下

– MaxCompute SQL中的所有保留字与关键字如下 注意 命名表、列或分区时&#xff0c;不要使用保留字与关键字&#xff0c;否则可能会报错。 保留字不区分大小写。 在对表、列或是分区命名时如若使用关键字&#xff0c;需给关键字加符号进行转义&#xff0c;否则会报错。 % &am…...

Kafka 压缩算法

压缩 (compression) : 用时间换空间的思想 用较小的 CPU 开销获得磁盘少占用或网络 I/O 少传输 Kafka 消息分两层&#xff1a; 消息日志组成 : n 个消息集合消息集合 (message set) 组成 : n 条日志项 (record item)日志项封装了消息 (message)Kafka 在消息集合层上进行写入…...

关于React Hook(18)

useState&#xff08;&#xff09;&#xff1a;&#x1f449;详情 &#xff08;必须“有条件地调用”&#xff1b;注意避免冗余状态的产生&#xff09; 关于useState的两种使用方式的区别&#xff1a;&#x1f449;详情 关于batch机制&#xff1a;有条件地调用一些状态的set方…...

计算机网络:BGP协议

BGP协议 与其他AS的邻站BPG发言人交换信息。 交换的网络可达性信息&#xff0c;即要到达某一个网络所要经历的一系列AS 发生变化时&#xff0c;更新有变化的部分 BGP协议交换信息的过程&#xff1a;所交换的网络可达性信息就是要到达某一个网络所要经历的一系列AS&#xff…...

91. 解码方法 ——【Leetcode每日刷题】

91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法&#xff0…...

人体存在传感器成品方案,精准感知静止存在,实时智能化感控技术

随着现今智能时代的发展&#xff0c;酒店也越来越趋于智能化&#xff0c;也在不断地推行智慧酒店&#xff0c;这也给人们入住酒店提供了良好的体验。 人体存在感知是智能酒店中极其重要的一项应用技术&#xff0c;只有智能设备通过精准地感知人体存在&#xff0c;才能更好地做…...

mysql连接池的实现

目录 1 池化技术 2 什么是数据库连接池 3 为什么使用数据库连接池 3.1 不使用连接池 3.2 使用连接池 3.3 长连接和连接池的区别 4 数据库连接池运行机制 5 连接池和线程池的关系 6 线程池设计要点 6.1 连接池设计逻辑 构造函数 初始化 请求获取连接 归还连接 析…...