Escalonamento automático do GCE com base em métricas personalizadas fornecidas pelas instâncias em execução?

Escalonamento automático do GCE com base em métricas personalizadas fornecidas pelas instâncias em execução?

Tenho um grupo de instâncias gerenciadas com escalonamento automático.

Cada instância executa um programa que pesquisa um site remoto perguntando "você tem algum trabalho para mim?" Se a resposta for “não”, ele adormece por alguns segundos e repete. Consideramos isso umparadoinstância. Caso contrário, recebe instruções sobre o que fazer, marca-seocupado, faz o que tem que fazer (pode levar de alguns minutos a algumas horas), retorna os resultados e volta a serparado.

Quero que o escalonador automático garanta que sempre haja pelo menos umparadopor exemplo, para que possa selecionar qualquer trabalho disponível. Não pode ser baseado em CPU, pois os trabalhos podem gastar uma quantidade significativa de tempo sem usar muita CPU ou podem não ter paralelismo suficiente para usar todos os núcleos e assim por diante.

Se fosse possível para o escalonador automático extrair um servidor de métricas arbitrárias para uma métrica específica, a vida seria simples: cada instância já está executando um exportador de nó do Prometheus, para que possa exportar uma métrica comoestá ocupado, definido como 0 ou 1, que o Prometheus pode agregar, adicionar 1 à soma e exportar como a métrica que o escalonador automático pode usar. Mas isso não é possível.

A documentação do Google sobre como usar métricas do Prometheus para o autoescalador, embora esteja vinculada à página GCE MIG, apenas fala sobre como fazer isso paraKubernetesescalonamento automático, que, obviamente, não é o que estou usando aqui.

Já pensei em fazer com que as instâncias criassem uma métrica de stackdriver personalizada, que elas atualizam, mas se a instância morrer antes de atualizar sua métrica para 0, ela nunca será redefinida, então o escalonador automático não saberá disso.

Isso não pode ser muito difícil ou muito incomum (ou isso, ou não consigo pensar nos termos certos para pesquisar :(). Alguma sugestão?

informação relacionada