jenkins - 如何查看日志是来自 Java 应用程序的 Stackdriver 在 Jenkins Kubernetes 容器上运行?
问题描述
我创建了一个 Jenkins 管道,并在 GKE 上运行它(使用 Kubernetes 插件)。在其中一个步骤中,我在其中一个容器中运行 java 应用程序。应用程序正在将日志写入标准输出。我想在 Stackdriver 中查看此应用程序的日志。我怎样才能实现它?目前我无法在 Stackdriver 和 Jenkins 日志中看到这些日志。
我的管道:
podTemplate(cloud: 'kubernetes',
yaml: """
apiVersion: v1
kind: Pod
spec:
securityContext:
runAsUser: 0
containers:
- name: maven
image: maven:3.6.3-jdk-11
resources:
requests:
cpu: "1"
memory: "1Gi"
ephemeral-storage: "20Mi"
limits:
cpu: "2"
memory: "4Gi"
ephemeral-storage: "1Gi"
command:
- cat
tty: true
"""
) {
node(POD_LABEL) {
stage('Run app') {
container('maven') {
sh "java -jar my-app.jar &"
}
}
}
}
=== 编辑 ===
我的主 Jenkins 安装在其中一个 GKE pod 上,每个 PR 验证都会触发另一个 pod,该 pod 具有带有 Java 应用程序的上述容器。看起来 jenkins 从代理正在收集日志(但由于 Java 应用程序在后台运行,因此没有将它们附加到构建日志中)。
解决方案
如果您已经在 GCP 实例上运行 Jenkins,那将非常简单,直接将日志获取到 Stackdriver。
https://faun.pub/jenkins-on-google-compute-engine-611bd86e295b
您还可以将代理与 java 集成
参考:https ://medium.com/google-cloud/java-logging-on-cloud-run-with-stackdriver-9786d6fdbe17
您还应该使用Bluemedora结帐
推荐阅读
- elasticsearch - 即使有 0 个未分配的分片,Elasticsearch 集群状态仍为黄色
- foreign-keys - 从查找字段中获取用户友好的值
- javascript - 使用 Javascript 验证表单输入
- javascript - 如何在 TypeScript 中导入 JavaScript 模块并转换为 TypeScript 命名空间
- ruby-on-rails-5 - 如何在部署中更新 Rails 5.2 凭据和主密钥
- python - 使用 Python setup.py 通过 develop 与 install 安装不同的依赖项
- sql - 添加两个查询一起使用
- python - 使用 Python 提取准确的价格数据,如在 Excel 表中看到的那样,而不用四舍五入 Python 端的值
- multithreading - Async/Await 仍然阻塞 UI?
- c - 为什么我会收到“free(): invalid pointer”的错误?