cloudflare/complainerComplainer的作用是当Mesos集群中的任务失败时,向不同服务发送通知。尽管系统应能应对单个任务的故障,但了解任务何时失败及原因非常有用。
将所有失败发送到Sentry:
bashdocker run -it --rm cloudflare/complainer \ -masters=[***] \ -uploader=noop \ -reporters=sentry \ -sentry.dsn=[***]
在Mesos上运行此命令!
!Sentry截图
Complainer需要以下命令行标志进行配置:
name - Complainer实例名称(默认值为default)。default - 是否为每个报告器隐式使用default实例。masters - Mesos主节点URL列表(例如:[***])。listen - HTTP监听地址(例如:127.0.0.1:8888)。这些设置也可通过环境变量应用:
COMPLAINER_NAME - Complainer实例名称(默认值为default)。COMPLAINER_DEFAULT - 是否为每个报告器隐式使用default实例。COMPLAINER_MASTERS - Mesos主节点URL列表(例如:[***])。COMPLAINER_LISTEN - HTTP监听地址(例如:127.0.0.1:8888)。如果您有多个Marathon运行在Mesos上,并希望将不同故障隔离到不同目标,以下选项可能有用。每个选项可多次指定。
framework-whitelist - 正则表达式选项;如果指定,故障框架必须至少匹配一个白名单。如果未指定白名单,则视为传递.*,即所有故障在不匹配黑名单的情况下均被白名单允许。framework-blacklist - 正则表达式选项;如果指定,任何匹配的故障将被忽略。注意:评估顺序为先应用黑名单,再应用白名单。
Complainer提供HTTP接口,需通过-listen命令行标志或COMPLAINER_LISTEN环境变量启用。
该接口用于:
/health端点在运行基本正常时返回200 OK,当Complainer无法与Mesos通信时返回500 Internal Server Error。
我们不检查其他问题(上传器和报告器故障),因为它们不一定持续发生且可能自行恢复。
/version端点返回200 OK并输出应用当前版本:
complainer (default) v1.7.0
/debug/pprof端点公开常规net/http/pprof接口:
日志上传服务通过命令行标志uploader指定,也可通过环境变量COMPLAINER_UPLOADER指定。每个Complainer实例只能指定一个上传器。
上传器名称:noop
No-op上传器仅回显Mesos从节点沙箱URL。
上传器名称:s3aws。
此上传器使用官方AWS SDK,适用于AWS环境。
标准输出和标准错误日志将上传到S3,并向报告器提供签名URL。默认日志上传目录结构:
${YYYY-MM-DD}/complainer/${task_name}/${YYYY-MM-DDTHH:mm:ssZ}-${task_id}/{stdout,stderr}命令行标志:
s3aws.access_key - S3访问密钥。s3aws.secret_key - S3密钥。s3aws.region - S3区域。s3aws.bucket - S3存储桶名称。s3aws.prefix - S3前缀模板(可使用Failure结构体)。s3aws.timeout - S3签名URL超时时间(例如:72h)。任何命令行标志的值都可通过环境变量设置,例如:标志s3aws.access_key对应环境变量S3_ACCESS_KEY。
如果同时提供标志和环境变量,标志优先。
Complainer所需的最小AWS策略为s3:PutObject:
S3兼容API
上传器名称:s3goamz。
此上传器使用goamz包,支持使用v2风格签名的S3兼容API,包括Ceph Rados Gateway。
标准输出和标准错误日志将上传到S3,并向报告器提供签名URL。默认日志上传目录结构:
${YYYY-MM-DD}/complainer/${task_name}/${YYYY-MM-DDTHH:mm:ssZ}-${task_id}/{stdout,stderr}命令行标志:
s3goamz.access_key - S3访问密钥。s3goamz.secret_key - S3密钥。s3goamz.endpoint - S3端点(例如:[***])。s3goamz.bucket - S3存储桶名称。s3goamz.prefix - S3前缀模板(可使用Failure结构体)。s3goamz.timeout - S3签名URL超时时间(例如:72h)。任何命令行标志的值都可通过环境变量设置,例如:标志s3goamz.access_key对应环境变量S3_ACCESS_KEY。
如果同时提供标志和环境变量,标志优先。
报告服务通过命令行标志reporters指定,也可通过环境变量COMPLAINER_REPORTERS指定。可指定多个服务,用逗号分隔。
命令行标志:
sentry.dsn - 用于报告的默认Sentry DSN。标签:
dsn - 用于报告的Sentry DSN。如果未指定标签,则使用命令行标志值。
命令行标志:
hipchat.base_url - Hipchat基础URL,本地部署时需要。hipchat的.room - 默认用于发送通知的Hipchat房间ID。hipchat.token - 默认的Hipchat令牌。hipchat.format - 消息格式模板。标签:
hipchat.room - 房间ID。hipchat.token - 令牌。如果未指定标签,则使用命令行标志值。
模板使用text/template,可用字段:
failure - 故障信息。stdoutURL - 标准输出URL。stderrURL - 标准错误URL。标签:
stdoutURL - 标准输出URL。如果未指定标签,则使用命令行标志值。
COMPLAINER_UPLOADER=noop
COMPLAINER_REPORTERS=slack
COMPLAINER_UPLOADER=noop COMPLAINER_REPORTERS=slack
COMPLAINER_UPLOADER=slack
COMPLAINER_UPLOADER=noop COMPLAINER_REPORTERS=slack
(注:此处应根据实际内容调整,确保与原文一致)
对于每个服务,确保参数正确配置,例如,sentry.dsn是必须的,而其他参数根据实际情况调整。
假设我们要配置一个Sentry报告器,命令行参数可以是:
-uploader=noop -reporters=slack
而环境变量可以是:
COMPLAINER_UPLOADER=noop COMPLAINER_REPORTERS=slack
在配置时,需要确保每个服务的必填参数已设置,例如,sentry.dsn是必须的。
通过配置不同的报告服务,用户可以灵活地将故障信息发送到不同的平台,提高问题解决效率。
(注:上述部分可能需要根据原文内容进行调整,确保准确反映原文的结构和内容。)
MIT
(注:此处可能需要根据实际内容调整,确保准确反映原文的结构和内容。)
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务