Clique na fonte azul acima e selecione "Conta oficial da estrela"
Artigos de alta qualidade, entregues imediatamente
Siga a conta oficial nos bastidores para responder a pagar ou shopping para obter informações reais do projeto + vídeo
Autor: eu fumo
cnblogs.com/2YSP/p/12827487.html
1. Fundo
SpringBoot tem muitas soluções de monitoramento de aplicativos, e SpringBoot + Prometheus + Grafana é atualmente uma das soluções mais comumente usadas. A relação entre os três é a seguinte:
Dois, desenvolva o aplicativo SpringBoot
Primeiro, crie um projeto SpringBoot, o arquivo pom é o seguinte:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/io.prometheus/simpleclient_spring_boot -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_spring_boot</artifactId>
<version>0.8.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Nota: A versão SpringBoot aqui é 1.5.7.RELEASE. A razão pela qual o 2.X mais recente não é usado é porque o simpleclient_spring_boot mais recente suporta apenas 1.5.X, não tenho certeza se a versão 2.X pode ser compatível.
Adicionadas anotações à classe de inicialização MonitorDemoApplication
package cn.sp;
import io.prometheus.client.spring.boot.EnablePrometheusEndpoint;
import io.prometheus.client.spring.boot.EnableSpringBootMetricsCollector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnablePrometheusEndpoint
@EnableSpringBootMetricsCollector
@SpringBootApplication
public class MonitorDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MonitorDemoApplication.class, args);
}
}
Arquivo de configuração application.yml
server:
port: 8848
spring:
application:
name: monitor-demo
security:
user:
name: admin
password: 1234
basic:
enabled: true
# 安全路径列表,逗号分隔,此处只针对/admin路径进行认证
path: /admin
# actuator暴露接口的前缀
management:
context-path: /admin
# actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
port: 8888
security:
enabled: true
roles: SUPERUSER
Código de teste TestController
@RequestMapping("/heap/test")
@RestController
public class TestController {
public static final Map<String, Object> map = new ConcurrentHashMap<>();
@RequestMapping("")
public String testHeapUsed() {
for (int i = 0; i < 10000000; i++) {
map.put(i + "", new Object());
}
return "ok";
}
}
A lógica aqui é criar um grande número de objetos e salvá-los no mapa para aumentar o uso da memória heap após solicitar essa interface, o que é conveniente para testar alarmes de e-mail posteriormente.
Depois de iniciar o projeto, você pode ver muitos Endpoints no IDEA, conforme mostrado na figura:
No início, meu IDEA não exibia este Endpoints, mas depois descobri que a versão da ideia que eu estava usando era muito antiga, ou 2017.1,
e isso requer idea2017.2 ou superior para ser capaz de vê-la.
Mais tarde, tive que fazer o download e instalá-lo novamente, o que demorou muito. . . .
Após a inicialização, visite http: // localhost: 8888 / admin / prometheus para ver os indicadores de monitoramento expostos pelo serviço. Nota:
Como a autenticação de segurança está ativada, você precisa solicitar a inserção da conta / senha para acessar este URL. Se ele solicitar 404, verifique se o endereço solicitado está correto. Se você não definir o caminho de gerenciamento.contexto, o padrão o endereço é http: // ip: port / prometheus
Três, instale o Prometheus
Link para Download
https://prometheus.io/download/
Este artigo baixa a versão Windows de prometheus-2.17.2.windows-amd64.tar.gz.
Após a descompactação, modifique o arquivo prometheus.yml para configurar as informações de destino para a coleta de dados.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
# - job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
# static_configs:
# - targets: ['localhost:9090']
- job_name: 'monitor-demo'
scrape_interval: 5s # 刮取的时间间隔
scrape_timeout: 5s
metrics_path: /admin/prometheus
scheme: http
basic_auth: #认证信息
username: admin
password: 1234
static_configs:
- targets:
- 127.0.0.1:8888 #此处填写 Spring Boot 应用的 IP + 端口号
Para obter mais informações de configuração, verifique a documentação oficial.
Agora você pode iniciar o Prometheus. Digite a linha de comando: prometheus.exe --config.file = prometheus.yml para
visitar http: // localhost: 9090 / targets para verificar se o status da coleção Spring Boot está normal.
Quarto, instale o Grafana
Link para Download
https://grafana.com/grafana/download
Este artigo usa a versão do Windows grafana-6.3.3.windows-amd64.zip.
Após a descompactação, execute grafana-server.exe no diretório bin para iniciar e o navegador pode acessar http: // localhost: 3000 para ver a página de login.A senha padrão da conta é admin / admin.
Agora comece a criar seu próprio painel de monitoramento visual.
1. Configure a fonte de dados
2. Crie um painel
3. Preencha os pontos de índice coletados
Nota: Os pontos indicadores aqui não podem ser preenchidos casualmente, eles devem existir e podem ser vistos no Prometheus. 4. Selecione o estilo do gráfico
5. Preencha a descrição do título
Por fim, clique em Salvar no canto superior direito e digite o nome do Dashboad.
Dicas: O layout do gráfico aqui pode ser arrastado com o mouse
Cinco, adicionar alarme de e-mail
Em um projeto real, quando um indicador monitorado excede um limite (por exemplo, o uso da CPU é muito alto), espera-se que o sistema de monitoramento alerte automaticamente o pessoal de operação e manutenção por SMS, DingTalk e e-mail. Grafana oferece suporte a esta função .
Etapa 1: Clique em [Alerta] ——> [Canais de notificação] para adicionar canais de notificação
Existem muitas opções de Tipo aqui, incluindo webhook, Dingding, etc. Aqui, tomamos o e-mail como exemplo.
Etapa 2: configuração de e-mail
O Grafana é executado por padrão usando defaults.ini no diretório conf como arquivo de configuração.De acordo com as recomendações oficiais, não devemos alterar defaults.ini, mas criar um novo arquivo de configuração custom.ini no mesmo diretório.
Pegue a caixa de correio corporativa da Tencent como exemplo, a configuração é a seguinte:
#################################### SMTP / Emailing #####################
[smtp]
enabled = true
host = smtp.exmail.qq.com:465
user = [email protected]
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = XXX
cert_file =
key_file =
skip_verify = true
from_address = [email protected]
from_name = Grafana
ehlo_identity = ininin.com
Depois disso, exija pesado 启 Grafana, instrução grafana-server.exe -config = E: \ file \ grafana-6.3.3 \ conf \ custom.ini
Etapa 3: adicionar alerta ao indicador
Avalie cada
Indica a taxa de detecção, aqui para testar o efeito, mude para 1 segundo
Para
Se a regra de alerta for configurada com For e a consulta violar o limite configurado, ela mudará primeiro de OK para Pendente. Nenhuma notificação será enviada de OK para Grafana Pendente. Assim que o tempo de disparo da regra de alerta exceder a duração, ele mudará para Alerta e enviará uma notificação de alerta.
Condições
Quando representa o tempo, de representa a condição, está acima representa o valor de disparo
ao mesmo tempo, haverá uma linha vermelha após a configuração estar acima.
Se nenhum dado ou todos os valores forem nulos
Se não houver dados ou todos os valores estiverem vazios, selecione disparar alarme aqui
Se erro de execução ou tempo limite
Se a execução estiver errada ou com hora extra, opte por acionar o alarme aqui
Observação: na próxima vez que for disparado, por exemplo, 10 segundos depois, não disparará novamente para evitar a ocorrência de tempestades de alarme!
Etapa 4: após a
solicitação de teste http: // localhost: 8848 / heap / interface de teste, a memória sobe acima do limite definido e, em seguida, um e-mail de alarme é recebido.
A foto aqui não aparece, não entendo por quê.
Seis, resumo
Este conjunto de funções de monitoramento é bastante poderoso, mas o Prometheus tem muitas expressões.
Anexe alguns links:
https://prometheus.io/docs/introduction/first_steps/
https://grafana.com/docs/grafana/latest/
https://github.com/2YSP/monitor-demo
}
有热门推荐????
10个解放双手实用在线工具,有些代码真的不用手写!微信小程序练手实战:前端+后端(Java)
又一神操作,SpringBoot2.x 集成百度 uidgenerator搞定全局ID为什么阿里不允许用Executors创建线程池,而是通过ThreadPoolExecutor的方式?
为什么要在2021年放弃Jenkins?我已经对他失去耐心了...
Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器
点击阅读原文,前往学习SpringCloud实战项目