1、拉取镜像
docker pull prom/node-exporter
docker pull prom/mysqld-exporter
docker pull google/cadvisor
docker pull prom/prometheus
docker pull grafana/grafana
2、启动node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
访问页面
http://192.168.1.143:9100/metrics
这些都是收集到数据,有了它就可以做宿主机Linux数据展示了
3、启动mysqld-exporter
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 -e DATA_SOURCE_NAME="root:Password123@(172.17.0.2:3306)/" prom/mysqld-exporter
访问页面
http://192.168.1.143:9104/metrics
这些都是收集到数据,有了它就可以做MySQL数据库数据展示了
4、启动cadvisor
docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk/:/dev/disk:ro -p 8080:8080 -d --name=cadvisor --restart=always google/cadvisor:latest
访问页面
http://192.168.1.143:8080/metrics
这些都是收集到数据,有了它就可以做Docker容器数据展示了
5、启动prometheus
新建目录prometheus,编辑配置文件prometheus.yml
mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['172.17.0.2:9100']
labels:
instance: localhost
- job_name: cadvisor
static_configs:
- targets: ['172.17.0.4:8080']
labels:
instance: cAdvisor
- job_name: mysqld
static_configs:
- targets: ['172.17.0.3:9104']
labels:
instance: mysql-exporter
注意:修改IP地址,这里的172.17.0. xx就是docker容器内的私网,需要自行查询
6、启动prometheus
docker run -d --name prometheus --restart=always -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
访问页面
http://192.168.1.143:9090/graph
访问targets,url如下
http://192.168.1.143:9090/targets
如果状态没有UP起来,等待一会,就会UP了
7、启动grafana
新建空文件夹grafana-storage,用来存储数据
mkdir /opt/grafana-storage
1
设置权限
chmod 777 -R /opt/grafana-storage
因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!
启动grafana:
docker run -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
访问页面:
http://192.168.1.143:3000/login
默认会先跳转到登录页面,默认的用户名和密码都是admin
登录之后,它会要求你重置密码。你还可以再输次admin密码!
密码设置完成之后,就会跳转到首页
点击Setting——Add data source,由于使用的是镜像方式,所以版本比较新。和网络上的文章展示的图片不一样
选择Prometheus
name名字写Prometheus
type 选择Prometheus,因为数据都从它那里获取
url 输入Prometheus的ip(docker容器私网ip)+端口
可以看到容器的内网IP是172.17.0.5
往下翻
点击save&test
如果出现绿色的,说明ok了
回到首页,导入grafana监控模板
然后输入号和json
网址:https://grafana.com/grafana/dashboards
往下翻一下 点进去
看到后,填入信息
然后点击Load
输入名字
下面选择普罗米修斯
点击important
展示如下:
仪表盘在这里
导入MySQL监控
https://grafana.com/grafana/dashboards
导入容器的监控
https://grafana.com/grafana/dashboards/11558
和上面导入方式一样
备注:因docker的网络模式是bridge,创建容器时候,会自动生成一个ip,为 172.17.0.0/24网段,导致服务器或者docker服务重启后,IP会变。
所以要想docker创建出来的容器IP不变,只能我们自己手动设置静态IP,创建网桥。
那么命令为:
docker network create --subnet 192.168.30.0/24 net-30
该命令为创建一个网络为192.168.30.0网段的IP,网卡名称为net-30
然后我们创建容器的时候,指定一下IP即可
例如:
docker run -d --name prometheus --net net-30 --ip 192.168.30.2 --restart=always -p 9090:9090 -v /etc/localtime:/etc/localtime -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
扩展内容(一)
因有的公司 需要监控的服务器为多台,那么这时候怎么可以实现再一个监控网址上,可以监控到多台服务器呢。
例如我的一台服务器上安装了docker,又分别使用docker安装了 node-exporte cadvisor prometheus grafana 我们先把这台服务器称之为主服务器
这台服务器通过上面的操作,已经实现了可以监控自身,现在又有新的一台服务器需要监控,我该如何操作呢。我们把这台服务器称之为从服务器
首先,在从服务器上安装docker后,只需拉取node-exporter,prometheus 这两个镜像,然后使用docker的host模式去创建容器即可
(不一定非要用docker的host模式,因为害怕服务器重启后,docker的IP会发生变化,故这里使用docker的host模式)
操作如下:
docker pull node-exporter
docker pull prometheus
docker run -d --name node-exporter --restart=always --net host -v /etc/localtime:/etc/localtime -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporte
映射目录之前应该先填写好信息
mkdir -p /opt/prometheus/
vim prometheus.yml
现在我们需要在配置文件里面分别写上从服务器的一些配置
192.168.1.56为从服务器IP,因为从服务器创建docker时候使用的host模式
如图所示:
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['192.168.1.56:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.1.56:9100']
labels:
instance: localhost
:wq
保存退出
然后我们创建容器
docker run -d --name prometheus --net host --restart=always -v /etc/localtime:/etc/localtime -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
之后我们登录到主服务器的grafana服务,也就是3000端口 http://主服务器ip://3000
然后找到 Add new data source
选择prometheus
输入名字和对应的网址即可
例如:name写从服务器1.56
URL写http://192.168.1.56:9090
翻到最下面 点击保存并测试,看到绿色的证明成功
然后我们导入模板 选择Import
输入12633 然后点击右侧的Load
然后写上 name从服务器监控面板
然后选择刚刚创建的prometheus,名称为从服务器1.56
然后点击最下面的Import导入,即可。然后即可看到该页面。
同理,需要监控10个服务器也是这样操作即可。
扩展内容(二)
如果不想docker pull(拉取)prometheus和node_exporter镜像的话
想要在本机安装的话,可以查看以下的操作步骤:
操作系统:Ubuntu20.04
1、下载对应的gz包
wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gz
wget https://prometheus.io/download/node_exporter-1.3.1.linux-amd64.tar.gz
2、首先解压prometheus-2.36.0.linux-amd64.tar.gz
tar xvfz prometheus-2.36.0.linux-amd64.tar.gz
3、解压后我们会得到一个文件夹,进去后,修改prometheus.yml配置文件
cd prometheus-2.36.0.linux-amd64
vim prometheus.yml
把默认的localhost换成本机IP即可,如图红色框住内容
如图所示:
然后再把下面的node_exporter写进去
- job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['192.168.1.68:9100']
如图所示:
:wq
保存退出
4、编写一个prometheus系统服务并启动服务,设置为开启自启
vim /etc/systemd/system/prometheus.service
[Unit]
Description=prometheus
Wants=network-online.target
After=network-online.target[Service]
Type=simple
ExecStart=/data/sh/prometheus-2.29.2.linux-amd64/prometheus \
--config.file /data/sh/prometheus-2.29.2.linux-amd64/prometheus.yml \
# --storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/data/sh/prometheus-2.29.2.linux-amd64/consoles \
--web.console.libraries=/data/sh/prometheus-2.29.2.linux-amd64/console_libraries[Install]
WantedBy=multi-user.target
:wq
保存退出
注意:下面四个红色框住的需填写实际解压prometheus-2.36.0.linux-amd64.tar.gz包的路径
systemctl start prometheus.service
systemctl status prometheus.service
systemctl enable prometheus.service
5、我们现在解压node_exporter-1.3.1.linux-amd64.tar.gz包
tar xf node_exporter-1.3.1.linux-amd64.tar.gz
6、编写一个node_exporter系统服务
sudo vim /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target[Service]
Type=simple
ExecStart=/data/sh/node_exporter-1.0.1.linux-amd64/node_exporter[Install]
WantedBy=multi-user.target
:wq
保存退出
注意:ExecStart后面写实际解压node_exporter-1.3.1.linux-amd64.tar.gz包的路径
7、启动服务,查看服务状态,加入开机自启
systemctl start node_exporter.service
systemctl status node_exporter.service
systemctl enable node_exporter.service
8、然后我们登录到主服务器的grafana服务,也就是3000端口 http://主服务器ip://3000
然后找到 Add new data source
选择prometheus
输入名字和对应的网址即可
例如:name写gpu服务器1.68
URL写http://192.168.1.68:9090
翻到最下面 点击保存并测试,看到绿色的证明成功
然后我们导入模板 选择Import
输入12633 然后点击右侧的Load
然后写上 name从服务器监控面板
然后选择刚刚创建的prometheus,名称为GPU1服务器1.68-性能监控面板
然后点击最下面的Import导入,即可。然后即可看到该页面。
我有空不想写了 诶 就是玩儿~
如果夏天你能来到我身边
我就把头发打理得蓬松一点
然后
穿上淡黄的长裙去见你
小鬼 快点过来抱了~