使用 Fleet 管理 Elastic Agent 监控应用

简介: 本场景主要介绍了如何使用 Fleet 集中管理 Elastic Agent ,并对主机的指标,日志,服务等进行监控。

使用 Fleet 管理 Elastic Agent 监控应用


1. 创建资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息


2. 部署 Elasticsearch

在本实验中,我们准备将 Fleet Server 和 Elasticsearch 以及 Kibana 安装在同一个主机上,然后在另一台主机上安装 Elastic Agent 监控应用服务。

出于安全原因,Elasticsearch 默认不允许使用 root 用户启动。执行以下命令,创建 elastic 用户,设置密码为 elastic123 ,并切换到该用户。

useradd -s /bin/bash -m elastic
echo "elastic:elastic123" | chpasswd
su - elastic

下载和解压 Elasticsearch 安装文件。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-8.3.3-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-8.3.3-linux-x86_64.tar.gz
cd elasticsearch-8.3.3/

修改 config/elasticsearch.yml 配置文件,添加以下内容,启用内置 API 密钥服务。

xpack.security.authc.api_key.enabled: true

执行如下命令,启动 Elasticsearch。

./bin/elasticsearch

启动成功后,会输出以下内容,保存好以下两个内容:

  • elastic 用户密码。
  • Kibana 注册 token。


3. 部署 Kibana

打开一个新的终端, 切换到 elastic 用户。

su - elastic

执行如下命令,下载和解压 Kibana 安装文件。

curl -O https://artifacts.elastic.co/downloads/kibana/kibana-8.3.3-linux-x86_64.tar.gz
curl https://artifacts.elastic.co/downloads/kibana/kibana-8.3.3-linux-x86_64.tar.gz.sha512 | shasum -a 512 -c - 
tar -xzf kibana-8.3.3-linux-x86_64.tar.gz
cd kibana-8.3.3/

执行以下命令,生成 saved objects encryption key。

bin/kibana-encryption-keys generate

编辑 config/kibana.yml 配置文件,修改以下内容,允许 Kibana 服务监听本机所有 IP 地址。同时将生成 xpack.encryptedSavedObjects.encryptionKey 的添加到文件中。

server.host: "0.0.0.0"
xpack.encryptedSavedObjects.encryptionKey: c0ebc52748dd217a30af01f05d097e3f # 上面生成的结果

执行如下命令,启动 Kibana。

./bin/kibana

启动成功后,会输出以下内容。

浏览器输入 http://:5601/?code=978607 访问 Kibana 界面,注意本场景中提供了两台 ECS 实例,请填写正确的 ECS 公网 IP 地址。code=978607 修改为上面终端输出的内容。在 Enrollment token 输入框中填入第 2 小节启动 Elasticsearch 后输出的 Kibana 注册 token,然后点击 Configure Elastic。

接着 Kibana 会自动完成注册设置。

Kibana 注册成功后会出现登录界面,输入 elastic 用户名密码登录 Elasticsearch。


4. 部署 Fleet

点击 Management -> Fleet -> Settings -> Fleet server hosts -> Edit hosts 添加 Fleet Server 信息。https://10.20.61.185:8220 是你准备安装 Fleet Server 的服务器地址,请根据实际情况进行修改,可以在云产品资源信息中查看 ECS 的 IP 地址(使用私有地址),Fleet Server 默认启动的端口号是 8220。

然后点击左上角的 Agents 标签。为了方便实验,选择 Quick Start 模式。点击 Generate Fleet Server Policy 让 Fleet 为我们自动生成 Fleet Server 策略和注册令牌。

在本实验中,我们将 Fleet Server 和 Elasticsearch 以及 Kibana 安装在同一个主机上,在生产环境中建议将 Fleet Server 安装在单独的主机上。复制以下命令,打开一个新的终端并执行命令。

当提示是否安装时,输入 y 确认。当出现以下内容时,表示 Fleet Server 已经安装成功。

可以使用 elastic-agent status 命令查看各个组件的运行状态。

此时重新回到 Kibana 界面可以看到 Fleet Server 已经成功连接。


5. 创建 Agent Policy

点击 Management -> Fleet -> Agents policies -> Create agent policy 创建一条策略用于关联 Elastic Agent 。

输入策略名 My Agent Policy,点击 Create agent policy。

创建好的策略如下所示。


6. 部署 Elastic Agent

在 Kibana 界面点击 Management -> Fleet -> Agents -> Add agent 添加 Elastic Agent。

Elastic Agent 选择关联第 5 小节中创建的 agent policy,选择在 Fleet 中注册 Elastic Agent 实现集中管理 Elastic Agent 的效果,可以帮助我们自动更新配置到 Elastic Agent 上。

然后我们在另一个主机上安装 Elastic Agent,打开一个新的终端,执行 ssh root@ 命令登录到第二台 ECS 上。

复制 Elastic Agent 的安装命令到新的主机上执行,由于 Fleet Server 用于 TLS 加密的自签名的证书,因此最后一条命令做了一点修改,在末尾添加了 --insecure 参数,表示允许连接到不受信任的服务器。

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.3.3-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.3.3-linux-x86_64.tar.gz 
cd elastic-agent-8.3.3-linux-x86_64
sudo ./elastic-agent install --url=https://10.20.61.185:8220 --enrollment-token=cGRPNmdJSUJaWFgwY01acW5rYkk6cEF4djYxbjFSM0NNOHl6czg2bS1tUQ== --insecure

当提示是否安装时,输入 y 确认。当出现以下内容时,表示 Elastic Agent 已经安装成功。

可以使用 elastic-agent status 命令查看各个组件的运行状态。

此时重新回到 Kibana 界面可以看到 Elastic Agent 已经成功连接。

7. 指标监控

指标监控可以帮助我们监测 CPU,内存,磁盘,网络,进程等资源的使用情况,在第 5 小节创建 agent policy 时会自动创建一个System Integrations 用于监控系统指标,Syslog,用户,SSH 登录等信息。

点击 Analytics -> Dashboard 界面,搜索 metric 可以看到 Fleet 为我们自动创建的一些内置的指标监控面板。

点击 [Metrics System] Host overview 面板,可以查看主机相关的指标监控信息。

点击 [Elastic Agent] Agent metrics 面板可以看到 Elastic Agent 相关的指标监控信息。


8. HTTP, TCP, ICMP 监控

Fleet 提供了以下几种轻量级检查来监控网络端点的状态:

  • 1.HTTP:向服务发送 HTTP 请求,可以根据 HTTP 响应码和响应体来判断服务是否运行正常。
  • 2.TCP:确保服务的端口正在监听。
  • 3.ICMP:通过 ICMP 请求来检测主机的网络可达性。

接下来先创建一个 HTTP 监控,点击 Management -> Fleet -> Agent policies -> My Agent Policy -> Add integration,添加监控策略。

在搜索栏中,输入 Elastic Synthetics,点击 Elastic Synthetics。

点击 Add Elastic Synthetics。

  • Integration name 输入 http-1。
  • Monitor Type 选择 HTTP。
  • URL 设置 http://localhost:8080,后续我们会在该端口启动一个 Web 服务。
  • Frequency 检测频率设置为 5s。

  • Timeout in seconds 检测失败的超时时间设置为 3s。
  • Agent policy 关联 My Agent Policy。
  • 点击 Save and continue 保存配置。

然后我们创建一个 TCP 监控。

  • Integration name 输入 tcp-1。
  • Monitor Type 选择 TCP。
  • Host:Port:设置 localhost:8090,后续我们会在该端口启动一个 Web 服务。
  • Frequency 检测频率设置为 5s。

  • Timeout in seconds 检测失败的超时时间设置为 3s。
  • Agent policy 关联 My Agent Policy。
  • 点击 Save and continue 保存配置。

最后创建一个 ICMP 监控。

  • Integration name 输入 icmp-1。
  • Monitor Type 选择 ICMP。
  • Host:设置 localhost。
  • Frequency 检测频率设置为 5s。

  • Timeout in seconds 检测失败的超时时间设置为 3s。
  • Agent policy 关联 My Agent Policy。
  • 点击 Save and continue 保存配置。

