1. Veja a versão instalável
docker search prom/prometheus
2. Puxe a imagem
docker pull prom/prometheus
3. Veja a imagem espelhada
docker images
Quarto, escreva o arquivo de configuração - e crie um diretório de montagem
Localização do diretório de montagem do host:
E prepare o diretório de montagem correspondente:
/usr/local/docker/promethues/servidor
Prepare da seguinte forma:
dados、config、regras、ClientAll、servidor
Autorizar permissões de pastas relacionadas
chmod -R 777 /usr/local/docker/prometheus/data
chmod -R 777 /usr/local/docker/prometheus/config
chmod -R 777 /usr/local/docker/prometheus/rules
chmod -R 777 /usr/local/docker/prometheus/ClientAll
chmod -R 777 /usr/local/docker/prometheus/server
Local de destino do contêiner:
/etc/prometheus/prometheus.yml
Edite o arquivo de configuração com o código:
vim /usr/local/docker/prometheus/server/prometheus.yml
Escreva a seguinte configuração:
global:
scrape_interval: 15s # 设置抓取间隔为每15秒。
evaluation_interval: 15s # 每隔15秒评估规则。
rule_files:
- /prometheus/rules/*.yml # 这里匹配指定目录下所有的.rules文件
scrape_configs:
- job_name: "阿丹服务器" #使用配置来发现服务
static_configs:
- targets: ['ip:9090']
labels:
instance: prometheus
- job_name: "服务发现"
file_sd_configs:
- files:
- /prometheus/ClientAll/*.json # 用json格式文件方式发现服务,下面的是用yaml格式文件方式,都可以
refresh_interval: 10m
- files:
- /prometheus/ClientAll/*.yaml # 用yaml格式文件方式发现服务
refresh_interval: 10m
Explique a configuração:
Este prometheus.yml
arquivo é o arquivo de configuração do Prometheus. Ele define como o Prometheus coleta e armazena dados de monitoramento e como usar esses dados para avaliação de regras e alertas.
Vamos ler este arquivo linha por linha:
global: scrape_interval: 60s
: Esta linha define o intervalo de raspagem global para 60 segundos. Isso significa que o Prometheus buscará dados dos alvos que ele monitora a cada 60 segundos. O intervalo de busca padrão é a cada minuto.evaluation_interval: 60s
: Esta linha define o intervalo de avaliação da regra global (intervalo de avaliação) para 60 segundos. Isso significa que o Prometheus avaliará (avaliará) suas regras (regras) a cada 60 segundos. O intervalo de avaliação padrão também é a cada minuto.scrape_configs:
: Este campo representa uma lista contendo configurações de raspagem. Cada configuração de raspagem define um ou mais destinos a serem monitorados e como extrair dados desses destinos.- job_name: prometheus
: esta linha inicia uma nova configuração de rastreamento. Essa configuraçãojob_name
significaprometheus
que ele monitora os dados do próprio servidor Prometheus.static_configs:
: Este campo representa uma configuração estática, que define o destino a ser monitorado e os rótulos no destino.- targets: ['172.17.0.1:8892']
: Esta linha define um alvo de monitoramento. Neste exemplo, o destino é um servidor Prometheus em execução em um endereço IP172.17.0.1
e porta .8892
labels: instance: prometheus
: Esta linha define alguns rótulos. Tags são metadados anexados a objetos e podem ser usados para filtragem e agrupamento. Neste exemplo, umainstance
tag é adicionada com um valor deprometheus
.
No geral, esse arquivo de configuração configura o Prometheus para coletar dados de si mesmo (endereço IP 172.17.0.1
, porta 8892
) e coletar dados a cada 60 segundos e avaliar regras a cada 60 segundos.
A configuração atual apenas monitora a si mesma:
Se você deseja que o Prometheus monitore outros servidores, é necessário modificar targets
o valor em . Substitua pelo endereço IP e número da porta do serviço a ser monitorado.
Uma configuração de tarefa monitora vários:
Você pode configurar vários destinos de monitoramento, basta static_configs
adicionar vários sob o mesmo targets
. Cada destino precisa usar o endereço IP correspondente e o número da porta. Por exemplo:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['target1_ip:port', 'target2_ip:port']
No exemplo acima, target1_ip:port
e target2_ip:port
são o endereço IP real e o número da porta do serviço que você deseja monitorar. Você pode adicionar mais alvos conforme necessário.
Observe que, se você precisar monitorar um grande número de alvos, pode ser necessário usar diferentes métodos de configuração de captura, como usar configuração dinâmica (dynamic_configs) ou carregamento automático de arquivos de configuração (file_sd_configs). Esses métodos podem ler a configuração de destino de um arquivo para facilitar o gerenciamento e a manutenção de um grande número de destinos de monitoramento.
Configure o monitoramento correspondente a várias tarefas (configuração correspondente):
Se você deseja monitorar vários destinos, precisa scrape_configs
configurar vários em job_name
.
Para cada alvo a ser monitorado, um novo precisa ser criado ejob_name
configurado adequadamente emstatic_configs
targets
labels
Veja a seguir um exemplo de arquivo de configuração com dois alvos de monitoramento configurados:
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus1
static_configs:
- targets: ['ip:9090']
labels:
instance: prometheus1
- job_name: prometheus2
static_configs:
- targets: ['ip2:9090']
labels:
instance: prometheus2
No exemplo acima, criamos dois diferentes job_name
: prometheus1
e prometheus2
. Para cada job_name
, configuramos o target ( targets
) e o label ( labels
) correspondentes.
Mais podem ser adicionados job_name
para monitorar mais alvos conforme necessário. Basta seguir o mesmo padrão para cada destino para criar um novo job_name
e configurar o destino correspondente static_configs
em .
Cinco, execute prometheus
Use o código a seguir para executar o prometheus, preste atenção ao custom
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
docker run -itd --name prometheus -p 9090:9090 \
-v /usr/local/docker/prometheus/server/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/docker/prometheus/data:/prometheus/data \
-v /usr/local/docker/prometheus/config:/prometheus/config \
-v /usr/local/docker/prometheus/rules:/prometheus/rules \
-v /usr/local/docker/prometheus/ClientAll:/prometheus/ClientAll \
prom/prometheus --web.enable-lifecycle
Use ip+9090 para acessar
Visita bem sucedida!