实验 14:将 Envoy 的日志发送到 Google Cloud Logging

在这个实验中,我们将学习如何将 Envoy 应用日志发送到 Google Cloud Logging。我们将在 GCP 中运行的虚拟机(VM)实例上运行 Envoy,配置 Envoy 实例,将应用日志发送到 GCP 中的云日志。配置 Envoy 实例将允许我们在日志资源管理器中查看 Envoy 的日志,获得日志分析,并使用其他谷歌云功能。

为了使用谷歌云的日志收集、分析和其他工具,我们需要安装云日志代理(Ops Agent)。

在这个演示中,我们将在一个单独的虚拟机上安装 Ops 代理。另外,请注意,其他云供应商可能使用不同的日志工具和服务。

安装 Ops 代理

在 Google Cloud,在你的地区创建一个新的虚拟机实例。一旦创建了虚拟机,我们就可以通过 SSH 进入该实例并安装 Ops 代理。

在虚拟机实例中,运行以下命令来安装 Ops 代理。

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

安装 Ops 代理的另一个选择是按照以下步骤进行。

  1. 从 GCP 的导航页面,选择监测
  2. 在 \"监控 \" 导航页面,选择 \" 仪表盘 \"
  3. 在仪表板表中,找到并点击虚拟机实例
  4. 选择一个没有安装代理的实例旁边的复选框(例如,代理栏显示未检测到)。
  5. 点击安装代理按钮,在打开的窗口中,点击在在 Cloud Shell 中运行按钮,开始安装。

安装代理的命令将在 Cloud Shell 中打开。你需要做的最后一件事是按回车键开始安装。

下面是成功安装的命令和输出在 Cloud Shell 中的样子。

$ :> agents_to_install.csv && \echo '"projects/envoy-project/zones/us-west1-a/instances/envoy-instance","[{""type"":""ops-agent""}]"' >> agents_to_install.csv && \curl -sSO https://dl.google.com/cloudagents/mass-provision-google-cloud-ops-agents.py && \
→ python3 mass-provision-google-cloud-ops-agents.py --file agents_to_install.csv
2021-11-03T19:04:31.577710Z Processing instance: projects/peterjs-project/zones/us-west1-a/instances/some-instance.
---------------------Getting output-------------------------
Progress: |==================================================| 100.0% [1/1] (100.0%) completed; [1/1] (100.0%) succeeded; [0/1] (0.0%) failed;
Instance: projects/envoy-project/zones/us-west1-a/instances/envoy-instance successfully runs ops-agent. See log file in: ./google_cloud_ops_agent_provisioning/20211103-190431_576419/envoy-project_us-west1-a_envoy-instance.log

SUCCEEDED: [1/1] (100.0%)
FAILED: [0/1] (0.0%)
COMPLETED: [1/1] (100.0%)

See script log file: ./google_cloud_ops_agent_provisioning/20211103-190431_576419/wrapper_script.log

随着安装的进展,虚拟机实例仪表板中的代理列将显示待定。一旦代理安装完成,该值将变为 Ops Agent,这表明 Ops Agent 已成功安装。

现在我们可以通过 SSH 进入虚拟机实例,安装 func-e(用于运行 Envoy),创建一个基本的 Envoy 配置,并运行它,这样 Envoy 的应用日志就会被发送到 GCP 的云端日志。

安装 func-e

要在虚拟机上安装 func-e,请运行:

curl https://func-e.io/install.sh | sudo bash -s -- -b /usr/local/bin

我们可以运行 func-e --version 来检查安装是否成功。

发送 Envoy 应用日志到云端日志

让我们创建一个我们将在本实验中使用的原始 Envoy 配置。

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          http_filters:
          - name: envoy.filters.http.router
          route_config:
            name: my_first_route
            virtual_hosts:
            - name: direct_response_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                direct_response:
                  status: 200
                  body:
                    inline_string: "200"

将上述 YAML 保存为 6-lab-3-gcp-logging.yaml

让我们来配置 Ops Agent,为 Envoy 创建一个新的接收器,描述如何检索日志。

logging:
  receivers:
    envoy:
      type: files
      include_paths:
        - /var/log/envoy.log
  service:
    pipelines:
      default_pipeline:
        receivers: [envoy]

将上述内容保存到虚拟机实例上的 /etc/google-cloud-ops-agent/config.yaml 文件中。要重新启动 Ops Agent,请运行 sudo service google-cloud-ops-agent restart

在 Ops Agent 使用新配置的情况下,我们可以运行 Envoy,并告诉它把日志写到 /var/log/envoy.log 文件中,代理会在那里接收。

sudo func-e run -c 6-lab-3-gcp-logging.yaml --log-path /var/log/envoy.log

接下来,我们可以点击日志,然后点击 GCP 中的日志资源管理器,查看虚拟机上运行的 Envoy 实例的日志。

GCP的日志资源管理器中的 Envoy 日志
图 6.8.1:GCP的日志资源管理器中的 Envoy 日志

results matching ""

    No results matching ""