本页内容
如何使用命令行工具管理 APM
安装地址池管理器 (APM) 应用程序后,您可以执行以下管理功能。
地址池管理器为您提供了两个用于执行管理员任务的命令行选项。您可以使用 APM 实用程序脚本 (apm) 或 Kubernetes 命令行工具来管理 APM。
访问 APM 实用程序命令
使用 APM 实用程序命令执行管理功能。
您可以使用 APM 实用程序脚本 (apm) 来管理应用程序并访问用于配置地址管理功能的 CLI。瞻博网络 APM 安装将实用程序脚本放置在 /var/local/apm 中,并在 /usr/local/bin/apm 中创建指向该脚本的符号链接。
您可以使用 apm 实用程序脚本(使用 Kubernetes 命令行工具和 Helm 命令)执行以下操作:
- 创建和删除对象。
- 提供日志访问权限。
- 使用 pod 容器进行交互式会话。
- 显示 APM 对象的状态。
使用实用工具脚本可以 apm 简化许多管理职责。该脚本执行管理 APM 所需的任务,同时掩盖命令的 kubectl 复杂性。
表 1 列出了可以使用 apm 实用程序脚本调用的命令,并介绍了发生的操作。许多单独的命令都有可以指定的选项。
如果在位于多个地理位置的设置中使用这些命令,则对于该 context context-name 选项,必须输入与管理群集关联的 Karmada 上下文的上下文名称。
| 姓名 | 行动 |
|---|---|
|
|
清理不需要的版本和 Docker 缓存。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
允许您访问可用于配置 APM 功能的 CLI。 此命令提供以下选项:
|
|
|
显示使用 APM 进行控制的可用上下文。 此命令提供以下选项:
|
|
|
提供对 Redis 数据库 CLI 的访问。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
显示 APM 数据库微服务的当前状态,包括当前版本、有状态集 pod 及其角色。
注意:对于位于多个地理位置的设置,显示
apm db-info工作负载集群的 redis 角色。
此命令提供以下选项:
|
|
|
强制主数据库容器切换到符合条件的备份数据库容器。要运行此命令,您需要 sudo 权限。 此命令提供以下选项:
注意:
|
|
|
显示每个服务的外部 IP 地址。 此命令提供以下选项:
|
位于单一地理位置的设置用途: 位于多个地理位置的设置用途: sudo -E apm link [--context karmada-context-name] [--log info] [--no-color][--workload-contexts workload-1-context-name workload-2-context-name] [--observer-context observer-context-name] [--version software-release] [--from-running] |
将群集链接到特定软件版本。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
apm logs --logset logset-type --services services-names --context context-name --log info --follow --previous --nocolor |
显示 APM 微服务的日志。如果运行命令时不带该
注意:
如果在位于多个地理位置的设置中使用此命令,则必须输入与管理群集关联的 Karmada 上下文的上下文名称。此外,由于多地理部署中存在多个实例
|
|
|
显示工作负载群集之间的数据库同步状态。 此命令提供以下选项:
注意:
此命令仅在位于多个地理位置的设置中受支持。 |
|
|
从应用程序的角度显示工作负载集群的状态。 此命令提供以下选项:
注意:
此命令仅在位于多个地理位置的设置中受支持。 |
|
|
启动到其他工作负载群集的切换。APM 微服务在其他工作负载群集上重新调度。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
此命令的输出指示成功或失败。如果发生故障,命令将停止,故障状态
注意:
此命令仅在位于多个地理位置的设置中受支持。 |
|
|
重命名上下文。该命令不会影响当前在群集上运行的 APM。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
重新启动一个或多个指定的服务。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
升级或启动 APM 服务。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
sudo -E apm save-config -- context context-name |
将地址池管理器的当前配置保存到容器外部的文件中。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
在安装过程中设置 APM 应用程序。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
将您连接到正在运行的微服务。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
启动所有 APM 服务。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
|
|
显示 APM 服务的当前状态。 此命令提供以下选项:
|
|
|
停止所有 APM 服务。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
apm storage --context context-name |
提供 APM 的存储驱动程序的状态。 此命令提供以下选项:
|
sudo -E apm unlink --context context-name |
取消链接与上下文关联的组件。要运行此命令,您需要 sudo root 权限。 此命令提供以下选项:
|
apm version --context context-name |
显示 APM 实例中每个正在运行的微服务的版本以及 APM 实用程序。它还列出了系统上所有可用的 APM 软件版本。 此命令提供以下选项:
|
使用以下常规语法发出命令:
-
简短的选项:
$ apm command-name -option
-
对于长期选项:
$ apm command-name ––option
要将命令定位到特定群集上下文,请使用该 context 选项。
$ apm command-name --context context-name
要显示带有简要说明的可用命令列表,请使用 h 或 help 选项:
$ apm -h
$ apm --help
要显示特定命令的选项:
$ apm command-name -h
要指定 no-color 禁用彩色文本输出的选项(用于区分日志与不同微服务):
$ apm command-name --no-color
使用 APM 安装实用程序将 APM 升级到新版本
使用此过程升级到安装在类似群集部署(单个地理位置或多个地理位置)上的新版本的 APM。此过程假定 APM 在您的系统上运行。
使用此过程升级到新版本的 APM,该版本安装在由 BBE Cloudsetup 实用程序或 Red Hat OpenShift Container Platform 控制台创建的群集上。此过程假定 APM 在您的系统上运行。
在不使用 APM 实用程序的情况下将 APM 升级到新版本
本节中的说明介绍了在您选择的预先存在的单地理位置 Kubernetes 群集上安装 APM 的升级步骤。此过程是一个手册过程,不使用 APM 安装包附带的 APM 实用程序。
使用 APM 实用程序启动或停止 APM 服务
使用实用程序脚本启动 apm 或停止所有 APM 服务。服务按依赖关系顺序开始。首先开始提供基本服务(数据库和管理),然后是其他服务。服务按依赖关系相反的顺序停止。
-
要启动所有 APM 服务:
$ sudo -E apm start --context context-name
注意:建议仅将启动
sudo -E apm start ––services单个服务或一组服务用于故障排除的选项。在瞻博网络支持代表的指导下使用。请谨慎使用,因为此命令类似于重新启动到出厂默认设置。注意:APM 在您执行
apm setup命令时从其初始设置开始。执行命令时apm stop,任何持久状态都将丢失。可以使用命令apm save-config保存当前配置。保存的配置是下次启动 APM 时使用的配置。 -
要停止所有 APM 服务:
$ sudo -E apm stop --context context-name 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.
使用 Kubernetes 命令行工具重新启动 APM 服务
使用 kubectl delete pods Kubernetes 命令重新启动 APM 服务。例如:
$ kubectl delete pod -n jnpr-apm jnpr-apm-addrman-758cc8885 pod "jnpr-apm-addrman-7585cc8885" deleted
要确定 Pod 名称,可以使用 kubectl get pods -n jnpr-apm Kubernetes 命令(请参见 使用 Kubernetes 命令行工具检查 APM 服务的状态)。
使用 APM 实用程序设置密钥
您可以在设置过程中设置机密,也可以运行以 sudo -E apm setup --context context-name --secrets 设置机密或更新它们。
$ sudo -E apm setup --context context-name --secrets APMi Secret Name (deployed: ) > APMi certificate (default: ) > ./apm.crt Copied /home/user/apm.crt to /var/local/apm/e476597324/secrets/apmi with 600 permissions APMi private key (default: ) > ./apm.key Copied /home/user/apm.keyto /var/local/apm/e476597324/secrets/apmi with 600 permissions APMi root certificate (default: ) > ./rootCA.crt Copied /home/user/rootCA.crt to /var/local/apm/e476597324/secrets/apmi with 600 permissions
如果输入密钥名称的值,则不会要求您提供密钥或认证文件。
使用 APM 实用程序显示数据库信息
该 apm db-info 命令显示 APM 数据库微服务的当前状态,包括当前版本、有状态集 Pod 及其角色。
apm db-info工作负载集群的 redis 角色。
位于单一地理位置的设置
$ apm db-info [--context context-name] [-o|--output json] Version: 6.2.16 Primary: jnpr-apm-redis-0 Backup(s): jnpr-apm-redis-1
位于多个地理位置的设置
$ apm db-info --context wf-mg-jh-flair redis-workload-1: version: 6.2.16-debian-12-r3 Primary: jnpr-apm-redis-workload-1-0 Backup(s): jnpr-apm-redis-workload-1-1 redis-workload-2: version: 6.2.16-debian-12-r3 Primary: jnpr-apm-redis-workload-2-0 Backup(s): jnpr-apm-redis-workload-2-1
使用 Kubernetes 命令行工具显示正在运行的数据库
使用 kubectl exec Kubernetes 命令显示正在运行的数据库,以查看哪个 Pod 是主 Pod,并确定是否要升级持久状态数据库。您应该在主 Redis 服务器实例和辅助 Redis 服务器实例上运行。kubectl exec例如:
$ kubectl exec -i -n jnpr-apm jnpr-apm-redis-0 -- redis-cli -p 7380 role master 174738135 10.42.1.152 7380 174738135$
$ kubectl exec -i -n jnpr-apm jnpr-apm-redis-1 -- redis-cli -p 7380 role slave 10.42.2.22 7380 connected 174740637
使用 Kubernetes 命令行工具执行数据库切换
要强制永久状态数据库主 Pod 切换到符合条件的备份 Pod,请执行以下操作:
使用 APM 实用程序检查 APM 服务的状态
使用 apm status 实用程序脚本检查 表 2 中列出的每个 APM 服务(功能组件)的状态。状态显示服务是否正在运行、已退出或尚未启动。它还会在 Kubernetes Pod 上显示服务名称。可以比较服务的正常运行时间,以快速查看是否已重启任何服务。
apm status实用程序脚本检查多个地理、多群集设置的每个 APM 服务的状态。
| 微服务 |
Pod 前缀 |
|---|---|
| addrman - 地址管理器。 |
jnpr-apm-addrman |
| 管理 — CLI 管理。 |
JNPR-APM-管理 |
| redis (远程字典服务器)— 由一组提供持久数据库的 Pod 组成。 |
jnpr-apm-redis |
| entman - 实体管理器。 |
jnpr-apm-entman |
| provman — 配置管理器。 |
jnpr-apm-provman |
| dbSync - 数据库同步。 |
jnpr-apm-db同步 |
| cfgServer—配置文件复制。 |
jnpr-apm-cfg服务器 |
| bbe-observer - 观察多个群集调度事件以计算代号。 |
jnpr-apm-bbe-观察者 |
要检查状态,请执行以下操作:
例如:
$ apm status --context context-name --detail MICROSERVICE WORKLOAD CLUSTER POD STATE RESTARTS UPTIME NODE addrman swwf-fedora-wl1 jnpr-apm-addrman-d5f946495-pjv2t Running 0 0:00:42.643899 swwf-fedora-wl1-n-1.englab.juniper.net configserver swwf-fedora-wl1 jnpr-apm-configserver-swwf-fedora-wl1-65b5866785-k52tg Running 0 0:01:03.643932 swwf-fedora-wl1-n-1.englab.juniper.net configserver swwf-fedora-wl2 jnpr-apm-configserver-swwf-fedora-wl2-6889796559-vwwr2 Running 0 0:01:05.643950 swwf-fedora-wl2-n-1.englab.juniper.net dbsync swwf-fedora-wl1 jnpr-apm-dbsync-swwf-fedora-wl1-669c58cc7b-q9h9g Running 0 0:00:42.643965 swwf-fedora-wl1-n-1.englab.juniper.net dbsync swwf-fedora-wl2 jnpr-apm-dbsync-swwf-fedora-wl2-745cd74bf6-rkbbt Running 0 0:00:41.643980 swwf-fedora-wl2-n-1.englab.juniper.net entman swwf-fedora-wl1 jnpr-apm-entman-fcc7cb9b7-fd9vl Running 0 0:00:42.643994 swwf-fedora-wl1-n-1.englab.juniper.net mgmt swwf-fedora-wl1 jnpr-apm-mgmt-5d6695dcfd-zfl92 Running 0 0:00:44.644007 swwf-fedora-wl1-n-1.englab.juniper.net provman swwf-fedora-wl1 jnpr-apm-provman-5cd4f48ccc-gvtb8 Running 0 0:00:26.644021 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl1 swwf-fedora-wl1 jnpr-apm-redis-swwf-fedora-wl1-0 Running 0 0:01:04.644034 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl1 swwf-fedora-wl1 jnpr-apm-redis-swwf-fedora-wl1-1 Running 0 0:00:53.644048 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl1 swwf-fedora-wl1 jnpr-apm-redis-swwf-fedora-wl1-sentinels-0 Running 0 0:00:53.644062 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl1 swwf-fedora-wl1 jnpr-apm-redis-swwf-fedora-wl1-sentinels-1 Running 0 0:00:53.644092 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl1 swwf-fedora-wl1 jnpr-apm-redis-swwf-fedora-wl1-sentinels-2 Running 0 0:00:53.644107 swwf-fedora-wl1-n-1.englab.juniper.net redis-swwf-fedora-wl2 swwf-fedora-wl2 jnpr-apm-redis-swwf-fedora-wl2-0 Running 0 0:01:03.644122 swwf-fedora-wl2-n-1.englab.juniper.net redis-swwf-fedora-wl2 swwf-fedora-wl2 jnpr-apm-redis-swwf-fedora-wl2-1 Running 0 0:00:53.644136 swwf-fedora-wl2-n-1.englab.juniper.net redis-swwf-fedora-wl2 swwf-fedora-wl2 jnpr-apm-redis-swwf-fedora-wl2-sentinels-0 Running 0 0:00:53.644151 swwf-fedora-wl2-n-1.englab.juniper.net redis-swwf-fedora-wl2 swwf-fedora-wl2 jnpr-apm-redis-swwf-fedora-wl2-sentinels-1 Running 0 0:00:53.644165 swwf-fedora-wl2-n-1.englab.juniper.net redis-swwf-fedora-wl2 swwf-fedora-wl2 jnpr-apm-redis-swwf-fedora-wl2-sentinels-2 Running 0 0:00:53.644180 swwf-fedora-wl2-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-controller-manager-559f5f4c94gr6z Running 0 0:01:51.644194 swwf-fedora-kd-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-controller-manager-559f5f4c9csxmp Running 0 0:01:51.644208 swwf-fedora-kd-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-controller-manager-559f5f4c9gs67d Running 0 0:01:51.644228 swwf-fedora-kd-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-grpc-server-7594fc9fcd-6n9jt Running 0 0:01:50.644250 swwf-fedora-kd-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-grpc-server-7594fc9fcd-cckhb Running 0 0:01:50.644280 swwf-fedora-kd-n-1.englab.juniper.net bbe-observer swwf-fedora-kd address-pool-manager-observer-grpc-server-7594fc9fcd-r952s Running 0 0:01:51.644313 swwf-fedora-kd-n-1.englab.juniper.net Storage: swwf-fedora-wl1: Healthy swwf-fedora-wl2: Healthy
$ apm status --context context-name --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 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 context-name MICROSERVICE PODS RESTARTS addrman 1/1 0 mgmt 2/2 0/0 entman 1/1 0 provman 1/1 0 redis 5/5 0/0/0/0/0 Storage: Healthy
使用 Kubernetes 命令行工具检查 APM 服务的状态
使用 Kubernetes 命令行工具检查 表 2 中列出的每个 APM 服务(功能组件)的状态。状态显示服务是否正在运行、已退出或尚未启动。它还会在 Kubernetes Pod 上显示服务名称。可以比较服务的正常运行时间,以快速查看是否已重启任何服务。
| 微服务 |
Pod 前缀 |
|---|---|
| addrman - 地址管理器。 |
jnpr-apm-addrman |
| 管理 — CLI 管理。 |
JNPR-APM-管理 |
| redis (远程字典服务器)— 由一组提供持久数据库的 Pod 组成。 |
jnpr-apm-redis |
| entman - 实体管理器。 |
jnpr-apm-entman |
| provman — 配置管理器。 |
jnpr-apm-provman |
| dbSync - 数据库同步。 |
jnpr-apm-db同步 |
| cfgServer—配置文件复制。 |
jnpr-apm-cfg服务器 |
| bbe-observer - 观察多个群集调度事件以计算代号。 |
jnpr-apm-bbe-观察者 |
要检查状态,请运行以下命令:
$ kubectl get pods -n jnpr-apm -o wide
例如:
$ kubectl get pods -n jnpr-apm -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES jnpr-apm-addrman-7585cc8885-5xr24 1/1 Running 0 11m 10.42.0.31 binnacle.englab.juniper.net <none> <none> jnpr-apm-entman-5dcf659676-4mq6g 1/1 Running 0 5d22h 10.42.2.24 jib.englab.juniper.net <none> <none> jnpr-apm-mgmt-6d7c4f47dc-2v8ss 1/1 Running 0 5d22h 10.42.0.30 binnacle.englab.juniper.net <none> <none> jnpr-apm-provman-65c66bc689-bvhb6 1/1 Running 0 5d22h 10.42.1.153 keel.englab.juniper.net <none> <none> jnpr-apm-redis-0 1/1 Running 0 5d22h 10.42.2.22 jib.englab.juniper.net <none> <none> jnpr-apm-redis-1 1/1 Running 0 5d22h 10.42.1.152 keel.englab.juniper.net <none> <none> jnpr-apm-redis-sentinels-0 1/1 Running 0 5d22h 10.42.1.151 keel.englab.juniper.net <none> <none> jnpr-apm-redis-sentinels-1 1/1 Running 0 5d22h 10.42.0.28 binnacle.englab.juniper.net <none> <none> jnpr-apm-redis-sentinels-2 1/1 Running 0 5d22h 10.42.2.23 jib.englab.juniper.net <none> <none>
使用 APM 实用程序显示 APM IP 地址
使用 apm ip 实用程序脚本显示 APM Pod 编排所需的 Kubernetes 对象。例如:
$ apm ip --context context-name --detail SERVICE MICROSERVICE EXTERNAL IP INTERNAL IP PORT(S) apm-ssh mgmt 198.19.224.215 10.43.35.110 22 jnpr-apm-mgmt-svc mgmt 10.43.131.131 8066 jnpr-apm-redis-sentinels-0-svc redis 10.43.142.53 7381 jnpr-apm-redis-sentinels-1-svc redis 10.43.109.206 7381 jnpr-apm-redis-sentinels-2-svc redis 10.43.104.100 7381 jnpr-apm-redis-svc redis 10.43.6.207 7380 apm-apmi provman 198.19.224.212 10.43.221.12 20557
使用 Kubernetes 命令行工具显示 APM IP 地址
使用 kubectl get services Kubernetes 命令显示 APM Pod 编排所需的 Kubernetes 对象。例如:
$ kubectl get services -n jnpr-apm | egrep "TYPE|LoadBalancer" NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apm-apmi LoadBalancer 10.43.99.79 198.19.224.212 20557:32136/TCP 5d22h apm-ssh LoadBalancer 10.43.35.110 198.19.224.215 22:30261/TCP 146d
使用 APM 实用程序显示日志记录
使用 apm logs 实用程序脚本显示 APM 运行时发生的事件日志。您还可以使用 BBE 事件收集和可视化实用程序来显示自 APM 启动以来收集和存储的基于文件的日志。BBE 事件收集和可视化是一个基于云的集中式实用程序,它提供了一种捕获跨越 APM 微服务生命周期的 APM 日志的方法。设置 APM 时,您可以链接到 BBE 事件收集和可视化日志记录实用程序。请参阅 《宽带边缘事件收集和可视化安装指南》。
显示 APM 日志记录
BBE 事件收集和可视化是一个基于云的集中式实用程序,它提供了一种捕获跨越 APM 微服务生命周期的 APM 日志的方法。如果 BBE 事件收集和可视化正在运行,则在 APM 设置期间,您可以指向 BBE 事件收集和可视化来执行日志记录。BBE 事件收集和可视化通过一个基于 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
只能在瞻博网络支持代表的指导下将该 ––services 选项用于故障排除。
您可以按严重性增加的顺序指定以下任何严重性级别:
| 严重性级别 | 描述 |
|---|---|
debug |
通常仅在尝试诊断问题时才对其感兴趣的详细信息。这些日志通常非常频繁。 |
info |
关注的事件或非错误条件。此级别的日志可确认一切按预期工作。这些日志通常不是很频繁。 |
warning |
表示发生了意外情况或不久的将来可能会出现某些问题。后者的一个简单示例是 磁盘空间不足 警告,表示您可能很快就会用完磁盘空间。无论哪种情况,软件仍按预期工作,但您可能需要更密切地监控它。这些日志通常不是很频繁。 |
error |
表示更严重的问题导致软件无法执行某些功能,但软件已尽可能妥善处理问题以继续运行。 |
critical |
严重错误,指示程序本身可能无法继续运行。 |
您可以使用该 --logset 选项仅显示 APM 服务或仅预构建服务的日志。如果不使用此选项,则仅显示 APM 服务日志。
要仅显示 APM 服务的日志:
$ apm logs ––logset apm $ apm logs
要显示预构建服务的日志,请执行以下操作:
$ apm logs ––logset apm-infra
预构建服务是从其他来源借来的服务,为 APM 提供基础设施功能。这些来源包括 mgmt、redis 和 redis-sentinel。例如,redis 提供数据库和消息服务,管理提供配置和 CLI 服务等等。
使用 Kubernetes 命令行工具显示日志
要显示 APM 运行时发生的所有事件日志,请运行以下命令:
$ kubectl logs -n jnpr-apm -l jnpr/logset=jnpr-apm --tail=-1
要显示特定微服务的日志,请将标签选择器 (-l jnpr/logset=jnpr-apm) 替换为 pod 名称。例如:
$ kubectl logs -n jnpr-apm microservice-pod-name --tail=-1
要确定 Pod 名称,可以使用 kubectl get pods -n jnpr-apm Kubernetes 命令(请参见 使用 Kubernetes 命令行工具检查 APM 服务的状态)。
使用 APM 实用程序确定 APM 版本
使用 apm version [--context <context name>] [-o|--output json] [--detail| --compare <software-version>] 实用程序脚本确定已安装的 APM 版本的版本号。
要显示发行版本:
$ apm version --context context-name --detail Address_Pool_Manager versions: Microservice Release (version) apm: 3.5.0 addrman: 3.5.0 entman: 3.5.0 mgmt: 3.5.0 (24.4R2) provman: 3.5.0 redis: 3.5.0 (6.2.16-debian-12-r3)
要将指定的软件版本与指定上下文的当前部署版本进行比较:
apm version --compare 3.3.0 –-context context-name components: apm: 3.4.0 -> 3.5.0 addrman: 3.4.0 -> 3.5.0 entman: 3.4.0 -> 3.5.0 mgmt: 3.4.0 -> 3.5.0 provman: 3.4.0 -> 3.5.0 redis: 6.2.13 -> 6.2.16-debian-12-r3
使用该 -j 选项以 JavaScript Object Notation (JSON) 格式呈现版本信息。
使用 Kubernetes 命令行工具存档 APM 配置
要存档当前正在运行的 APM 配置的副本,请输入以下命令:
$ kubectl cp jnpr-apm/$( kubectl get pods -n jnpr-apm -l jnpr/cli=cli --no-headers=true | awk '{print $1}'):config/juniper.conf.gz ./juniper.conf.gz
使用 APM 实用程序卸载并删除 APM
使用 apm 实用程序脚本卸载 APM 配置。该 uninstall 命令将恢复您在设置 APM 时执行的操作。使用此命令可将 APM 恢复到安装应用程序后、执行任何设置配置之前的状态。
要卸载 APM:
$ sudo -E apm stop –-context context-name sudo -E apm unlink –-context context-name
卸载 APM 后,我们建议您使用 Debian 卸载过程删除整个软件包。
$ sudo sudo -E apm clean [-h] [--log {error | warn | info | debug}] [--no-color] [--docker] [--release release-number] [--dry-run] [--uninstall] [--cluster-repos] ]
有关 apm clean 命令选项,请参阅以下内容:
-
-h或--help—显示帮助消息并退出。 -
--log或-l{error | warn | info | debug} - 调整实用程序股票的日志级别。 -
--no-color—打印无颜色的邮件。 -
--docker- 清理本地 docker 缓存。 -
--release release-number- 要清理的释放 (默认为未使用的释放)。 -
--dry-run- 列出将要移除的发行版或容器。 -
--uninstall— 卸载所有软件版本并从系统中删除 APM。 -
--cluster-repos- 清理已删除的群集存储库。
卸载并删除 APM,而不使用 APM 实用程序
这是未使用 APM 实用程序创建的 APM 部署的卸载过程。使用命令 helm uninstall 卸载您的 APM 配置。要完全删除 APM,您必须为每个微服务运行命令 helm uninstall 。
要卸载 APM,请运行以下命令:
helm uninstall --kube-context context-name -n jnpr-apm provman
helm uninstall --kube-context context-name -n jnpr-apm entman
helm uninstall --kube-context context-name -n jnpr-apm addrman
helm uninstall --kube-context context-name -n jnpr-apm mgmt
helm uninstall --kube-context context-name -n jnpr-apm redis
如何使用 APM 实用程序访问 APM 配置和操作命令
使用 APM 实用程序访问 APM CLI
要访问 CLI 提示符,请输入以下 apm 实用程序脚本命令:
$ apm cli --context context-name [-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 基础知识的概述,请参阅 Day One:探索 Junos CLI。有关更多详细信息,请参阅 CLI 用户指南。
使用 APM 实用程序访问和使用 CLI 配置语句
使用 APM 实用程序访问和使用 CLI 操作命令
要监控 APM、查看 APM 配置和统计信息或手动运行某些操作:
如何在不使用 APM 实用程序的情况下使用 APM 命令行工具
本节介绍如何使用 Kubernetes 命令行工具命令执行管理功能。
您可以使用 Kubernetes 命令行工具来管理应用程序并访问用于配置地址管理功能的 CLI。
您可以使用 Kubernetes 命令行工具执行以下操作:
- 创建和删除对象。
- 提供日志访问权限。
- 使用 pod 容器进行交互式会话。
- 显示 APM 对象的状态。
在不使用 APM 实用程序的情况下访问 APM 命令行工具
要使用 Kubernetes 命令访问 APM 命令行工具,请输入以下内容:
$ kubectl exec -it -n jnpr-apm $(kubectl get pods -n jnpr-apm -l jnpr/cli=cli --no-headers=true | awk '{print $1}') -- cli
输入问号以查看可用的顶级 CLI 命令。
? 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