最终我们创建完的 HTTP, TCP, ICMP 监控如下所示。

点击 Observability -> Uptime -> Monitors 界面查看刚刚创建的监控状态,可以看到 icmp-1 的状态是 Up,此时主机是网络可达的;由于目前 8080 和 8090 端口还没服务在监听,因此 http-1 和 tcp-1 的状态现在是 Down。

接下来我们准备在 8080 和 8090 两个端口上运行服务。为了方便部署,这里准备使用 Docker 来启动 Nginx 服务。在登录第二台 ECS 服务器的终端执行以下命令,安装 Docker。

curl -sSL https://get.daocloud.io/docker | sh

启动两个 Nginx 容器,将 Nginx 的 80 端口分别映射到宿主机的 8080 和 8090 端口号上。

docker run -d --name mynginx1 -p 8080:80 nginx
docker run -d --name mynginx2 -p 8090:80 nginx

使用 docker ps 命令查看容器状态。

再次查看 Uptime Monitors 面板,可以看到 http-1 和 tcp-1 的状态已经变为 Up。


9. 日志监控

Fleet 对许多软件的日志,例如 Nginx, Redis, MySQL 提供了开箱即用的支持。Fleet 会对收集的日志进行处理,并且提供内置的面板进行可视化的展示分析。在本小节中,将对 Nginx 的日志进行采集分析。

点击 Management -> Fleet -> Agent policies -> My Agent Policy -> Add integration,添加监控策略。在搜索栏中,输入 Nginx,点击 Nginx。

点击 Add Nginx。

默认的 Nginx 监控配置如下所示。主要分为两部分:

  • 1.Nginx 日志采集。
  • 2.Nginx 指标监控,通过 HTTP 接口实时监测 Nginx 的连接状态。

Integration name 输入 nginx-1。日志采集的路径根据实际情况进行修改,这里我们保持不变。

指标监控也保持不变,后续会在 Nginx 的 80 端口上配置 /nginx_status 路径用于暴露 Nginx 指标监控。

  • Agent policy 关联 My Agent Policy。
  • 点击 Save and continue 保存配置。

最终创建完成的 Nginx 监控如下所示。

接下来准备在主机上部署 Nginx 服务。在登录第二台 ECS 服务器的终端执行以下命令,安装 Nginx。

apt install -y nginx

编辑 Nginx 配置文件 /etc/nginx/sites-enabled/default,在默认的 80 端口的 server 配置块中添加以下配置,开启 Nginx 状态监控。

location /nginx_status {
    stub_status;
}

保存配置退出后,执行 systemctl restart nginx 命令重启 Nginx 服务。然后执行 systemctl status nginx 命令查看 Nginx 状态。

在本机访问 Nginx 默认监听的 80 端口。

curl http://localhost

响应结果如下所示,返回了 Nginx 默认的欢迎页面。

访问一个不存在的 URL 路径,制造 404 的错误。

curl http://localhost/mypath

响应结果如下所示。

执行以下命令,查看 Nginx 日志。

tail -f /var/log/nginx/access.log

可以看到有 3 条日志,分别是第一次 200 成功访问 Nginx 的请求以及第二次 404 错误的请求。最后一条请求是 Elastic Agent 采集 Nginx 指标所产生的日志。

点击 Management -> Fleet -> Data Streams 界面,搜索 nginx,查看 Nginx 相关的监控项。点击每行右侧的 Actions 按钮可以跳转到相应的监控面板。

点击 [Logs Nginx ] Access and error logs 面板可以查看 Nginx 访问日志和错误日志。

点击 [Logs Nginx ] Overview 面板可以查看 Nginx 的日志分析。

点击 [Metrics Nginx]Overview 面板可以查看 Nginx 的指标监控信息。

点击 Observability -> Logs -> Stream 界面,点击 Stream live 可以实时查看日志,就像我们在主机上执行 tail -f 命令一样。在搜索栏可以输入过滤条件对日志进行过滤,例如输入"data_stream.dataset":"nginx.access" and host.name:"node-2" 可以过滤出主机名是 node-2 上的 Nginx 访问日志。


