目录
前言
本文章仅记录操作,供日后参考回顾。
系统:MacOS M1
Docker运行环境:Debian
Docker配置
一、安装Docker
1.在浏览器Docker官网中下载Docker 应用程序,安装应用
2.注册Docker个人账号
二、下载debian镜像
~ docker pull debian
~ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
debian latest e38a1b1bebd5 6 days ago 118MB
三、创建容器
创建容器master01
~ docker run -d --name master01 -it -p 9090:9090 -p 3000:3000 debian /bin/bash -c "while true;do sleep 10;done"
22338f41b0a4544d9cca0a1b4628e2fdc0526571f55af4908500a31a23bc124b
同理,再创建容器node01,node02,node03,不过注意节点映射不能一样
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b386d411270 debian "/bin/bash -c 'while…" 6 minutes ago Up 6 minutes 0.0.0.0:3003->3000/tcp, 0.0.0.0:9093->9090/tcp node03
e65107c906a8 debian "/bin/bash -c 'while…" 7 minutes ago Up 7 minutes 0.0.0.0:3002->3000/tcp, 0.0.0.0:9092->9090/tcp node02
d6b8a83117c8 debian "/bin/bash -c 'while…" 7 minutes ago Up 7 minutes 0.0.0.0:3001->3000/tcp, 0.0.0.0:9091->9090/tcp node01
22338f41b0a4 debian "/bin/bash -c 'while…" 10 minutes ago Up 10 minutes 0.0.0.0:3000->3000/tcp, 0.0.0.0:9090->9090/tcp master01
while true;do sleep 10;done
默认退出容器后会进入终止状态,这里为了方便设成死循环
9090
端口是Prometheus的默认端口
3000
端口是Grafana的默认端口
四、配置容器及相应命令
创建好后进入容器(这里以master01为例)
~ docker exec -it 223 bash
223
是容器ID前三位
因为新建的容器内什么都没有,所以我们需要配置相应的命令
root@22338f41b0a4:/# apt update
root@22338f41b0a4:/# apt-get install wget
root@22338f41b0a4:/# apt-get install vim
同理,配置其他容器
Prometheus配置
一、安装Prometheus
(master01)
在Prometheus官网找到和自己系统对应版本的包链接
root@22338f41b0a4:/# wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-arm64.tar.gz
解压、做软链接
root@22338f41b0a4:/# tar -xf prometheus-2.36.0.linux-arm64.tar.gz -C /usr/local/
root@22338f41b0a4:/# cd /usr/local/
root@22338f41b0a4:/usr/local# ln -sv prometheus-2.36.0.linux-arm64/ prometheus
二、安装Node_exporter
(所有容器)
和上面一样的步骤
root@22338f41b0a4:/# /usr/local# ls
bin games lib node_exporter node_exporter-1.3.1.linux-arm64.tar.gz prometheus-2.36.0.linux-arm64 share
etc include man node_exporter-1.3.1.linux-arm64 prometheus sbin src
三、配置hosts文件
主机用这个命令找到这些容器的IP
~ docker inspect master01
在master01中修改host文件,绑定容器IP
root@22338f41b0a4:/# vim/etc/hosts
这里先不绑定node03,之后有用
127.0.0.1 localhost
172.17.0.2 master01
172.17.0.3 node01
172.17.0.4 node02
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 22338f41b0a4
四、配置prometheus.yaml文件
root@22338f41b0a4:/usr/local# cd prometheus
root@22338f41b0a4:/usr/local/prometheus# vim prometheus.yml
将这行代码添加到该文件下,新增了一个job,注意格式对齐
- job_name: "nodes"
static_configs:
- targets:
- 172.17.0.2:9100
- 172.17.0.3:9100
- 172.17.0.4:9100
五、启动prometheus web端
master01,node01,node02启动Node_exporter
root@d6b8a83117c8:/usr/local/node_exporter# ./node_exporter
master01启动Prometheus
root@22338f41b0a4:/usr/local/prometheus# ./prometheus
主机上找到本机IP
~ ifconfig en0
打开浏览器输入IP:端口,三个节点正常工作且被监控中
六、基于文件的服务发现
设想每增加一个节点到监控下,都需要进master01修改host文件,再修改prometheus.yaml文件,很麻烦。于是用写个文件,让文件主动发现符合被监控要求的节点更有效率
在master01下创建一个target文件夹,编写一个关于node的yaml文件
root@22338f41b0a4:/usr/local/prometheus# mkdir target
root@22338f41b0a4:/usr/local/prometheus# cd target/
root@22338f41b0a4:/usr/local/prometheus/target# vim nodes-linux.yaml
- targets:
- 172.17.0.2:9100
- 172.17.0.3:9100
- 172.17.0.4:9100
labels:
app: node_exporter
再编写一个关于prometheus的yaml文件
root@22338f41b0a4:/usr/local/prometheus/target# vim prometheus-server.yaml
- targets:
- 172.17.0.2:9090
labels:
app: prometheus
接着去主配置文件中定义这两个文件的指向
root@22338f41b0a4:/usr/local/prometheus# vim prometheus.yml
这里只修改了scrape_configs下的两个job,并将之前部署的static_configs注释掉转而替代为file_sd_configs
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
file_sd_configs:
- files:
- target/prometheus-*.yaml
refresh_interval: 1m
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
# static_configs:
# - targets: [":9090"]
- job_name: "nodes"
file_sd_configs:
- files:
- target/prometheus-*.yaml
refresh_interval: 1m
# - job_name: "nodes"
# static_configs:
# - targets:
# - 172.17.0.2:9100
# - 172.17.0.3:9100
# - 172.17.0.4:9100
这里我们可以用这个命令来检查主配置文件的语法
root@22338f41b0a4:/usr/local/prometheus# ./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: prometheus.yml is valid prometheus config file syntax
配置好文件服务发现机制后我们用node03来测试
这里直接将之前已经配置好的node03的node_exporter服务跑起来
然后在node-linux.yaml中添加node03
- targets:
- 172.17.0.2:9100
- 172.17.0.3:9100
- 172.17.0.4:9100
- 172.17.0.5:9100 #新增的node03
labels:
app: node_exporter
刷新web页面,可以看到node03也自动被监控到了
Grafana配置
一、安装Grafana
在浏览器中打开Grafana官网下载界面和安装指南,选择适合你主机的版本,copy其命令到master01终端即可(这边选择用tar.gz的方式)
root@22338f41b0a4:wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.4.linux-arm64.tar.gz
root@22338f41b0a4:tar -zxvf grafana-enterprise-8.5.4.linux-arm64.tar.gz
然后进入执行目录下运行grafana
root@22338f41b0a4:/usr/local# cd grafana-8.5.4/bin
root@22338f41b0a4:/usr/local/grafana-8.5.4/bin# ./grafana-server web
二、配置并选择Prometheus数据源
返回浏览器中输入网站地址http://192.168.1.117:3000/
,如图所示
默认账密都为admin,输入后点skip
进入主界面,然后点击Configuration
中的Data Source
选择添加Prometheus
,再把URL
填上主机IP和端口号,最后Save&Test
即可
三、用Prom QL 语法绘制图表
还在研究中,之后学会了再补上
四、合理的排版与数据呈现
数据展示有两种方式,一个直接拿模板,一个自己编排
这边就放一个模板的例子吧
在浏览器上访问Grafana官网模板,筛选你想要的模板样式,记住它的编号
然后到Grafana Web
界面,Import
你的编号
这里我用的是11074,大家可根据喜好挑选
参考资料
一、马哥教育
二、Docker-从入门到实践
总结
这篇文章算是记录了本人5.24-6.3号的学习成果,之后计划深入学习Docker和Prom QL语法,有收获再来记录吧