使用 Fleet 管理 Elastic Agent 监控应用

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 本场景主要介绍了如何使用 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

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
人工智能 自然语言处理 搜索推荐
大模型应用产品「归一妙计」亮相,AI Agent落地广告投放场景
在通用L0级语言模型基础之上,结合领域知识训练出适配各应用场景的专属模型,将成为企业经营的“智慧大脑”。 在广告投放这一企业核心的营销场景中,「营销领域大模型」已成为引领行业变革的关键力量,它将重塑数字营销的内容生产方式、投放工作流、消费模式等等,进一步推动营销生态的发展和进化,让广告主的营销内容更丰富、投放更高效、转化更直观。 近期,归一智能正式发布了AI Agent应用产品「归一妙计」,这是一款基于「利欧归一」营销领域大模型,训练出的适配各媒体平台投放工作流的SEMGPT专属模型,能够为企业提供更加智能、精准和高效的AI广告投手服务。
232 0
大模型应用产品「归一妙计」亮相,AI Agent落地广告投放场景
|
2月前
|
Kubernetes 监控 安全
Kustomize 生产实战 - 注入监控 APM Agent
Kustomize 生产实战 - 注入监控 APM Agent
|
1月前
|
人工智能 搜索推荐 机器人
AI Agent涌向移动终端,手机智能体开启跨端跨应用业务连接新场景
AI Agent涌向移动终端,开启跨端跨应用业务连接新场景,手机智能体将成企业AIGC应用新标配。
44 0
|
3月前
|
数据采集 Web App开发 API
Python中User-Agent的重要作用及实际应用
Python中User-Agent的重要作用及实际应用
|
4月前
|
监控 Java
Pinpoint【部署 02】Pinpoint Agent 安装启动及监控 SpringBoot 项目案例分享(添加快速测试math-game.jar包)
Pinpoint【部署 02】Pinpoint Agent 安装启动及监控 SpringBoot 项目案例分享(添加快速测试math-game.jar包)
79 0
|
9月前
|
运维 监控
【运维】在zabbix-server的web界面配置agent主机监控
【运维】在zabbix-server的web界面配置agent主机监控
|
5月前
|
人工智能 自然语言处理 安全
数据泄露成LLM应用最大障碍,如何用RPA Agent智能体破解谜题?
大语言模型数据泄露堪忧,超自动化Agent成解决知道,看实在RPA Agent智能体如何破解LLM应用安全谜题。
125 0
|
6月前
|
监控 网络协议 Unix
zabbix通过agent客户端监控主机
zabbix通过agent客户端监控主机
|
6月前
|
监控 关系型数据库 MySQL
Zabbix分布式监控实战(二)——CentOS 7.5安装Zabbix-agent 5.0监控Mysql数据库
Zabbix分布式监控实战(二)——CentOS 7.5安装Zabbix-agent 5.0监控Mysql数据库
|
9月前
|
运维 监控 网络协议
【运维】Zabbix Agent安装——监控服务器冒红灯检查步骤
【运维】Zabbix Agent安装——监控服务器冒红灯检查步骤

热门文章

最新文章