部署Prometheus+Grafana监控Docker(上)

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 部署Prometheus+Grafana监控Docker(上)

部署Prometheus+Grafana监控Docker


(1)实验环境


两台主机都需要桥接网卡!


系统 主机名 ip 安装软件 扮演角色
Centos7.4 Prometheus 192.168.100.210 prometheus+Grafana+exporter+cAdvisor+influxdb+docker 监控端
Centos7.4 Docker 192.168.100.208 exporter+docker+cAdvisor 被监控端


(2)实验步骤


1、先做基础配置

#监控端配置
[root@Centos7 ~]# hostnamectl set-hostname prometheus
[root@Centos7 ~]# su
[root@prometheus ~]# systemctl stop firewalld
[root@prometheus ~]# setenforce 0
setenforce: SELinux is disabled
[root@prometheus ~]# mount /dev/cdrom /mnt/
[root@prometheus ~]# yum -y install ntpdate
[root@prometheus ~]# ntpdate ntp1.aliyun.com
 5 Aug 09:58:03 ntpdate[1142]: step time server 120.25.115.20 offset -28802.931261 sec
#被监控端配置
[root@Centos7 ~]# hostnamectl set-hostname docker
[root@Centos7 ~]# su
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# setenforce 0
setenforce: SELinux is disabled
[root@docker ~]# mount /dev/cdrom /mnt/
[root@docker ~]# yum -y install ntpdate
[root@docker ~]# ntpdate ntp1.aliyun.com
 5 Aug 09:58:23 ntpdate[1527]: step time server 120.25.115.20 offset -28801.336708 sec

2、在监控端安装服务


安装prometheus+Grafana+exporter+cAdvisor+influxdb


