prometheus监控Mongdb缓存数据库

知识点:

MongoDB 的核心优势在于灵活的数据模型、水平扩展能力和非结构化数据处理,适合互联网、大数据分析、实时应用等场景。在技术选型时,若业务需求以 “快速迭代、非结构化数据、高并发” 为核心,MongoDB 是优选;若强调强事务或高度结构化查询,可考虑结合关系型数据库使用。

不适合 MongoDB 的场景(对比参考):强事务一致性需求:如银行转账、财务系统(MongoDB 4.0 + 支持分布式事务,但性能较关系型数据库仍有差距)。高度结构化且低变更的数据:如传统企业 ERP 系统中的财务报表(更适合 MySQL、PostgreSQL)。复杂 Join 查询为主的场景:MongoDB 的多文档关联查询性能较低,建议通过数据冗余或应用层处理。

一、实验环境:

master1\node1\node2还原至Prometheus+grafana配置完成

Mangodb镜像导入master1节点

二、Mangodb镜像mongo_exporter.tar \mongo.tar导入master1节点

[root@master1 ~]# ls
anaconda-ks.cfg  kube-state-metrics-rbac.yaml            node-export.yaml
calico.tar.gz    mongo_exporter.tar                      prometheus-cfg.yaml
calico.yaml      mongo.tar                               prometheus-deploy.yaml
grafana.yaml     node_exporter-1.5.0.linux-amd64.tar.gz  prometheus-k8s
kubeadm.yaml     node-exporter.tar.gz
[root@master1 ~]# ctr -n k8s.io images import mongo.tar
unpacking docker.io/library/mongo:latest (sha256:8217acd3d2f45b3b1a7c971543945ef3f21e87bdcf01109baff2e0ebcf903c84)...done
[root@master1 ~]# ctr -n k8s.io images import mongo_exporter.tar
unpacking docker.io/percona/mongodb_exporter:0.34.0 (sha256:e857a05c5b93d9d6c8a945a6cdf331ff266e207243c3aacd6059f8a12984180c)...done

三、创建data数据目录

[root@master1 ~]# mkdir -p /data/db		创建data数据目录
[root@master1 ~]#

四、安装docker

