如何使用 APM 实用程序和 CLI 命令
访问 APM 实用程序命令
总结 安装地址池管理器 (APM) 应用程序后,您可以执行以下管理功能。
您可以使用 APM 实用程序脚本 (apm
) 来管理应用程序并访问用于配置地址管理功能的 CLI。瞻博网络 APM 安装将实用程序脚本放在 /var/local/apm 中,并在 /usr/local/bin/apm 中创建指向该脚本的符号链接。
您可以使用 apm
实用程序脚本(使用 K8 API 和 Helm 命令)执行以下操作:
- 创建和删除对象。
- 提供日志访问权限。
- 使用 Pod 容器进行交互式会话。
- 显示 APM 对象的状态。
apm
使用实用程序脚本可以简化您的许多管理职责。该脚本执行管理 APM 所需的任务,同时掩盖命令的kubectl
复杂性。
表 1 列出了可以使用 apm
实用程序脚本调用的命令,并描述了发生的操作。许多单独的命令都有您可以指定的选项。
名称 | 操作 |
---|---|
clean |
清理不需要的版本和/或 docker 缓存。
注意:
在发行版 3.2 中引入。 |
cli |
访问可用于配置 APM 功能和监控托管 BNG 的当前状态的 CLI。 |
contexts |
显示可用群集,以便使用 APM 进行控制
注意:
在发行版 3.2 中引入。 |
数据库信息 | 显示 APM 数据库微服务的当前状态,包括当前版本、有状态集 Pod 及其角色。
注意:
在发行版 3.2 中引入。 |
db 切换 | 强制持久状态数据库 (DB) 主 Pod 切换到符合条件的备份 Pod。在发行版 3.2 中引入。
注意:
数据库切换是一个服务中断事件,您只能在升级过程中使用它。 |
ip |
显示地址池管理器的 IP 地址。
注意:
在发行版 3.2 中引入。 |
link |
将群集链接到特定软件版本。
注意:
在发行版 3.2 中引入。 |
logs |
显示 APM 日志。 |
rename-context |
重命名上下文。不会影响群集上正在运行的地址池管理器。
注意:
在发行版 3.2 中引入。 |
restart |
重新启动一个或多个指定的服务。要运行此命令,您需要 sudo root 权限。
注意:
在发行版 3.1 中引入。 |
rollout |
升级 APM 服务。要运行此命令,您需要 sudo root 权限。
注意:
在发行版 3.2 中引入。 |
save-config |
将地址池管理器的当前配置保存到 Pod 外部的文件中。
注意:
在发行版 3.2 中引入。 |
shell |
连接到正在运行的 APM 微服务。 |
setup |
在安装过程中设置 APM 应用程序。要运行此命令,您需要 sudo root 权限。 |
start |
启动特定的 APM 服务或所有 APM 服务。要运行此命令,您需要 sudo root 权限。 |
status |
显示 APM 服务的当前状态。要运行此命令,您需要 sudo root 权限。 |
storage |
提供 APM 的存储驱动程序的状态。
注意:
在发行版 3.2 中引入。 |
stop |
停止所有 APM 服务。要运行此命令,您需要 sudo root 权限。 |
unlink |
取消链接与上下文关联的组件。
注意:
在发行版 3.2 中引入。 |
version |
显示 APM 实例中每个正在运行的微服务的版本以及 APM 实用程序。它还列出了系统上所有可用的 APM 软件版本。 |
使用以下常规语法发出命令:
-
对于简短选项:
$ apm command-name -option
-
对于长选项:
$ apm command-name ––option
要查看集群的详细信息,请在命令后使用集群名称。
$ apm command-name --context contextname
要显示带有简要说明的可用命令列表,请使用 h
或 help
选项:
$ apm -h
$ apm -help
要显示特定命令的选项,请执行以下操作:
$ apm command-name -h
要指定 --no-color 选项以禁用彩色文本输出(用于区分日志和不同的微服务):
$ apm command-name --no-color
将 APM 升级到新版本
使用此过程升级到新版本的 APM。此过程假定您的系统上正在运行 APM。
启动或停止 APM 服务
apm
使用实用程序脚本启动或停止所有 APM 服务。服务按依赖项顺序启动。基本服务(db 和 mgmt)首先开始,然后是其他服务。服务按依赖关系的相反顺序停止。
-
要启动所有 APM 服务,请执行以下操作:
$ sudo -E apm start --context contextName
注意:我们建议您使用
sudo -E apm start ––services
选项来启动单个服务或一组服务,仅用于故障排除。在瞻博网络支持代表的指导下使用。请谨慎使用,因为此命令类似于重新启动到出厂默认设置。注意:默认情况下,APM 从出厂默认值开始。配置将重置为其初始状态,清除所有持久状态数据库 (DB),并清除所有持久性日志。在 APM 3.2 版中,初始设置后,您可以使用
apm start –-save-config
来保存配置。 将配置保存到文件(而不是在 Pod 上),以便以后可以加载。 -
要停止所有 APM 服务,请执行以下操作:
$ sudo -E apm stop --context contextName WARNING Shutting down your Address Pool Manager will reset it to factory defaults and you will lose all state on the system. Shutdown will begin in 2 minutes. Please use CTRL+C to cancel.
设置密钥
您可以在安装过程中设置密钥,也可以运行以 sudo -E apm setup --context contextName --secrets
设置密钥或更新密钥。
$ sudo -E apm setup --context contextName --secrets APMi certficate (configured: N/A) > ../apm.crt Copied /home/user/KeySet/etc/certs/apm.crt to /var/local/apm/swwf-il-k46-s/secrets/apmi/ with 600 permissions APMi key (configured: N/A) > ../apm_swwf-il-k46-s.key Copied /home/user/KeySet/etc/keys/private/apm_swwf-il-k46-s.key to /var/local/apm/swwf-il-k46-s/secrets/apmi/ with 600 permissions APMi root ca (configured: N/A) > ../rootCA.crt Copied /home/user/KeySet/etc/certs/rootCA.crt to /var/local/apm/swwf-il-k46-s/secrets/apmi/ with 600 permissions
显示数据库信息
命令 apm db-info
显示 APM 数据库微服务的当前状态,包括当前版本、有状态集 Pod 及其角色。
apm db-info [--context contextName] [-o|--output json]
$ apm db-info [--context contextName] [-o|--output json]
Version: 6.2.13
Primary: jnpr-apm-redis-0
Backup(s): jnpr-apm-redis-1
检查 APM 服务的状态
apm status
使用实用程序脚本检查表 2 中列出的每个 APM 服务(功能组件)的状态。状态显示服务是正在运行、已退出还是尚未启动。它还会在 Kubernetes Pod 上显示服务名称。您可以比较服务的正常运行时间,以快速查看是否有任何服务已重新启动。
微服务 |
Pod 前缀 |
---|---|
addrman - 地址管理器 |
JNPR-APM-ADDRMAN |
mgmt — CLI 管理 |
JNPR-APM-管理 |
Redis(远程词典服务器)— 由一组提供持久数据库的 Pod 组成。 |
jnpr-apm-redis |
entman - 实体管理器 |
jnpr-apm-entman |
provman - 调配经理 |
jnpr-apm-provman |
apm-fluentd - 一组 pod,用于从 mgmt、address manager、entity manager、provisioning manager 和 provisioning manager 微服务收集日志,并将其导出到远程 syslog 服务器。 |
jnpr-apm-fluentd |
要检查状态,请执行以下操作:
例如:
$ apm status --context contextName --detail MICROSERVICE POD STATE RESTARTS UPTIME NODE addrman jnpr-apm-addrman-7b778979b6-5vk44 Running 0 11 days, 23:25:14.629150 test-node-1 mgmt jnpr-apm-mgmt-6b4cf98d4d-hmjd9 Running 0 11 days, 23:25:33.629206 test-node-1 entman jnpr-apm-entman-7d66d89d6b-5295d Running 0 11 days, 23:25:14.629224 test-node-1 apm-fluentd jnpr-apm-fluentd-qzjp2 Running 0 11 days, 23:25:55.629242 test-node-1 provman jnpr-apm-provman-849fb9cc4-vswm6 Running 0 11 days, 22:50:05.629258 test-node-1 redis jnpr-apm-redis-0 Running 0 11 days, 23:25:36.629275 test-node-1 redis jnpr-apm-redis-1 Running 0 11 days, 23:25:23.629290 test-node-1 redis jnpr-apm-redis-sentinels-0 Running 0 11 days, 23:25:26.629306 test-node-1 redis jnpr-apm-redis-sentinels-1 Running 0 11 days, 23:25:26.629322 test-node-1 redis jnpr-apm-redis-sentinels-2 Running 0 11 days, 23:25:26.629337 test-node-1 Storage: Healthy
$ apm status --context contextName MICROSERVICE PODS RESTARTS addrman 1/1 0 mgmt 2/2 0/0 entman 1/1 0 apm-fluentd 1/1 0 provman 1/1 0 redis 5/5 0/0/0/0/0 Storage: Healthy
显示 APM IP 地址
apm ip
使用实用程序脚本显示编排 APM Pod 所需的 Kubernetes 对象。例如:
$ apm ip --context contextName --detail SERVICE MICROSERVICE EXTERNAL IP INTERNAL IP address-pool-manager-ssh address-pool-manager 10.9.2.13 10.0.239.217 apm-apmi provman 192.168.0.0 10.0.116.217 jnpr-apm-mgmt-svc mgmt 10.0.110.57 jnpr-apm-redis-svc redis 10.0.244.166
显示日志记录
总结 apm logs
使用实用程序脚本显示 APM 运行时发生的事件的日志。您还可以使用 BBE 事件收集和可视化实用程序来显示自 APM 启动以来收集和存储的基于文件的日志。BBE 事件收集和可视化是一个基于云的集中式实用程序,它提供了一种捕获跨越 APM 微服务生命周期的 APM 日志的方法。设置 APM 时,您可以链接到 BBE 事件收集和可视化日志记录实用程序。请参阅《宽带边缘事件收集和可视化安装指南》。
显示 APM 日志记录
BBE 事件收集和可视化是一个基于云的集中式实用程序,它提供了一种捕获跨越 APM 微服务生命周期的 APM 日志的方法。如果您设置了 BBE 事件集合和可视化,则在 APM 设置期间,您可以指向 BBE 事件集合和可视化来执行日志记录。BBE Event Collection and Visualization 具有基于 Web 的 OpenSearch 功能界面,用于对收集的系统日志事件进行高级搜索、聚合、查看和数据分析。
apm logs
使用实用程序脚本显示 APM 运行时发生的事件的日志。事件日志包括以下非详尽列表中显示的事件:
-
池域注册事件
-
地址分配失败
-
网络实体连接失败
-
启动消息
-
网络实体重新同步事件
-
池和分区利用率阈值和耗尽警告
默认情况下,APM 将日志发送到服务的标准输出 (stdout)。输出显示所有服务或指定服务的循环缓冲区。您还可以启用日志记录以跟踪正在运行的服务的日志输出。遵循日志输出会创建一个打开的会话,该会话会连续将日志流式传输到 stdout。
APM 日志记录功能掩盖了收集日志信息的命令的底层复杂性 kubectl log
。您仍然可以使用命令 kubectl log
,但这不在本文档的讨论范围之内。
可以使用第三方应用程序捕获和重定向容器的 stdout 流。请参阅您的第三方文档以获取帮助。您还可以使用不同的日志记录驱动程序配置 Docker 以重定向 stdout。请参阅 Docker 文档以获取帮助。
要显示所有服务的 APM 日志,请执行以下操作:
$ apm logs [--context contextName] [-f] [--previous] [--services SERVICES [SERVICES ...]] [--logset LOGSET] [--nocolor]
apm logs ––services
仅当在瞻博网络支持代表的指导下进行故障排除时,才使用选项。
要遵循所有服务的日志,请指定以下选项 (-f
):
$ apm logs -f
要在 Kubernetes Pod 中查看容器先前实例的日志,请指定先前的容器选项 (-p
):
$ apm logs -p
您可以使用标准 Ubuntu 约定将日志重定向到文件或终端和文件。有关更多信息,请参阅 Ubuntu 文档,但您可以使用以下示例作为起点:
-
仅将所有日志重定向到一个文件。
$ apm logs > file-path
-
将所有日志重定向到屏幕和文件。
$ apm logs | tee file-path
默认情况下,实用程序命令报告所有严重级别的日志。您可以通过在启动 APM 服务时设置严重性级别来限制报告的日志数。在启动服务时包括该 --log-level
选项,以指定您还使用命令 logs
时报告的日志的最低严重性级别。将报告指定级别和所有更严重的级别的日志。默认级别为 debug
,这是最低严重性级别。这意味着默认情况下会报告所有级别的日志。
设置严重性级别时,它将应用于所有服务。
-
要设置所有服务的严重性级别,请执行以下操作:
$ apm start ––log-level severity-level
仅在瞻博网络支持代表的指导下将该 ––services
选项用于故障排除。
您可以按严重性递增的顺序指定以下任一严重性级别:
严重性级别 | 说明 |
---|---|
debug |
通常仅在您尝试诊断问题时才感兴趣的详细信息。这些日志通常非常频繁。 |
info |
关注的事件或非错误条件。此级别的日志可确认一切正在按预期工作。这些日志通常不是很频繁。 |
warning |
表示发生了一些意外的事情,或者在不久的将来可能会出现一些问题。后者的一个简单示例是 磁盘空间不足 警告,该警告表示您可能很快就会耗尽磁盘空间。在任何一种情况下,软件仍按预期工作,但您可能需要更密切地监视它。这些日志通常不是很频繁。 |
error |
表示更严重的问题阻止了软件执行某些功能,但软件已尽可能优雅地处理了问题以继续运行。 |
critical |
指示程序本身可能无法继续运行的严重错误。 |
--logset
您可以使用选项仅显示 APM 服务的日志,也可以仅显示预构建服务的日志。如果不使用此选项,则仅显示 APM 服务日志。
要仅显示 APM 服务的日志,请执行以下操作:
$ apm logs ––logset apm $ apm logs
要显示预构建服务的日志,请执行以下操作:
$ apm logs ––logset apm-infra
预构建服务是从其他来源借用的服务,用于为 APM 提供基础架构功能。这些来源包括 cMGD、haproxy、redis 和 redis-sentinel。例如,redis 提供数据库和消息服务,cMGD 提供配置/CLI 服务等。
确定 APM 版本
apm version [--context <context name>] [-o|--output json] [--detail| --compare <SwVersion>]
使用实用程序脚本确定已安装的 APM 版本的版本号。
要显示发行版:
$ apm version --context contextName --detail Address Pool Manager versions: Microservice Release (version) apm: 3.2.0 addrman: 3.2.0 apm-fluentd: 3.2.0 entman: 3.2.0 mgmt: 3.2.0 provman: 3.2.0 redis: 3.2.0 (6.2.13)
要将指定的软件版本版本与指定上下文的当前部署版本进行比较,请执行以下操作:
apm version --compare 3.2.1 –-context myCluster components: apm: 3.2.0 -> 3.2.1 addrman: 3.2.0 -> 3.2.1 entman: 3.2.0 -> 3.2.1 apm-fluentd: 3.2.0 -> 3.2.1 mgmt: 3.2.0 -> 3.2.1 provman: 3.2.0 -> 3.2.1 redis: 6.2.13 -> 7.2.1
-j
使用选项以 JavaScript 对象标记 (JSON) 格式呈现版本信息。
卸载并删除 APM
apm
使用实用程序脚本卸载 APM 配置。该uninstall
命令将恢复您在设置 APM 时执行的操作。使用此命令可将 APM 恢复到安装应用程序后、执行任何设置配置之前的状态。
要卸载 APM,请执行以下操作:
$ sudo -E apm stop –-context contextName sudo -E apm unlink –-context contextName
卸载 APM 后,我们建议您使用 Debian 卸载过程移除整个软件包。
$ sudo sudo -E apm clean --uninstall [--context contextName]
如何访问 APM 配置和操作命令
访问 APM CLI
要访问 CLI 提示符,请输入以下 apm
实用程序脚本命令:
$ apm cli --context contextName [-p|--pipe]
root@jnpr-apm-mgmt
输入问号以查看可用的顶级 CLI 命令。此命令列表是 Junos OS 顶级命令的子集。
root@jnpr-apm-mgmt> ? Possible completions: clear Clear information in the system configure Manipulate software configuration information file Perform file operations help Provide help information monitor Show real-time debugging information op Invoke an operation script quit Exit the management session request Make system-level requests restart Restart software process set Set CLI properties, date/time, craft interface message show Show system information ssh Start secure shell on another host start Start shell telnet Telnet to another host test Perform diagnostic debugging traceroute Trace route to remote host
有关 Junos OS CLI 基础知识的概述,请参阅 第一天:探索 Junos CLI。有关详细信息,请参阅 CLI 用户指南。
访问和使用 CLI 配置语句
访问和使用 CLI 操作命令
要监控 APM,请查看 APM 配置和统计信息,或手动运行某些操作: