docker部署prometheus并监控主机和容器

运行容器

启动node-exporter容器

docker run -d --net="host" -v "/:/host:ro,rslave" hub.c.163.com/qingzhou/prometheus/node-exporter:v0.17.0 --path.rootfs=/host

说明:该容器和宿主机共享网络栈。验证是否和宿主机在一个网络栈。

宿主机网络栈
[root@ceph01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:d3:e0:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.114/24 brd 192.168.229.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d927:ef4:3fcd:a1d4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@ceph01 ~]# docker ps
CONTAINER ID   IMAGE                                                              COMMAND                  CREATED      STATUS         PORTS                    NAMES
5e63dbef9a57   hub.c.163.com/qingzhou/grafana:6.7.1-with-simpod-json-datasource   "/run.sh"                2 days ago   Up 2 days      0.0.0.0:3001->3000/tcp   grafana
0f5f0a366566   hub.c.163.com/qingzhou/cadvisor:v0.30.2                            "/usr/bin/cadvisor -…"   2 days ago   Up 2 days      0.0.0.0:8081->8080/tcp   cadvisor
2d1f82717dc7   hub.c.163.com/qingzhou/prometheus:v2.9.2                           "/bin/prometheus --c…"   2 days ago   Up 8 minutes   0.0.0.0:9091->9090/tcp   prometheus
9b185bc37a6b   hub.c.163.com/qingzhou/prometheus/node-exporter:v0.17.0            "/bin/node_exporter …"   2 days ago   Up 2 days                               elegant_pasteur

node-exporter网络栈
[root@ceph01 ~]# docker exec -it elegant_pasteur sh
/ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:d3:e0:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.114/24 brd 192.168.229.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d927:ef4:3fcd:a1d4/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
    link/ether 02:42:69:e3:5a:22 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:69ff:fee3:5a22/64 scope link 
       valid_lft forever preferred_lft forever

启动cadvisor容器

docker run -itd --volume=/:/rootfs:ro\
--volume=/var/run:/var/run:rw\
--volume=/sys:/sys:ro\
--volume=/var/lib/docker/:/var/lib/docker:ro\
--volume=/dev/disk/:/dev/disk:ro\
--publish=8080:8080\
--detach=true\
--name=cadvisor hub.c.163.com/qingzhou/cadvisor:v0.30.2

启动prometheus容器

docker run -d -p 9090:9090 -v /etc/prometheus/ --name prometheus hub.c.163.com/qingzhou/prometheus:v2.9.2

验证是否获取监控项目

curl 192.168.229.114:9091/metrics
curl 192.168.229.114:8081/metrics
curl 192.168.229.114:9100/metrics

配置prometheus

查看prometheus在宿主机的工作目录

docker inspect prometheus|grep -i source
                "Source": "/var/lib/docker/volumes/306ce921c7c9abe564624c2d0584948e3964640f13d70133cd70a265a02e269e/_data",
                "Source": "/var/lib/docker/volumes/83f3a9f464aaba86c3034bc522e5cb54b8516129461959e935e57c33cd20f968/_data",

进入工作目录

cd /var/lib/docker/volumes/306ce921c7c9abe564624c2d0584948e3964640f13d70133cd70a265a02e269e/_data

修改配置文件,增加3个job

cat 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: ['192.168.229.114:9090']
  
  - job_name: 'host'
    static_configs:
    - targets: ['192.168.229.114:9100']
  - job_name: 'containers'
    static_configs:
    - targets: ['192.168.229.114:8081']

配置grafana

登录grafana

浏览器输入宿主机ip:9091
默认用户名admin密码admin
在这里插入图片描述

添加数据源

在这里插入图片描述

在这里插入图片描述

查看添加的dashboard

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建新的dashboard

根据metrics添加dashboard

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

根据dashboard id添加dashboard

在这里插入图片描述
查看dashboard的id
https://grafana.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
效果
在这里插入图片描述

再将id为11277和13112的dashboard添加进去即可。
11277dashboard
在这里插入图片描述
13112dashboard
在这里插入图片描述

### 回答1: Docker是一个开源的容器化平台,可以帮助我们快速部署和管理应用程序。而Prometheus是一个流行的开源监控系统,可以帮助我们监控应用程序的性能和健康状况。 要在Docker部署Prometheus,我们可以使用Docker Compose来定义和管理容器。以下是一些简单的步骤: 1. 首先,我们需要创建一个Docker Compose文件,该文件定义了Prometheus容器的配置和其他相关服务。我们可以使用以下命令创建一个新的Docker Compose文件: ``` $ mkdir prometheus $ cd prometheus $ touch docker-compose.yml ``` 2. 接下来,我们需要在Docker Compose文件中定义Prometheus容器。以下是一个简单的示例: ``` version: '3' services: prometheus: image: prom/prometheus ports: - "909:909" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ``` 在这个示例中,我们使用了Prometheus官方的Docker镜像,并将容器的端口映射到主机的909端口。我们还将Prometheus的配置文件挂载到容器中。 3. 然后,我们需要创建一个Prometheus配置文件。该文件定义了Prometheus应该监控哪些目标和指标。以下是一个简单的示例: ``` global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:909'] - job_name: 'myapp' static_configs: - targets: ['myapp:808'] ``` 在这个示例中,我们定义了两个作业:一个是Prometheus自身的作业,另一个是我们的应用程序。我们将应用程序的目标设置为myapp:808,这意味着Prometheus将监视该端口上的指标。 4. 最后,我们可以使用以下命令启动Docker Compose: ``` $ docker-compose up -d ``` 这将启动Prometheus容器和其他相关服务。我们可以通过访问http://localhost:909来访问Prometheus的Web界面,并开始监视我们的应用程序。 总之,使用Docker部署Prometheus非常简单,只需要几个简单的步骤即可完成。这使得我们可以快速部署和管理Prometheus,从而更好地监视我们的应用程序。 ### 回答2: 首先,介绍一下DockerPrometheusDocker是一个容器化平台,可以应用程序的封装和分发。它使得开发人员可以将应用程序及其依赖项打包到容器中,并将其部署在任何支持Docker主机上,从而加快了开发和部署的速度。 Prometheus是一个广泛使用的开源监控系统,用于监控和提醒有关系统和服务的状态。它将各种应用程序和服务的指标集成在一起,从而提供了全面的可视化和告警功能。 现在,我们来讲讲如何使用Docker部署Prometheus。 步骤如下: 第一步:创建Docker容器。 在终端中输入以下命令: docker run -d --name prometheus -p 9090:9090 prom/prometheus 此命令将在本地Docker上启动一个名为“prometheus”的容器,并将其映射到主机的9090端口。 第二步:访问Prometheus控制台。 在浏览器中输入http://localhost:9090即可访问Prometheus控制台。 第三步:添加Targets。 在控制台的页面中,您可以看到当前没有Targets。要添加Targets,请单击屏幕顶部的“Targets”选项卡,然后单击“Add Target”按钮。 然后,您需要为Targets指定一个名称和URL。这些URL应指向Prometheus即将监视的服务。 第四步:设置警报和通知。 Prometheus提供了完善的警报和通知系统,可以根据您所需的指标设置警报和通知。在控制台的页面中,您可以单击“Alerts”选项卡以查看现有的警报。 点击“Add Alert”按钮,输入所需的警报规则,然后设置相应的警报通知方法,比如邮件、Slack等方式。 第五步:监控和分析指标。 在Prometheus控制台的“Graph”选项卡下,您可以使用PromQL查询语言,对监控指标进行监控和分析。PromQL是Prometheus自带的查询语言,可以用来精确过滤和组合监控数据。 总结:通过使用DockerPrometheus,我们可以轻松部署和运行监控系统。正如我们在上面看到的,DockerPrometheus的使用非常灵活和方便,而且可以轻松地进行皮森集成,使我们更容易地监控和管理服务。 ### 回答3: Prometheus是一款开源的监控和告警系统,它可用于监控各种应用程序和服务,同时也支持对云平台的监控。在真实场景中,如果你愿意使用Prometheus进行监控,那么你就需要考虑如何将其部署在一个好的环境中,这点就引入了Docker容器Docker是一款开源的容器软件,可以轻松地构建,部署和运行应用程序。结合Docker容器Docker Compose功能,您可以轻松部署Prometheus。 首先,您需要创建一个Docker Compose文件,以描述Prometheus的运行环境。以下是一个Prometheus Docker Compose文件示例: ``` version: '3' services: prometheus: image: prom/prometheus container_name: prometheus restart: always ports: - 9090:9090 command: - '--config.file=/etc/prometheus/prometheus.yml' volumes: - ./prometheus:/etc/prometheus ``` 上面的Docker Compose文件包含一个prometheus服务。我们使用官方的Prometheus Docker镜像,命名为 prom/prometheus容器被命名为 prometheus,并始终自动重新启动。 我们映射了9090端口,这是Prometheus Web UI的默认端口。我们还绑定了容器的启动命令,使其可以访问prometheus.yml配置文件。我们在容器内设置了一个目录来绑定主机prometheus目录以协助加载配置文件和其他相关文件。 接下来,您需要创建一个prometheus.yml配置文件。这个文件定义了Prometheus的实例所监控的目标。您可以根据自己的需求修改模板。以下是一个prometheus.yml文件示例: ``` global: scrape_interval: 30s evaluation_interval: 30s scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] ``` 上面的配置文件描述了一个名为prometheus的任务,并定义了它所需要监控的目标。在本例中,我们监控了默认的9090端口,该端口通常用于Prometheus WebUI。 最后,进入指定的目录,使用docker-compose up命令启动docker容器Prometheus就开始工作了。通过 http://localhost:9090 访问Prometheus Web UI,你应该能看到Prometheus抓取到的所有目标列表和监控指标、数据采集和告警等相关信息。 总结起来,通过Docker容器Docker Compose的技术,您可以快速轻松地部署Prometheus。它使得处理监控话题和告警事件变得相对容易,并且在监控服务的情况下,它会提供大量的好处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值