Prometheus运维(Prometheus基础结构组件)

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

启动后验证页面

null
null
null
null

都可以正常访问

6.工具共享链接

www.alipan.com/s/E7EKXhsj3...

提取码:ko81

另外阿里云盘上不能分享docker-compose文件好,还请大家自己去下载下,共享时间7天

7.如果有兴趣大家可以组建个运维群互相交流,目前我还没想好如果觉得可以大家就反馈下我就建立个群

相关推荐
一只拉古11 小时前
DevOps 基础到精通 - 宏观概览
自动化运维·devops
一只拉古2 天前
DevOps 的 Linux 基础(第一部分)
linux·自动化运维·devops
vivo互联网技术5 天前
vivo Pulsar 万亿级消息处理实践(4)-Ansible运维部署
大数据·ansible·自动化运维·pulsar·消息处理·分布式消息中间件
SRETALK7 天前
夜莺开源监控,模板函数一览
运维·监控·自动化运维
数据智能老司机8 天前
自动化 API 交付——API 代码规范检查:自动化确保 API 一致性
架构·api·自动化运维
数据智能老司机8 天前
自动化 API 交付——破坏性变更检查:管理 API 演进
架构·api·自动化运维
数据智能老司机8 天前
自动化 API 交付——拥抱APIOps:解决问题与引领改进
架构·api·自动化运维