#以下操作全部都在监控端执行
#上传软件包
[root@prometheus ~]# ll
总用量 58216
-rw-------. 1 root root     1264 1月  12 2021 anaconda-ks.cfg
-rw-r--r--  1 root root 59608515 8月   5 09:59 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# tar xf prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# mv prometheus-2.16.0.linux-amd64 /usr/local/prometheus
[root@prometheus ~]# cd /usr/local/prometheus/
#Promtheus作为一个时间序列数据库,其采集的数据会以文件的形似存储在本地中,默认的存储路径为data/,因此我们需要先手动创建该目录:
[root@prometheus prometheus]# mkdir data    
[root@prometheus prometheus]# ll
总用量 140984
drwxr-xr-x 2 3434 3434       38 2月  14 2020 console_libraries
drwxr-xr-x 2 3434 3434      173 2月  14 2020 consoles
drwxr-xr-x 3 root root       51 8月   5 10:00 data
-rw-r--r-- 1 3434 3434    11357 2月  14 2020 LICENSE
-rw-r--r-- 1 3434 3434     3184 2月  14 2020 NOTICE
-rwxr-xr-x 1 3434 3434 82329106 2月  14 2020 prometheus
-rw-r--r-- 1 3434 3434      926 2月  14 2020 prometheus.yml
-rwxr-xr-x 1 3434 3434 48417809 2月  14 2020 promtool
-rwxr-xr-x 1 3434 3434 13595766 2月  14 2020 tsdb
[root@prometheus prometheus]# useradd -s /sbin/nologin prometheus
[root@prometheus prometheus]# chown -R prometheus:prometheus /usr/local/prometheus/
[root@prometheus prometheus]# cd /usr/lib/systemd/system
[root@prometheus system]# vim prometheus.service
[Unit]
Description=prometheus
After=network.target 
[Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus
[Install]
WantedBy=multi-user.target
#保存退出
[root@prometheus system]# systemctl start prometheus      #启动
[root@prometheus system]# netstat -napt | grep 9090       #查看监听端口
tcp        0      0 127.0.0.1:56274         127.0.0.1:9090          ESTABLISHED 1316/prometheus     
tcp6       0      0 :::9090                 :::*                    LISTEN      1316/prometheus     
tcp6       0      0 127.0.0.1:9090          127.0.0.1:56274         ESTABLISHED 1316/prometheus 


使用浏览器进行访问http://192.168.100.210:9090

5523901d33d446f2879c84b6cfae567a.png


#安装influxdb数据库
#上传软件包进行安装
[root@prometheus system]# cd
[root@prometheus ~]# ll
总用量 108032
-rw-------. 1 root root     1264 1月  12 2021 anaconda-ks.cfg
-rw-r--r--  1 root root 51010897 8月   5 10:08 influxdb-1.7.8.x86_64.rpm
-rw-r--r--  1 root root 59608515 8月   5 09:59 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# yum -y install influxdb-1.7.8.x86_64.rpm
[root@prometheus ~]# cp /etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf.default
[root@prometheus ~]# systemctl start influxdb
[root@prometheus ~]# systemctl enable influxdb
[root@prometheus ~]# influx   #进入数据库
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> show databases;
name: databases
name
----
_internal
> create database prometheus ;   #创建prometheus库
> show databases;   #确认已经创建
name: databases
name
----
_internal
prometheus
> exit
#配置普罗米修斯集成influxdb数据库
[root@prometheus ~]# cd /usr/local/prometheus/
[root@prometheus prometheus]# cp prometheus.yml prometheus.yml.defalut
[root@prometheus prometheus]# vim prometheus.yml    #末尾直接添加
remote_write:
  - url: "http://localhost:8086/api/v1/prom/write?db=prometheus" 
remote_read:
  - url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
#保存退出
[root@prometheus prometheus]# systemctl restart prometheus
[root@prometheus prometheus]# systemctl status prometheus
#检测prometheus数据是否到了数据库中
[root@prometheus prometheus]# cd
[root@prometheus ~]# influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> use prometheus;          #进入prometheus库
Using database prometheus
>  show MEASUREMENTS;      #查看当前库下的所有数据,有数据就可以了
> exit
#安装Grafana
[root@prometheus ~]# yum -y install fontconfig freetype* urw-fonts
#上传软件包
[root@prometheus ~]# ll
总用量 163076
-rw-------. 1 root root     1264 1月  12 2021 anaconda-ks.cfg
-rw-r--r--  1 root root 56363500 6月  17 16:40 grafana-6.1.4-1.x86_64.rpm
-rw-r--r--  1 root root 51010897 8月   5 10:08 influxdb-1.7.8.x86_64.rpm
-rw-r--r--  1 root root 59608515 8月   5 09:59 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# yum -y install grafana-6.1.4-1.x86_64.rpm
[root@prometheus ~]# systemctl start grafana-server
[root@prometheus ~]# netstat -anpt | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      1509/grafana-server 

使用浏览器进行测试

bfbfba5d2855435aa8c3bc2607b1a518.png

7760aac163024947bdc23cb63ae385dd.png

4f159c3318a74b2e88a263cb38606fcd.png

#安装exporter
#上传软件包
[root@prometheus ~]# ll
总用量 170972
-rw-------. 1 root root     1264 1月  12 2021 anaconda-ks.cfg
-rw-r--r--  1 root root 56363500 6月  17 16:40 grafana-6.1.4-1.x86_64.rpm
-rw-r--r--  1 root root 51010897 8月   5 10:08 influxdb-1.7.8.x86_64.rpm
-rw-r--r--  1 root root  8083296 7月  10 16:51 node_exporter-0.18.1.linux-amd64.tar.gz
-rw-r--r--  1 root root 59608515 8月   5 09:59 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# tar xf node_exporter-0.18.1.linux-amd64.tar.gz 
[root@prometheus ~]# mv node_exporter-0.18.1.linux-amd64 /usr/local/exporter
[root@prometheus ~]# cd /usr/lib/systemd/system
[root@prometheus system]#  vim node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/exporter/node_exporter --web.listen-address=:20001 --collector.systemd --collector.systemd.unit-whitelist=(sshd|nginx).service --collector.processes --collector.tcpstat
[Install]
WantedBy=multi-user.target
#保存退出
[root@prometheus system]# systemctl daemon-reload 
[root@prometheus system]# systemctl start node_exporter 
[root@prometheus system]# systemctl status node_exporter
[root@prometheus system]# netstat -anpt | grep 20001 
tcp6       0      0 :::20001                :::*                    LISTEN      1553/node_exporter  
[root@prometheus system]# systemctl enable node_exporter


使用浏览器进行访问

0dde70f08f3f48b9a64105ba6e132f0c.png

eb28edfe89a54c6db15a95ef47c2b355.png

#安装docker
[root@prometheus system]# cd
[root@prometheus ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@prometheus ~]# ll
总用量 170976
-rw-------. 1 root root     1264 1月  12 2021 anaconda-ks.cfg
drwxr-xr-x  3 root root     4096 8月   5 10:38 docker
-rw-r--r--  1 root root 56363500 6月  17 16:40 grafana-6.1.4-1.x86_64.rpm
-rw-r--r--  1 root root 51010897 8月   5 10:08 influxdb-1.7.8.x86_64.rpm
-rw-r--r--  1 root root  8083296 7月  10 16:51 node_exporter-0.18.1.linux-amd64.tar.gz
-rw-r--r--  1 root root 59608515 8月   5 09:59 prometheus-2.16.0.linux-amd64.tar.gz
[root@prometheus ~]# vim /etc/yum.repos.d/centos.repo 
[aaa]
name=aaa
baseurl=file:///mnt
enabled=1
gpgcheck=0
[docker]
name=docker
baseurl=file:///root/docker
enabled=1
gpgcheck=0
#保存退出
[root@prometheus ~]# yum -y install docker-ce
[root@prometheus ~]# mkdir -p /etc/docker
[root@prometheus ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://w4uieobw.mirror.aliyuncs.com"]
}
#保存退出
[root@prometheus ~]# systemctl start docker
[root@prometheus ~]# systemctl status docker
#使用docker下载cAdvisor的镜像
[root@prometheus ~]# docker pull google/cadvisor
#开启容器,映射端口18104
[root@prometheus ~]# docker run \  
  --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=18104:8080\
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest
#查看容器与镜像
[root@prometheus ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
google/cadvisor     latest              eb1210707573        2 years ago         69.6MB
[root@prometheus ~]# docker ps  #成功启动容器
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                     NAMES
1aab729a1d2d        google/cadvisor:latest   "/usr/bin/cadvisor -…"   3 minutes ago       Up 3 minutes        0.0.0.0:18104->8080/tcp   cadvisor


使用浏览器进行访问


访问http://192.168.100.210:18104/containers/进入cadvisor的web界面


dd7a68f6b3704d97b3708ddf1d074b6f.png



92e07fdd5f8d4838b5f55519c812d723.png


6a8db847677a4e11a8f471e26f4a2199.png


访问http://192.168.100.210:18104/metrics可以看到cadvisor给prometheus暴露出来的信息

f1ea2798b5bc46808735fc776a30eaa1.png

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
目录
相关文章
|
15天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
186 91
|
16天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
30天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
6天前
|
人工智能 文字识别 安全
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
54 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
|
23天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
99 44
|
3天前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
33 19
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
61 23
|
1月前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
53 22
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
70 25