一、查看可安装的版本
docker search prom/prometheus
二、拉取镜像
docker pull prom/prometheus
三、查看镜像
docker images
四、书写配置文件-以及创建挂载目录
宿主机挂载目录位置:
以及准备对应的挂载目录:
/usr/local/docker/promethues/server
准备如下:
data、config、rules、ClientAll、server
授权相关文件夹权限
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
目标容器位置:
/etc/prometheus/prometheus.yml
使用代码编辑配置文件:
vim /usr/local/docker/prometheus/server/prometheus.yml
书写如下配置:
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
解释配置:
这个prometheus.yml
文件是Prometheus的配置文件。它定义了Prometheus如何收集和存储监控数据,以及如何使用这些数据进行规则评估和告警。
让我们逐行解读这个文件:
global: scrape_interval: 60s
: 这行设置了全局的抓取间隔(scrape interval)为60秒。这意味着Prometheus会每隔60秒从它所监控的目标(targets)中抓取数据。默认的抓取间隔是每分钟。evaluation_interval: 60s
: 这行设置了全局的规则评估间隔(evaluation interval)为60秒。这意味着Prometheus会每隔60秒评估(evaluate)它的规则(rules)。默认的评估间隔也是每分钟。scrape_configs:
: 这个字段表示包含抓取配置(scrape configurations)的列表。每个抓取配置定义了一个或多个要监控的目标以及如何从这些目标中抓取数据。- job_name: prometheus
: 这行开始一个新的抓取配置。这个配置的job_name
是prometheus
,表示它监控的是Prometheus服务器自身的数据。static_configs:
: 这个字段表示静态配置,它定义了要监控的目标和目标上的标签。- targets: ['172.17.0.1:8892']
: 这行定义了一个监控目标。在这个例子中,目标是一个运行在IP地址172.17.0.1
和端口8892
上的Prometheus服务器。labels: instance: prometheus
: 这行定义了一些标签(labels)。标签是附加在目标上的元数据,可以用于过滤和分组。在这个例子中,添加了一个instance
标签,其值为prometheus
。
总的来说,这个配置文件设置了Prometheus从自身(IP地址为172.17.0.1
,端口为8892
)收集数据,并且每60秒收集一次数据,每60秒评估一次规则。
目前配置只是监控了自己:
如果想让Prometheus监控其他的服务器,您需要修改targets
中的值。替换为要监控的服务的IP地址和端口号。
一个任务配置监控多个:
您可以配置多个监控目标,只需在同一个static_configs
下添加多个targets
即可。每个目标都需要使用相应的IP地址和端口号。例如:
scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['target1_ip:port', 'target2_ip:port']
在上述示例中,target1_ip:port
和target2_ip:port
是您要监控的服务的实际IP地址和端口号。您可以根据需要添加更多的目标。
请注意,如果需要监控的目标数量较多,可能需要使用不同的抓取配置方式,如使用动态配置(dynamic_configs)或配置文件自动加载(file_sd_configs)。这些方法可以从文件中读取目标配置,以便更方便地管理和维护大量的监控目标。
配置出多个任务对应监控(配置对应):
如果想要监控多个目标,需要在scrape_configs
中配置多个job_name
。
对于每个要监控的目标,需要创建一个新的job_name
,并在static_configs
下配置相应的targets
和labels
。
以下是一个示例配置文件,其中配置了两个监控目标:
global:scrape_interval: 60sevaluation_interval: 60sscrape_configs:- job_name: prometheus1static_configs:- targets: ['ip:9090']labels:instance: prometheus1- job_name: prometheus2static_configs:- targets: ['ip2:9090']labels:instance: prometheus2
在上述示例中,我们创建了两个不同的job_name
:prometheus1
和prometheus2
。对于每个job_name
,我们配置了相应的目标(targets
)和标签(labels
)。
可以根据需要添加更多的job_name
来监控更多的目标。只需按照相同的模式为每个目标创建一个新的job_name
并在static_configs
下配置相应的目标即可。
五、运行prometheus
使用下面的代码,进行运行prometheus,注意自定义的
# -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
使用ip+9090访问
访问成功!