[root@master1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
Docker CE Stable - x86_64                             6.4 kB/s | 3.5 kB     00:00
Docker CE Stable - x86_64                             7.9 kB/s |  75 kB     00:09
[root@master1 ~]# yum config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master1 ~]# dnf -y install docker-ce
[root@master1 ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

五、查看docker镜像:

[root@master1 ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@master1 ~]#
[root@master1 ~]# ls
anaconda-ks.cfg  kube-state-metrics-rbac.yaml            node-export.yaml
calico.tar.gz    mongo_exporter.tar                      prometheus-cfg.yaml
calico.yaml      mongo.tar                               prometheus-deploy.yaml
grafana.yaml     node_exporter-1.5.0.linux-amd64.tar.gz  prometheus-k8s
kubeadm.yaml     node-exporter.tar.gz

六、载入mongodb的镜像、导入插件的镜像:

[root@master1 ~]# docker load < mongo.tar			载入mongodb的镜像
3abdd8a5e7a8: Loading layer  80.61MB/80.61MB
c3d944ed20ad: Loading layer  13.31kB/13.31kB
3235090eeef2: Loading layer  4.582MB/4.582MB
596debeccadd: Loading layer  3.086MB/3.086MB
e7a4e15ef2a2: Loading layer  1.536kB/1.536kB
66039d310313: Loading layer  3.584kB/3.584kB
a5d5a2b84151: Loading layer  803.2MB/803.2MB
7bf2c57cc3b0: Loading layer  17.41kB/17.41kB
Loaded image: mongo:latest
[root@master1 ~]#
[root@master1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mongo        latest    7ef8fa6da12d   3 months ago   888MB
[root@master1 ~]#
[root@master1 ~]# docker load < mongo_exporter.tar			导入mongo插件的镜像
34add5b8e977: Loading layer  217.6kB/217.6kB
5f8e5d8d99c0: Loading layer  15.18MB/15.18MB
Loaded image: percona/mongodb_exporter:0.34.0
[root@master1 ~]#
[root@master1 ~]# docker images					查看docker镜像
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
mongo                      latest    7ef8fa6da12d   3 months ago   888MB
percona/mongodb_exporter   0.34.0    ee26c8c9fc40   2 years ago    15.4MB

七、编辑Dockers进程的配置文件、定义 Docker 的运行时

[root@master1 ~]# vim /etc/docker/daemon.json
{
    "registry-mirrors":[
        "https://mirror.baidubce.com",
        "https://9cpn8tt6.mirror.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.1panel.live",
        "https://hub.rat.dev",
        "https://mirror-gcr.onrender.com",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://reg-mirror.qiniu.com",
        "https://registry.docker-cn.com"
    ]
}
[root@master1 ~]# systemctl restart docker

八、mongo运行mongodb的镜像,生成mongodb的容器,建立端口映射,端口的27017映射到容器27017,并建立目录映射

[root@master1 ~]# docker run -d --name mongodb -p 27017:27017 -v /data/db:/data/db  mongo
07e0196d3d8157653c0d9850888970420c3382cee8bbae53bf5204a1a86368e2
mongo运行mongodb的镜像,生成mongodb的容器,建立端口映射,端口的27017映射到容器的27017,并建立目录映射
[root@master1 ~]# docker ps			查看正在运行的容器
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          POR                                                                          TS                                             NAMES
07e0196d3d81   mongo     "docker-entrypoint.s…"   23 seconds ago   Up 23 seconds   0.0                                                                          .0.0:27017->27017/tcp, [::]:27017->27017/tcp   mongodb
[root@master1 ~]#

九、管理员进入mongodb的容器

[root@master1 ~]# docker exec -it mongodb mongosh admin			管理员进入mongodb的容器
Current Mongosh Log ID: 686775f9c53b15152ed861df
Connecting to:          mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2                                                                          000&appName=mongosh+2.5.0
Using MongoDB:          8.0.6
Using Mongosh:          2.5.0

For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https:                                                                          //www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   The server generated these startup warnings when booting
   2025-07-04T06:20:27.711+00:00: Access control is not enabled for the database. Read and write access                                                                           to data and configuration is unrestricted
   2025-07-04T06:20:27.711+00:00: For customers running the current memory allocator, we suggest changin                                                                          g the contents of the following sysfsFile
   2025-07-04T06:20:27.711+00:00: We suggest setting the contents of sysfsFile to 0.
   2025-07-04T06:20:27.711+00:00: vm.max_map_count is too low
------

admin> use admin			使用数据库管理员
already on db admin		
admin> db.createUser({ user: 'admin', pwd:'admin111111', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })					数据库管理员设置密码:111111;角色:管理员任何数据
{ ok: 1 }		#启动mongo插件的容器,以管理员账号admin,密码为:admin111111,登录到容器里(如果不设置密码,登陆不了)
admin> exit

十、docker运行mongodb的插件的镜像,生成mongo插件的容器,用管理员账号admin,密码为admin111111,连接到容器里

[root@master1 ~]# docker run -d --name mongodb_exporter -p 30056:9216 percona/mongodb_exporter:0.34.0 --mongodb.uri mongodb://admin:admin111111@192.168.7.180:27017			
31dfc384bf8bb4ea24282caa53072ac5adfe2cc165ba41dff3b852b94bb0b1a6
【docker运行mongodb的插件的镜像,生成mongo插件的容器,用管理员账号admin,密码为admin111111,连接到容器里】
[root@master1 ~]#

十一、编辑编辑prometheus-deploy.yaml主配置文件

[root@master1 ~]# ls
anaconda-ks.cfg  kube-state-metrics-rbac.yaml            node-export.yaml
calico.tar.gz    mongo_exporter.tar                      prometheus-cfg.yaml	导入prometheus-cfg.yaml配置文件(deployment无状态服务:提供网页上应用服务的)
calico.yaml      mongo.tar                               prometheus-deploy.yaml
grafana.yaml     node_exporter-1.5.0.linux-amd64.tar.gz  prometheus-k8s
kubeadm.yaml     node-exporter.tar.gz
[root@master1 ~]# cd prometheus-k8s/			进入目录
[root@master1 prometheus-k8s]# vim prometheus-cfg.yaml	编辑主配置文件
    - job_name: 'mongodb'		添加工作任务mongodb
      scrape_interval: 5s		抓取间隔时间5秒
      static_configs:			静态配置
      - targets: ['192.168.7.180:30056']	目标:192.168.7.180:30056 mongodb插件的端口号
[root@master1 prometheus-k8s]# kubectl apply -f prometheus-cfg.yaml			应用Prometheus主配置文件
configmap/prometheus-config configured
[root@master1 prometheus-k8s]# kubectl get pods -n monitor-sa -owide			
NAME                                 READY   STATUS    RESTARTS      AGE     IP              NODE      N                                                                          OMINATED NODE   READINESS GATES
node-exporter-g49bj                  1/1     Running   1 (60m ago)   3d      192.168.7.180   master1   <                                                                          none>           <none>
node-exporter-hffgm                  1/1     Running   1 (60m ago)   3d      192.168.7.183   node1     <                                                                          none>           <none>
node-exporter-xflj5                  1/1     Running   1 (60m ago)   3d      192.168.7.184   node2     <                                                                          none>           <none>
prometheus-server-6fc5b6f457-sp48r   1/1     Running   1 (60m ago)   2d23h   10.244.104.5    node2     <                                                                          none>           <none>
[root@master1 prometheus-k8s]# kubectl get svc -n monitor-sa			查看监控命名空间的服务
NAME         TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
prometheus   NodePort   10.110.208.180   <none>        9090:31087/TCP   2d23h
[root@master1 prometheus-k8s]# kubectl delete -f prometheus-deploy.yaml		 删除prometheus无状态服务的配置文件
deployment.apps "prometheus-server" deleted
[root@master1 prometheus-k8s]# kubectl apply -f prometheus-deploy.yaml		应用prometheus无状态服务的配置文件
deployment.apps/prometheus-server created
[root@master1 prometheus-k8s]# ^C

十二、测试是否搭建成功

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