如何配置GCP以在发生节点事件(创建/关闭)时向我发送警报? 我想收到提醒我有关集群扩展的电子邮件。
tks
答案 0 :(得分:2)
首先,请注意,您可以使用以下过滤器在Stackdriver Logging中检索此类事件:
logName="projects/[PROJECT_NAME]/logs/cloudaudit.googleapis.com%2Factivity" AND
(
protoPayload.methodName="io.k8s.core.v1.nodes.create" OR
protoPayload.methodName="io.k8s.core.v1.nodes.delete"
)
此过滤器将仅检索项目cloudaudit.googleapis.com%2Factivity
中与节点创建事件([PROJECT_NAME]
)或删除(io.k8s.core.v1.nodes.create
相对应的审核活动日志条目(io.k8s.core.v1.nodes.delete
)
要生成此类日志时要发出警报,有多种可能性。
您可以基于此过滤器为发布/订阅主题配置sink,然后在创建过滤的日志条目时配置trigger a Cloud Function。该云功能将定义向您发送邮件的逻辑。这可能是我会选择的解决方案,因为这个用例is described in the documentation。
否则,您可以基于此过滤器(或一个用于创建的基于日志的度量,另一个用于删除的度量)来定义logs-based metric,并在增加此基于日志的度量时配置alert in Stackdriver Monitoring。可以将该警报配置为发送电子邮件。但是,我不建议您实施此操作,因为这不是真正的“警告”(就“出了点问题”而言),而是信息。您可能不希望每次创建或删除节点时都在Stackdriver Monitoring中打开事件。但是您可以保留一个/多个基于日志的指标的想法,并使用自定义应用程序对其进行处理。
答案 1 :(得分:0)
以一种比使用GCP接收器更快的方式,您还可以考虑使用内部Kubernetes节点观察器。
该示例使用Notify17直接向您的浏览器或手机生成通知。
相关代码为:
// Sets up the nodes watcher
watcher, err := api.Nodes().Watch(listOptions)
// ...
ch := watcher.ResultChan()
for event := range ch {
node, ok := event.Object.(*v1.Node)
// ...
switch event.Type {
case watch.Added:
// ...
// Triggers a Notify17 notification for the ADDED event
notify17(httpClient,
"Node added", fmt.Sprintf("Node %s has been added", node.Name))
case watch.Deleted:
// ...
// Triggers a Notify17 notification for the DELETED event
notify17(httpClient,
"Node deleted", fmt.Sprintf("Node %s has been deleted", node.Name))
}
// ...
您可以按照README中提供的说明来测试这种方法。
注意:此方法的缺点是,如果吊舱所在的节点被不安全地删除/杀死,则可能会为该节点触发事件。如果像从集群自动伸缩器的情况那样,将该节点适当地删除,则可能会在删除旧节点之前在新节点上重新创建Pod,从而触发通知。