在google cloud platform上收录dokku 生成的日志

Google Cloud Platform (GCP) 上有类似于阿里云 SLS(Simple Log Service)的日志收集和分析服务。在 GCP 上,这个服务主要由 Cloud Logging 和 Cloud Monitoring 组成,它们共同提供了强大的日志管理和分析能力。
但是首先,要将dokku 容器里/app/log/ 映射到宿主机。

将dokku容器里的日志目录,挂载到宿主机

要将 Dokku 部署的应用程序容器内的特定目录映射到宿主机上的指定位置,可以使用 Dokku 的存储挂载功能。以下是具体步骤:

1. 在宿主机上创建目标目录:

首先,在宿主机上创建你想要映射到的目录。例如:

1
mkdir -p /var/log/dokku/your_app_name

2. 设置目录的权限

如果宿主机中的目录不可以,将导致目录失败。现在我们在容器中通过ps -A命令查到了启动用户是herokuishuser。现在先查询它的uid:

1
id herokuishuser

得到其uid是32767。
回到宿主机,设置目录的owner:

1
2
3
4
5
6
7
8
9
chown -R 32767:32767 /var/log/dokku/your_app_name
````

### 3. 使用 Dokku 的 storage:mount 命令:

使用以下命令将容器内的目录映射到宿主机上的目录:

```bash
dokku storage:mount your_app_name /var/log/dokku/your_app_name:/app/log

这里的格式是:dokku storage:mount <app_name> <host_dir>:<container_dir>

4. 重新部署应用:

执行存储挂载命令后,你需要重新部署应用以使更改生效:

1
dokku ps:rebuild your_app_name

5. 验证挂载:

你可以通过检查 Dokku 的存储配置来验证挂载是否成功:

1
dokku storage:list your_app_name

这应该会显示你刚刚创建的挂载。

6. 注意事项:

  • 确保宿主机上的目录具有适当的权限,以便容器可以读写。
  • 如果你的应用使用多个容器,这个挂载将应用于所有容器。
  • 请记住,这种方法会将容器内的数据持久化到宿主机上,这可能会影响应用的可移植性。

6. 移除挂载(如果需要):

如果你需要移除挂载,可以使用以下命令:

1
dokku storage:unmount your_app_name /var/log/dokku/your_app_name:/app/log

然后重新部署应用。

通过这些步骤,你应该能够将 Dokku 部署的应用程序容器内的 /app/log 目录映射到宿主机上的 /var/log/dokku/your_app_name 目录。这样,容器内的日志文件将被保存在宿主机上,方便查看和管理。

安装 google cloud logging agent 并收集日志

1. 安装 Google Cloud Logging 代理

首先,在运行 Dokku 的服务器上安装 Google Cloud Logging 代理(也称为 ops-agent)。这个代理程序可以收集系统和应用日志,并将它们发送到 Cloud Logging。

1
2
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

2. 配置 Google Cloud Logging 代理

编辑 ops-agent 配置文件,通常位于 /etc/google-cloud-ops-agent/config.yaml

1
2
3
4
5
6
7
8
9
10
logging:
receivers:
dokku_logs:
type: files
include_paths:
- /var/log/dokku/*.log
service:
pipelines:
dokku:
receivers: [dokku_logs]

这个配置告诉代理从 /var/log/dokku/ 目录下收集所有 .log 文件。

3. 重启 Google Cloud Logging 代理

配置更改后,重启代理以应用新设置:

1
sudo service google-cloud-ops-agent restart

4. 确保 Dokku 日志输出到正确位置

默认情况下,Dokku 应该已经将日志输出到 /var/log/dokku/ 目录。如果没有,您可能需要配置 Dokku 将日志写入这个目录。

5. 验证日志收集

在 Google Cloud Console 中,导航到 Logging > Logs Explorer,您应该能够看到来自 Dokku 的日志条目。

6. 创建日志筛选器和警报(可选)

  • 在 Logs Explorer 中,您可以创建自定义查询来筛选特定的 Dokku 日志。
  • 基于这些查询,您可以设置日志告警,当出现特定事件或错误时通知您。

7. 导出日志(可选)

如果需要长期存储或进行更深入的分析,可以设置日志导出到 Google Cloud Storage 或 BigQuery。

注意事项:

  • 确保您的 Google Cloud 项目已启用 Cloud Logging API。
  • 检查服务器的 IAM 权限,确保它有权限将日志写入 Cloud Logging。
  • 考虑设置日志保留策略以管理存储成本。
  • 对于敏感信息,请考虑在发送到 Cloud Logging 之前进行脱敏处理。

通过以上步骤,您应该能够将 Dokku 的日志成功集成到 Google Cloud Logging 中,从而实现集中化的日志管理和分析。


在google cloud platform上收录dokku 生成的日志
https://404.ms/2024/07/17/collect-logs-under-google-cloud-and-dokku/
作者
rocky.x
发布于
2024年7月17日
许可协议