https://blog.csdn.net/zhaizhai6_6/article/details/82146032
步骤:
安装docker
docker运行consul
docker运行prometheus
docker运行grafana
前提条件:
CentOS7操作系统
最新版本的yum
步骤1
检查内核版本$ uname -r,运行docker需要内核版本在3.10以上。
安装docker
$ sudo yum install -y docker
检查是否安装成功,安装成功如下
$ docker version
Client:
Version: 1.13.1
API version: 1.26
Package version:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
启动docker
$ sudo systemctl start docker.service
设置开机时自动启动docker
$ sudo systemctl enable docker
步骤2
docker后台运行consul,并将容器端口映射到主机8500端口。docker会自动拉取consul的镜像并运行。
$ sudo docker run --name consul -d -p 8500:8500 consul
Unable to find image 'consul:latest' locally
Trying to pull repository docker.io/consul ...
检查容器是否运行成功,看到如下信息,表示consul后台运行成功。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37ee3147c1f6 consul "docker-entrypoint..." 9 seconds ago Up 8 seconds 8300-8302/tcp, 8301-8302/udp, 8600/tcp, 8600/udp, 0.0.0.0:8500->8500/tcp consul
打开网页 http://localhost:8500 可以看到如下界面
编辑服务脚本
$ vim cadvisor.json
{
"ID": "cadvisor",
"Name": "prometheus-cadvisor",
"Tags": [
"primary",
"v1"
],
"Address": "localhost",
"port": 8080,
"Check":
{
"HTTP": "http://localhost:8080/metrics",
"Interval": "15s"
}
}
注册服务(在cadvisor.json文件夹下执行)
$ curl --request PUT --data @cadvisor.json http://localhost:8500/v1/agent/service/register
查看结果
备注:要想看到如上图Node Health都是绿色,还需docker成功运行google/cadvisor:v0.24.1
删除服务
$ curl --request PUT http://localhost:8500/v1/agent/service/deregister/cadvisor
步骤3
-
在本地新建一个prometheus.yml文件,我是在root文件夹下建的。
$ vim prometheus.yml
文件内容如下:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
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: 'consul-prometheus'
consul_sd_configs:
- server: 'localhost:8500'
services: []
relabel_configs:
- source_labels: ['__meta_consul_service']
regex: .*prometheus.*
action: keep
备注:其中 - job_name: 'consul-prometheus' 下的内容是consul的prometheus配置。意思是在consul中注册的服务,如果名字中含有 prometheus 的可以被prometheus自动监控。source_labels regex 可以根据自己的需求进行调整。
docker 运行 prometheus
sudo docker run --name prometheus -d -p 9090:9090 --privileged=true -v /root/prometheus.yml:/etc/prometheus.yml prom/prometheus
检查运行结果,可以看到又多了一行prometheus的信息。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37ee3147c1f6 consul "docker-entrypoint..." 32 minutes a Up 32 minutes 8300-8302/tcp, 8301-8302/udp, 8600/tcp, 8600/udp, 0..0:8500->8500/tcp consul
355090ded434 prom/prometheus "/bin/prometheus -..." 2 days ago Up 11 seconds 0.0.0.0:9090->9090/tcp prometheus
打开网页 http://localhost:9090/targets 可以看到prometheus和consul-prometheus,说明我们的prometheus+consul服务发现已经配置成功了。
步骤4
-
docker运行grafana
$ sudo docker run --name grafana -d -p 3000:3000 grafana/grafana
运行成功后可以打开网页 http://localhost:3000 ,初始登陆账号密码都是admin
配置数据源
配置dashboard,从https://grafana.com/dashboards下载相应的模板import即可,我下载的是 Docker and Host Monitoring w/ Prometheus 这个模板。最终展示结果如下。
总结
通过实践可以发现,docker运行prometheus,consul,grafana非常简单。执行$ docker ps
可以简单明了的看到四个运行的容器。配置好后,我们可以随时关闭打开他们,使用方便。