CentOS7下利用docker搭建prometheus+grafana+consul监控环境

 

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

 查看结果 

1

 

备注:要想看到如上图Node Health都是绿色,还需docker成功运行google/cadvisor:v0.24.1

删除服务

$ curl --request PUT http://localhost:8500/v1/agent/service/deregister/cadvisor

步骤3

  1. 在本地新建一个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

  1. 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 可以简单明了的看到四个运行的容器。配置好后,我们可以随时关闭打开他们,使用方便。 

è¿éåå¾çæè¿°

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值