Prometheus基础结构组件
上次迁移后有些同学问题监控如何组建,这里就分几篇文章将线上监控服务器部署过程重演一遍,并不是很难,我的操作只是适合我现在的工作环境,如果同学们要测试应该问题不大,如果部署线上还要根据实际情况来进行调整,话不多说开练。
文章里面的资料我会根据文章进度共享到网盘当中,需要的同学可以自己去下,不是最新版如需最新版请自己去下载。
1.Docker安装(ubuntu22.04)
bash
# 在主机上删除已经安装过的docker如果你没有安装过可以省略
sudo apt-get remove docker docker-engine docker.io containerd runc
# 更新ubuntu
sudo apt-get update
sudo apt-get upgrade
# 安装依赖
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 使用阿里云的docker安装源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 开始安装
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 从Github下载新版的docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 如果你无法从Github上下载那么可以用网盘中已经下载好的,然后放入指定目录
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 授权docker-compose
chmod +x /usr/local/bin/docker-compose
# 修改下docker的源和日志存储信息
cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://mirror.baidubce.com",
"http://hub-mirror.c.163.com",
"https://docker.nju.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file":"3"
}
}
# 重新加载docker并重启
systemctl daemon-reload
systemctl restart docker
2. 导入镜像
ruby
# 镜像目录结构(网盘中有)
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# tree -L 1
.
├── bitnami-kafka-exporter.tar # kafka_export
├── feiyu563_prometheus-alert:v4.9.1.tar # 第三方告警发送工具
├── grafana_grafana:latest.tar # grafana
├── mysqld_export.tar # mysql_export
├── oliver006-redis_exporter.tar # redis_export
├── prom_alertmanager:latest.tar # alertmanager告警
├── prometheus-webhook-dingtalk.tar # 钉钉告警工具
└── prom_prometheus:latest.tar # prometheus
# 导入kafka_export镜像
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# docker load -i bitnami-kafka-exporter.tar
6df0628d946e: Loading layer [==================================================>] 150.5MB/150.5MB
Loaded image ID: sha256:25a5cfb8fcaf638201bb80151298aee1b5021875f61299db6646b22dec368eb5
# 查看镜像名称,这里名称有问题需要手动改下
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 25a5cfb8fcaf 15 months ago 145MB
# 修改镜像名称
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# docker tag 25a5cfb8fcaf bitnami/kafka-exporter:latest
# 在此查看
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bitnami/kafka-exporter latest 25a5cfb8fcaf 15 months ago 145MB
# 导入其他镜像,这里请导一个就查看下镜像名称是否正确,这里把所有镜像导入后的名称列出来,大家按上面导入和修改名称方式逐个导入修改即可,有些导入是不需要修改的
root@ubuntu2204-98:~/Prometheus_Monitor_Project/images# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysqld_exporter latest 7ccdd847eb1b 9 months ago 22.4MB
oliver006/redis_exporter latest 007f9ddb94dd 9 months ago 9.25MB
grafana/grafana latest de903bc9ce7c 11 months ago 478MB
prom/prometheus latest 4022a502929b 11 months ago 275MB
feiyu563/prometheus-alert v4.9.1 72a6091d087f 14 months ago 118MB
bitnami/kafka-exporter latest 25a5cfb8fcaf 15 months ago 145MB
prom/alertmanager latest 11f11916f8cd 17 months ago 70.3MB
timonwong/prometheus-webhook-dingtalk latest 3dc9b4c4844e 3 years ago 21.5MB
3.准备项目目录(用于数据挂载)
ruby
root@ubuntu2204-98:~/Prometheus_Monitor_Project/prometheus_monitor# mkdir -p /usr/local/prometheus_monitor/{kafka_export,mysql_export,redis_epxort,grafana,PrometheusAlert}
root@ubuntu2204-98:/usr/local/prometheus_monitor# tree -L 1
.
├── grafana
├── kafka_export
├── mysql_export
├── PrometheusAlert
└── redis_epxort
4.将镜像中必要的文件拷贝出来
因为我需要将一些容器中的数据挂载到我指定的地方,方便我后续进行操作和管理,其实也可以让自己挂载到卷里等其他方式,根据个人喜好,如果大佬们有自己的方法可以根据自己的情况来
ruby
# 创建临时Prometheus
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker run -it -d --name promet prom/prometheus:latest
95084ec06cca12d7af2df96abc422deb7691223a792acc0b895eb0c880e6abc3
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95084ec06cca prom/prometheus:latest "/bin/prometheus --c..." 2 seconds ago Up 2 seconds 9090/tcp promet
# 通过容器ID将容器中内容拷贝出来
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker cp 95084ec06cca:/etc/prometheus /usr/local/prometheus_monitor/
Successfully copied 4.1kB to /usr/local/prometheus_monitor/prometheus
# 创建临时Alertmanager
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker run -it -d --name alter prom/alertmanager:latest
e2c0cc2e577fe85eb5442ab7ffbf78624e36ade58ccd8289d1bd1bc9d3fed629
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2c0cc2e577f prom/alertmanager:latest "/bin/alertmanager -..." 3 seconds ago Up 3 seconds 9093/tcp alter
95084ec06cca prom/prometheus:latest "/bin/prometheus --c..." 5 minutes ago Up 5 minutes 9090/tcp promet
# 通过容器ID将容器中内容拷贝出来
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker cp e2c0cc2e577f:/etc/alertmanager /usr/local/prometheus_monitor/
Successfully copied 2.56kB to /usr/local/prometheus_monitor/
# 创建临时Grafana
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker run -it -d --name grafana grafana/grafana:latest
01db8c59e735953a3a1012e1c40f70c7aac5af7e62cbc6dcc40b767ad26b06fc
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
01db8c59e735 grafana/grafana:latest "/run.sh" 2 seconds ago Up 2 seconds 3000/tcp grafana
e2c0cc2e577f prom/alertmanager:latest "/bin/alertmanager -..." 3 minutes ago Up 3 minutes 9093/tcp alter
95084ec06cca prom/prometheus:latest "/bin/prometheus --c..." 9 minutes ago Up 9 minutes 9090/tcp promet
# 通过容器ID将容器中内容拷贝出来(这里要拷贝出来2个文件夹,其中一个进行重命名)
# 拷贝文件夹并重名名
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker cp 01db8c59e735:/var/lib/grafana /usr/local/prometheus_monitor/grafana/
Successfully copied 1.04MB to /usr/local/prometheus_monitor/grafana/
root@ubuntu2204-98:/usr/local/prometheus_monitor# mv /usr/local/prometheus_monitor/grafana/grafana /usr/local/prometheus_monitor/grafana/grafana-data
# 拷贝文件夹
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker cp 01db8c59e735:/usr/share/grafana /usr/local/prometheus_monitor/grafana/
Successfully copied 460MB to /usr/local/prometheus_monitor/grafana/
# 创建临时dingding告警应用
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker run -it -d --name dingt timonwong/prometheus-webhook-dingtalk:latest
a8341f1861a271600f6e121fab24273dec6ac413e7baf22b1bfac53c9955c868
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8341f1861a2 timonwong/prometheus-webhook-dingtalk:latest "/bin/prometheus-web..." 1 second ago Up 1 second 8060/tcp dingt
01db8c59e735 grafana/grafana:latest "/run.sh" 5 minutes ago Up 5 minutes 3000/tcp grafana
e2c0cc2e577f prom/alertmanager:latest "/bin/alertmanager -..." 8 minutes ago Up 8 minutes 9093/tcp alter
95084ec06cca prom/prometheus:latest "/bin/prometheus --c..." 14 minutes ago Up 14 minutes 9090/tcp promet
# 通过容器ID将容器中内容拷贝出来
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker cp a8341f1861a2:/etc/prometheus-webhook-dingtalk /usr/local/prometheus_monitor/
Successfully copied 18.4kB to /usr/local/prometheus_monitor/
# 删除所有运行的容器 如果你有其他容器再跑可别执行,请按照容器ID进行删除
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker rm -f $(docker ps -q)
a8341f1861a2
01db8c59e735
e2c0cc2e577f
95084ec06cca
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 将app.conf拷贝到PrometheusAlert目录(网盘里面有),并创建logs文件夹,授权777
root@ubuntu2204-98:/usr/local/prometheus_monitor/PrometheusAlert# ls
app.conf
root@ubuntu2204-98:/usr/local/prometheus_monitor/PrometheusAlert# mkdir logs
root@ubuntu2204-98:/usr/local/prometheus_monitor/PrometheusAlert# chmod -R 777 logs/
root@ubuntu2204-98:/usr/local/prometheus_monitor/PrometheusAlert# ls
app.conf logs
# 最后目录结构
root@ubuntu2204-98:/usr/local/prometheus_monitor# tree -L 1
.
├── alertmanager
├── grafana
├── kafka_export
├── mysql_export
├── prometheus
├── PrometheusAlert
├── prometheus-webhook-dingtalk
└── redis_epxort
5. 准备docker-compose.yml启动
scss
root@ubuntu2204-98:/usr/local/prometheus_monitor# pwd
/usr/local/prometheus_monitor
root@ubuntu2204-98:/usr/local/prometheus_monitor# cat docker-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- /usr/local/prometheus_monitor/prometheus:/etc/prometheus
ports:
- "9220:9090"
networks:
- monitor_network
alertmanager:
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always
volumes:
- /usr/local/prometheus_monitor/alertmanager:/etc/alertmanager
ports:
- "9221:9093"
networks:
- monitor_network
grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
volumes:
- /usr/local/prometheus_monitor/grafana/grafana:/usr/share/grafana
- /usr/local/prometheus_monitor/grafana/grafana-data:/var/lib/grafana
ports:
- "9222:3000"
networks:
- monitor_network
prometheusalert-center:
image: feiyu563/prometheus-alert:v4.9.1
container_name: prometheus-alert-center
hostname: prometheus-alert-center
restart: always
volumes:
- /usr/local/prometheus_monitor/PrometheusAlert/app.conf:/app/conf/app.conf
- /usr/local/prometheus_monitor/logs:/app/logs
ports:
- "9223:8080"
networks:
- monitor_network
prometheus-webhook-dingtalk:
image: timonwong/prometheus-webhook-dingtalk:latest
container_name: prometheus-webhook-dingtalk
hostname: prometheus-webhook-dingtalk
restart: always
ports:
- "8060:8060"
volumes:
- /usr/local/prometheus_monitor/dingtalk-webhook:/etc/prometheus-webhook-dingtalk
networks:
- monitor_network
networks:
monitor_network:
driver: bridge
# 启动
root@ubuntu2204-98:/usr/local/prometheus_monitor# docker-compose up -d
[+] Building 0.0s (0/0)
[+] Running 6/6
✔ Network prometheus_monitor_monitor_network Created 0.1s
✔ Container grafana Started 0.5s
✔ Container prometheus-webhook-dingtalk Started 0.9s
✔ Container prometheus-alert-center Started 0.8s
✔ Container prometheus Started 0.7s
✔ Container alertmanager Started 1.0s
启动后验证页面




都可以正常访问
6.工具共享链接
提取码:ko81
另外阿里云盘上不能分享docker-compose文件好,还请大家自己去下载下,共享时间7天