10. 使用 Osquery 查询主机信息

Osquery 是适用于 Windows、OS X (macOS) 和 Linux 操作系统的检测框架,使我们可以像查询数据库一样查询操作系统,例如操作系统版本,进程信息,网络信息,Docker 容器信息等等。

点击 Management -> Fleet -> Agent policies -> My Agent Policy -> Add integration,添加监控策略。在搜索栏中搜索 Osquery,点击 Osquery Manager。

点击 Add Osquery Manager。

  • Integration name 填写 osquery_manager-1
  • Agent policy 关联 My Agent Policy。
  • 点击 Save and continue 保存配置。

最终创建完成的 Osquery 策略如下所示。

点击 Management -> Osquery -> New live query 新建 Osquery 查询。

在 Agents 选项中可以选择需要执行 Osquery 的主机,这里选择 My Agent Policy 关联的主机。 在 Query 输入框下方可以输入执行的 SQL 语句,详情可以参见 Osquery schema

接下来列举几个常用的 Osquery 示例:

  • 查询操作系统版本。

  • 查询进程。

查询结果也支持使用 WHERE 关键字进行过滤,例如过滤出 disk_bytes_read 大于 100000 的结果。

  • 查询接口 IP 地址。

  • 查询容器信息。

  • 查询路由信息。

查询的历史结果可以在 Management -> Osquery -> Live queries 中找到。


实验地址:https://developer.aliyun.com/adc/scenario/00f46cc0136b4334b454ca29f6580705

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
71 3
|
1月前
|
传感器 机器学习/深度学习 自然语言处理
智能代理(Agent)在工具调用与协作中的应用实践
随着人工智能技术的飞速发展,智能代理(Agent)技术已成为解决复杂任务的关键手段。本文深入探讨了如何设计灵活的工具调用机制和构建高效的单/多Agent系统以提升任务执行效率。文章不仅涵盖了相关的理论知识,还提供了丰富的实践案例和代码实现,旨在帮助读者深入理解和应用智能代理技术。
145 2
|
1月前
|
Prometheus 监控 Java
深入探索:自制Agent监控API接口耗时实践
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控接口耗时,我们可以识别性能瓶颈,优化服务响应速度。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种实用的技术解决方案。
46 3
|
1月前
|
监控 数据可视化 Java
深入探索:自制Agent监控API接口耗时
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控这些指标,我们可以识别瓶颈,优化系统性能。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种有效的监控解决方案。
45 2
|
1月前
|
存储 Serverless API
基于百炼平台构建智能体应用——十分钟构造能主动提问的导购智能体
本文介绍了如何使用阿里云百炼大模型服务平台构建一个多智能体的智能导购应用,并将其部署到钉钉。通过百炼的Assistant API,您可以快速构建一个包含规划助理、手机导购、冰箱导购和电视导购的智能导购系统。文章详细讲解了从创建函数计算应用、访问网站、验证智能导购效果到将商品检索应用集成到智能导购中的全过程,帮助您快速实现智能导购功能。
169 0
基于百炼平台构建智能体应用——十分钟构造能主动提问的导购智能体
|
2月前
|
人工智能 搜索推荐 算法
AI Agent应用出路到底在哪?
【10月更文挑战第6天】
62 0
AI Agent应用出路到底在哪?
|
2月前
|
人工智能
Agent应用对话情感优化
【10月更文挑战第2天】
57 0
Agent应用对话情感优化
|
2月前
|
人工智能 API Python
|
2月前
|
传感器 人工智能 机器人
Multi-Agent应用领域及项目示例
多智能体系统(MAS)通过多个自主、交互式的智能体协同工作,能够更高效地解决复杂问题,提高系统的灵活性和鲁棒性。本文详细介绍了MAS的概念、特点及其在人工智能与机器人技术、经济与商业、交通管理、医疗健康和环境保护等领域的具体应用示例。
118 0
|
3月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
83 2
zabbix agent集成percona监控MySQL的插件实战案例

热门文章

最新文章