Grafana+Prometheus实现Ceph监控和cephfs的基本使用(二)

    技术2024-07-18  69

    Ceph块设备接口(RBD)

    Ceph块设备,也称为RADOS块设备(简称RBD),是一种基于RADOS存储系统支持超配(thin-provisioned)、可 伸缩的条带化数据存储系统,它通过librbd库与OSD进行交互。RBD为KVM等虚拟化技术和云OS(如OpenStack和 CloudStack)提供高性能和无限可扩展性的存储后端,这些系统依赖于libvirt和QEMU实用程序与RBD进行集成。 客户端基于librbd库即可将RADOS存储集群用作块设备,不过,用于rbd的存储池需要事先启用rbd功能并进行初始 化。

    # 创建存储池 [cephadm@xiaomao ceph-cluster]$ ceph osd pool create rbdpool 64 64 pool 'rbdpool' created # 启用rbd的功能 [cephadm@xiaomao ceph-cluster]$ ceph osd pool application enable rbdpool rbd # 下面是输出结果 enabled application 'rbd' on pool 'rbdpool' #初始化为rbd存储池 [cephadm@xiaomao ceph-cluster]$ rbd pool init -p rbdpool

    不过,rbd存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image),并把映像文件作为块设备 使用。rbd命令可用于创建、查看及删除块设备相在的映像(image),以及克隆映像、创建快照、将映像回滚到快 照和查看快照等管理操作。

    # 存储池名称/存储池名称 [cephadm@xiaomao ceph-cluster]$ rbd create --size 2G rbdpool/mying #查看镜像文件是否创建成功 [cephadm@xiaomao ceph-cluster]$ rbd ls -p rbdpool mying #查看镜像的详细信息 [cephadm@xiaomao ceph-cluster]$ rbd info rbdpool/mying rbd image 'mying': size 2 GiB in 512 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11a55ab72319 block_name_prefix: rbd_data.11a55ab72319 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Fri Jul 3 20:58:06 2020 access_timestamp: Fri Jul 3 20:58:06 2020 modify_timestamp: Fri Jul 3 20:58:06 2020

    启用radosgw接口

    RGW并非必须的接口,仅在需要用到与S3和Swift兼容的RESTful接口时才需要部署RGW实例

    [cephadm@xiaomao ceph-cluster]$ ceph-deploy rgw create xiaomao1

    查看rgw创建情况

    [cephadm@xiaomao ceph-cluster]$ ceph -s cluster: id: b5e6a4a2-41cc-4f75-ad20-84ed4a7c8427 health: HEALTH_WARN application not enabled on 1 pool(s) services: mon: 1 daemons, quorum xiaomao1 (age 2h) mgr: xiaomao1(active, since 3h), standbys: xiaomao2 osd: 8 osds: 8 up (since 87m), 8 in (since 2h) rgw: 1 daemon active (xiaomao1) task status: data: pools: 6 pools, 224 pgs objects: 193 objects, 1.6 KiB usage: 8.1 GiB used, 472 GiB / 480 GiB avail pgs: 224 active+clean

    默认情况下,RGW实例监听于TCP协议的7480端口,需要算定时,可以通过在运行RGW的节点上编辑其主配置 文件ceph.conf进行修改,相关参数如下所示:

    [client] rgw_frontends = "civetweb port=8080" #重启服务生效 [root@xiaomao1 ~]# systemctl restart ceph-radosgw@rgw.xiaomao1

    RGW会在rados集群上生成包括如下存储池的一系列存储池

    [cephadm@xiaomao ceph-cluster]$ ceph osd pool ls .rgw.root default.rgw.control default.rgw.meta default.rgw.log

    RGW提供的是REST接口,客户端通过http与其进行交互,完成数据的增删改查等管理操作

    启用文件系统(CephFS)接口

    CephFS需要至少运行一个元数据服务器(MDS)守护进程(ceph-mds),此进程管理与CephFS上存储的文件相关 的元数据,并协调对Ceph存储集群的访问。因此,若要使用CephFS接口,需要在存储集群中至少部署一个MDS实 例

    [cephadm@xiaomao ceph-cluster]$ ceph-deploy mds create xiaomao2

    查看MDS的相关状态可以发现,刚添加的MDS处于Standby模式:

    [cephadm@xiaomao ceph-cluster]$ ceph mds stat 1 up:standby

    使用CephFS之前需要事先于集群中创建一个文件系统,并为其分别指定元数据和数据相关的存储池。下面创建一个 名为cephfs的文件系统用于测试,它使用cephfs-metadata为元数据存储池,使用cephfs-data为数据存储池:

    # 分别是pg和pgp [cephadm@xiaomao ceph-cluster]$ ceph osd pool create cephfs-metadata 64 64 pool 'cephfs-metadata' created [cephadm@xiaomao ceph-cluster]$ ceph osd pool create cephfs-data 64 64 pool 'cephfs-data' created #初始化名为cephfs文件系统 激活 [cephadm@xiaomao ceph-cluster]$ ceph fs new cephfs cephfs-metadata cephfs-data new fs with metadata pool 7 and data pool 8

    查看文件系统的相关状态

    [cephadm@xiaomao ceph-cluster]$ ceph fs status cephfs cephfs - 0 clients ====== +------+--------+----------+---------------+-------+-------+ | Rank | State | MDS | Activity | dns | inos | +------+--------+----------+---------------+-------+-------+ | 0 | active | xiaomao2 | Reqs: 0 /s | 10 | 13 | +------+--------+----------+---------------+-------+-------+ +-----------------+----------+-------+-------+ | Pool | type | used | avail | +-----------------+----------+-------+-------+ | cephfs-metadata | metadata | 1536k | 144G | | cephfs-data | data | 0 | 144G | +-----------------+----------+-------+-------+ +-------------+ | Standby MDS | +-------------+ +-------------+ MDS version: ceph version 14.2.10 (b340acf629a010a74d90da5782a2c5fe0b54ac20) nautilus (stable)

    此时,MDS的状态已经发生了改变:

    [cephadm@xiaomao ceph-cluster]$ ceph mds stat cephfs:1 {0=xiaomao2=up:active}

    检查集群状态

    命令:ceph -s 输出信息: 1、集群ID 2、集群运行状况 3、监视器地图版本号和监视器仲裁的状态 4、OSD地图版本号和OSD的状态 5、归置组地图版本 6、归置组和存储池数量 7、所存储数据理论上的数量和所存储对象的数量(比如800G的OSD,三副本数的话,要除以3,实际能用的就260G左右) 8、所存储数量的总量

    获取集群的即时状态

    #查看pg的状态 [cephadm@xiaomao ceph-cluster]$ ceph pg stat #查看存储池的状态 [cephadm@xiaomao ceph-cluster]$ ceph osd pool stats cephfs-data(存储池的名字) #查看ceph集群的磁盘使用情况 [cephadm@xiaomao ceph-cluster]$ ceph df RAW STORAGE: CLASS SIZE AVAIL USED RAW USED %RAW USED hdd 480 GiB 472 GiB 68 MiB 8.1 GiB 1.68 TOTAL 480 GiB 472 GiB 68 MiB 8.1 GiB 1.68 POOLS: POOL ID STORED OBJECTS USED %USED MAX AVAIL mypool 1 235 B 1 192 KiB 0 144 GiB rbdpool 2 197 B 5 576 KiB 0 144 GiB .rgw.root 3 1.2 KiB 4 768 KiB 0 144 GiB default.rgw.control 4 0 B 8 0 B 0 144 GiB default.rgw.meta 5 0 B 0 0 B 0 144 GiB default.rgw.log 6 0 B 175 0 B 0 144 GiB cephfs-metadata 7 2.2 KiB 22 1.5 MiB 0 144 GiB cephfs-data 8 0 B 0 0 B 0 144 GiB

    存储空间命令说明

    命令:ceph df 输出两端内容:STORAGE和POOLS STORAGE:存储量概览 POOLS:存储池列表和每个存储池的理论用量,但不反映副本、克隆数据或快照 STORAGE段: 1、SIZE:集群的整体存储容量 2、AVAIL:集群中可以使用的可用空间容量 3、RAW USED:已使用的原始存储量 4、%RAW USED:已用的原始存储量百分比

    #显示监视器信息 [cephadm@xiaomao ceph-cluster]$ ceph mon stat e1: 1 mons at {xiaomao1=[v2:192.168.146.134:3300/0,v1:192.168.146.134:6789/0]}, election epoch 3, leader 0 xiaomao1, quorum 0 xiaomao1

    客户端挂载使用Cephfs

    客户端挂载CephFS的两种方式 1、内核文件系统:ceph,libcephfs 2、用户空间文件系统(FUSE):libcephfs

    创建认证账号

    # client.fsclient 认证的账号 # -o:把执行命令保存下来名为ceph.client.fsclient.keyring [cephadm@xiaomao ceph-cluster]$ ceph auth get-or-create client.fsclient mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-data' -o ceph.client.fsclient.keyring # 查看账号的创建情况 [cephadm@xiaomao ceph-cluster]$ ceph auth get client.fsclient exported keyring for client.fsclient [client.fsclient] key = AQBS7f9eXxahChAAQiCjn2K6ujf8jyoJoOiMuQ== caps mds = "allow rw" caps mon = "allow r" caps osd = "allow rwx pool=cephfs-data" #查看保存的结果 [cephadm@xiaomao ceph-cluster]$ cat ceph.client.fsclient.keyring [client.fsclient] key = AQBS7f9eXxahChAAQiCjn2K6ujf8jyoJoOiMuQ== #单独取出账号的key信息 [cephadm@xiaomao ceph-cluster]$ ceph auth print-key client.fsclient > fsclient.key [cephadm@xiaomao ceph-cluster]$ cat fsclient.key #下面是输出的结果 AQBS7f9eXxahChAAQiCjn2K6ujf8jyoJoOiMuQ==

    xiaomao5作为模拟客户端

    #拷贝Key到客户端主机 [cephadm@xiaomao ceph-cluster]$ scp fsclient.key root@xiaomao5:/etc/ceph/

    客户端开始挂载

    内核文件系统
    准备工作
    #查看客户端主机是否有ceph模块 [root@xiaomao5 ~]# modinfo ceph filename: /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/ceph/ceph.ko.xz license: GPL description: Ceph filesystem for Linux author: Patience Warnick <patience@newdream.net> author: Yehuda Sadeh <yehuda@hq.newdream.net> author: Sage Weil <sage@newdream.net> alias: fs-ceph rhelversion: 7.4 srcversion: B4988BF5091B60FCF15B003 depends: libceph intree: Y vermagic: 3.10.0-693.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: DA:18:7D:CA:7D:BE:53:AB:05:BD:13:BD:0C:4E:21:F4:22:B6:A4:9C sig_hashalgo: sha256

    如果没有就安装这个ceph-common

    #客户端主机要有ceph的配置 [root@xiaomao5 ~]# ll /etc/ceph/ total 16 -rw-r-----+ 1 root root 151 Jul 3 17:36 ceph.client.admin.keyring -rw-r--r--. 1 root root 235 Jul 3 18:17 ceph.conf -rw-r--r--. 1 root root 40 Jul 4 10:57 fsclient.key -rw-r--r--. 1 root root 92 Jun 26 02:00 rbdmap

    满足上面两个条件才能开始挂载

    开始挂载
    #挂载目录 [root@xiaomao5 ~]# mkdir /data #name=认证账号,secretfile=加载账号的key文件 [root@xiaomao5 ~]# mount -t ceph xiaomao1:6789:/ /data -o name=fsclient,secretfile=/etc/ceph/fsclient.key #查看是否挂载成功 [root@xiaomao5 ~]# df -h Filesystem Size Used Avail Use% Mounted on 192.168.146.134:6789:/ 480G 8.1G 472G 2% /data #查看挂载的文件系统类型 [root@xiaomao5 ~]# cd /data/ [root@xiaomao5 data]# stat -f /data/ File: "/data/" ID: 4f20c61852cbb00b Namelen: 255 Type: ceph Block size: 4194304 Fundamental block size: 4194304 Blocks: Total: 122872 Free: 120800 Available: 120800 Inodes: Total: 215 Free: -1 #设置开机自启 # _netdev:网络设备断开,开机自动跳过自检 # noatime 0 0:跳过时间戳,优化访问速度 [root@xiaomao5 ~]# cat /etc/fstab xiaomao1:6789,xiaomao2:6789:/ /data ceph name=fsclient,secretfile=/etc/ceph/fsclient.key,_netdev,noatime 0 0
    用户空间文件系统挂载
    [root@xiaomao5 ~]# yum -y install ceph-fuse #准备key文件 [cephadm@xiaomao ceph-cluster]$ scp ceph.client.fsclient.keyring root@xiaomao5:/etc/ceph/ #开始挂载 [root@xiaomao5 ~]# ceph-fuse -n client.fsclient -m xiaomao1:6789,xiaomao2:6789 /data/ #查看是否挂载成功 [root@xiaomao5 ~]# df -h Filesystem Size Used Avail Use% Mounted on ceph-fuse 145G 32M 145G 1% /data #设置开机自动挂载 [root@xiaomao5 ~]# vim /etc/fstab none /data fuse.ceph ceph.id=fsclient,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults 0 0

    元数据分区 1、文件元数据的工作负载通常是一类小而密集的IO请求,因此很难实现类似数据读写IO那样的扩展方式 2、分布式文件系统业界提供了将名称空间分割治理的解决方案,通过将文件系统根树及其热点子树分别 部署于不同的元数据服务器进行负载均衡,从而赋予了元数据存储线性扩展的可能

    #添加多个mds [cephadm@xiaomao ceph-cluster]$ ceph-deploy mds create xiaomao2 xiaomao4 xiaomao1 #查看添加情况 [cephadm@xiaomao ceph-cluster]$ ceph fs status cephfs - 1 clients ====== +------+--------+----------+---------------+-------+-------+ | Rank | State | MDS | Activity | dns | inos | +------+--------+----------+---------------+-------+-------+ | 0 | active | xiaomao2 | Reqs: 0 /s | 2443 | 2446 | +------+--------+----------+---------------+-------+-------+ +-----------------+----------+-------+-------+ | Pool | type | used | avail | +-----------------+----------+-------+-------+ | cephfs-metadata | metadata | 31.3M | 144G | | cephfs-data | data | 388M | 144G | +-----------------+----------+-------+-------+ +-------------+ | Standby MDS | +-------------+ | xiaomao4 | | xiaomao1 | +-------------+
    增加Active MDS的数量

    注意:1、仅当存在某个备用守护进程可供新的级别使用,文件系统中的实际级别数才会增加; 2、多活MDS的场景依然要求存在备用的冗余主机以实现服务HA,因此max_mds的值总是应该比实际可用的MDS数量至少小1;

    #cephfs文件系统名称 [cephadm@xiaomao ceph-cluster]$ ceph fs set cephfs max_mds 2 [cephadm@xiaomao ceph-cluster]$ ceph fs status cephfs - 1 clients ====== +------+--------+----------+---------------+-------+-------+ | Rank | State | MDS | Activity | dns | inos | +------+--------+----------+---------------+-------+-------+ | 0 | active | xiaomao2 | Reqs: 0 /s | 2443 | 2446 | | 1 | active | xiaomao4 | Reqs: 0 /s | 10 | 13 | +------+--------+----------+---------------+-------+-------+ +-----------------+----------+-------+-------+ | Pool | type | used | avail | +-----------------+----------+-------+-------+ | cephfs-metadata | metadata | 32.4M | 144G | | cephfs-data | data | 388M | 144G | +-----------------+----------+-------+-------+ +-------------+ | Standby MDS | +-------------+ | xiaomao1 | +-------------+

    每个CephFS都会有一个易读的文件系统名称和一个称为FSCID标识符ID,并且每个CephFS默认情况下都只配置一个Active MDS守护进程

    1、一个MDS集群中可处于Active状态的MDS数量的上限由max_mds参数配置,它控制着可用的rank数量,默认值为1 2、 rank是指CephFS上可同时处于Active状态的MDS守护进程的可用编号,其范围从0到max_mds-1 3、一个rank编号意味着一个可承载CephFS层级文件系统目录子树 目录子树元数据管理功能的Active状态的ceph-mds守护进程编制,max_mds的值为1时意味着仅有一个0号rank可用 4、刚启动的ceph-mds守护进程没有接管任何rank,它随后由MON按需进行分配 5、一个ceph-mds一次仅可占据一个rank,并且在守护进程终止时将其释放; 一个rank可以处于下列三种状态中的某一种: 1、 Up:rank已经由某个ceph-mds守护进程接管 2、Failed:rank未被任何ceph-mds守护进程接管 3、Damaged:rank处于损坏状态,其元数据处于崩溃或丢失状态;在管理员修复问题并对其运行 “ceph mds repaired”命令之前,处于Damaged状态的rank不能分配给其它任何MDS守护进程

    管理故障转移机制

    出于冗余的目的,每个CephFS上都应该配置一定数量Standby状态的ceph-mds守护进程等着接替失效的rank,CephFS提供了四个选项用于控制Standby状态的MDS守护进程如何工作:

    1、mds_standby_replay:布尔型值,true表示当前MDS守护进程将持续读取某个特定的Up状态的rank的元数据日志,从而持有相关rank的元数据缓存,并在此rank失效时加速故障切换:

    一个Up状态的rank仅能拥有一个replay守护进程,多出的会被自动降级为正常的非replay型MDS

    2、mds_standby_for_name:设置当前MDS进程仅备用于指定名称的rank; 3、mds_standby_for_rank:设置当前MDS进程仅备用于指定的rank,它不会接替任何其它失效的rank;不过,在有着多个CephFS的场景中,可联合使用下面的参数来指定为哪个文件系统的rank进行冗余; 4、mds_standby_for_fscid:联合mds_standby_for_rank参数的值协同生效;

    a、同时设置了mds_standby_for_rank:备用于指定fscid的指定rank; b、未设置mds_standby_for_rank时:备用于指定fscid的任意rank;

    #设置备用的mds #xiaomao1是xiaomao2的备机 [cephadm@xiaomao ceph-cluster]$ vim ceph.conf [mds.xiaomao1] mds_standby_for_name = xiaomao2 mds_standby_replay = true #修改配置文件后推送到各个节点 [cephadm@xiaomao ceph-cluster]$ ceph-deploy --overwrite-conf config push xiaomao xiaomao1 xiaomao2 xiaomao4 xiaomao5 #重启mds服务 [root@xiaomao2 ~]# systemctl restart ceph-mds@xiaomao2.service [root@xiaomao1 ~]# systemctl restart ceph-mds@xiaomao1.service [root@xiaomao4 ~]# systemctl restart ceph-mds@xiaomao2.service #把xiaomao2的mds服务停掉,看备机会不会自动接管 [root@xiaomao2 ~]# systemctl stop ceph-mds@xiaomao2.service #查看mds激活状态 [cephadm@xiaomao ceph-cluster]$ ceph fs status cephfs - 1 clients ====== +------+--------+----------+---------------+-------+-------+ | Rank | State | MDS | Activity | dns | inos | +------+--------+----------+---------------+-------+-------+ | 0 | active | xiaomao1 | Reqs: 0 /s | 2443 | 2446 | | 1 | active | xiaomao4 | Reqs: 0 /s | 10 | 13 | +------+--------+----------+---------------+-------+-------+ +-----------------+----------+-------+-------+ | Pool | type | used | avail | +-----------------+----------+-------+-------+ | cephfs-metadata | metadata | 33.9M | 144G | | cephfs-data | data | 388M | 144G | +-----------------+----------+-------+-------+ +-------------+ | Standby MDS | +-------------+ +-------------+

    Dashboard以及Prometheus监控Ceph

    Ceph启用Dashboard

    报错

    [cephadm@xiaomao ceph-cluster]$ ceph mgr module enable dashboard Error ENOENT: all mgr daemons do not support module 'dashboard', pass --force to force enablement

    解决

    #先确认ceph的版本 [cephadm@xiaomao ceph-cluster]$ ceph --version ceph version 14.2.10 (b340acf629a010a74d90da5782a2c5fe0b54ac20) nautilus (stable) #全部节点机都要手动安装 [root@xiaomao ~]# wget http://download.ceph.com/rpm-nautilus/el7/noarch/ceph-mgr-dashboard-14.2.10-0.el7.noarch.rpm [root@xiaomao ~]# yum -y install ceph-mgr-dashboard-14.2.10-0.el7.noarch.rpm #等全部节点都安装完,再次手动开启dashboard [cephadm@xiaomao ceph-cluster]$ ceph mgr module enable dashboard #查看仪表板的详细信息 [cephadm@xiaomao ceph-cluster]$ ceph mgr module ls

    访问客户端

    第一种做法是要自建https证书

    #创建自建名证书 [cephadm@xiaomao ceph-cluster]$ sudo ceph dashboard create-self-signed-cert Self-signed certificate created #为仪表板创建用户 #ceph dashboard ac-user-create 用户名 密码 [cephadm@xiaomao ceph-cluster]$ ceph dashboard ac-user-create xiaomao admin #查看访问的地址 [cephadm@xiaomao ceph-cluster]$ ceph mgr services { "dashboard": "https://xiaomao1:8443/" }

    第二种做法

    #要是使用http协议,需要关闭ssl功能 [cephadm@xiaomao ceph-cluster]$ ceph config set mgr mgr/dashboard/ssl false #为每个mgr实例配置监听的地址和端口 [cephadm@xiaomao ceph-cluster]$ ceph config set mgr mgr/dashboard/xiaomao1/server_addr 192.168.146.134 #端口 [cephadm@xiaomao ceph-cluster]$ ceph config set mgr mgr/dashboard/xiaomao1/server_port 8080 #确认配置结果 [cephadm@xiaomao ceph-cluster]$ ceph mgr services { "dashboard": "http://xiaomao1:8080/" }

    web界面访问

    访问前要做好windows下的hosts文件解析

    #访问链接 http://xiaomao1:8080/

    #配置admin用户的访问密码 [cephadm@xiaomao ceph-cluster]$ ceph dashboard set-login-credentials admin xiaomao1 #设置普通用户 #ceph dashboard ac-user-create 用户名 密码 [cephadm@xiaomao ceph-cluster]$ ceph dashboard ac-user-create xiaomao admin

    Prometheus监控

    Prometheus简介

    Prometheus是一套开源的系统监控报警框架,它启发于Google的borgmon监控系统,由工作在SoundCloud的google前员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布,2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目

    Prometheus具有以下的特点:

    1、强大的多维度数据模型:

    1、时间序列数据通过metric名和键值对来区分 2、所有的metrics都可以设置任意的多维标签 3、数据模型更随意,不需要刻意设置以点分隔的字符串 4、可以对数据模型进行聚合,切割和切片操作 5、支持双精度浮点类型,标签可以设为全unicode

    2、灵活而强大的查询语句:在同一个查询语句,可以对多个metrics进行乘法、加法、连接、取分数位等操作 3、易于管理:Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储 4、高效:平均每个采样点仅占3.5bytes,且一个Prometheus server可以处理百万的metrics 5、使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics 6、可以采用push gateway的方式把时间序列数据推送至Prometheus server端 7、可以通过服务发现或者静态配置去获取监控的targets 8、有多种可视化图形界面 9、易于伸缩

    需要指出的是,由于数据采集可能会有丢失,所以Prometheus不适用对采集数据要100%准确的情形,但如果用于记录时间序列数据,Prometheus具有很大的查询优势,此外,Prometheus适用于微服务的体系架构

    Prometheus组成及架构

    Prometheus生态圈中包含了多个组件,其中许多组件是可选的: 1、Prometheus Server:用于收集和存储时间序列数据 2、Cllent Library:客户端库,为需要监控的服务生成相应的metrics并暴露给Prometheus server。当 Prometheus server来pull时,直接返回实时状态的metrics 3、Push Gateway:主要用于短期的jobs,由于这类jobs存在时间比较短,可能在Prometheus来pull之前就消失 了。为此,这次jobs可以直接向prometheus server端推送它们的metrics。这种方式主要用于服务层面的metrics,对于机器层面的metrices,需要使用node exporter 4、Exporters:用于暴露已有的第三方服务的metrics给Prometheus 5、Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具 从上图可以看出,Prometheus的主要模块包括:Prometheus server,exporters,Pushgateway,PromQL,Alertmanager以及图形界面

    大概的工作流程: 1、Prometheus server定期从配置好的jobs或者exporters中拉metrics,或者接收来自Pushgateway发过来 的metrics 或者从其他的Prometheus server中拉metrics 2、Prometheus server在本地存储收集到的metrics,并运行已定义好的alert.rules,记录新的时间序列或者向Alertmanager推送警报 3、Alertmanager根据配置文件,对接收到的警报进行处理,发出告警 4、在图形界面中,可视化采集数据

    开始部署Prometheus

    下载源码包
    [root@xiaomao ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.6.0/prometheus-2.6.0.linux-amd64.tar.gz #解压源码包 [root@xiaomao ~]# tar xf prometheus-2.6.0.linux-amd64.tar.gz -C /usr/local/ [root@xiaomao ~]# ln -sv /usr/local/prometheus-2.6.0.linux-amd64/ /usr/local/prometheus #数据存储目录:/var/lib/prometheus #创建普通用户 [root@xiaomao ~]# useradd -r -d /var/lib/prometheus -m prometheus [root@xiaomao ~]# ll -ld /var/lib/prometheus/ drwx------ 2 prometheus prometheus 62 Jul 4 22:21 /var/lib/prometheus/

    生成启动脚本

    [root@xiaomao ~]# vim /usr/lib/systemd/system/prometheus.service [root@xiaomao ~]# cat !$ cat /usr/lib/systemd/system/prometheus.service [Unit] Description=Prometheus: the monitoring system Documentation=http://prometheus.io/docs/ [Service] ExecStart=/usr/local/prometheus/prometheus \ --config.file=/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus \ --web.console.templates=/usr/local/prometheus/consoles \ --web.console.libraries=/usr/local/prometheus/console_libraries \ --web.listen-address= 192.168.146.133:9090 --web.external-url= Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target

    启动Prometheus

    [root@xiaomao ~]# systemctl daemon-reload [root@xiaomao ~]# systemctl start prometheus [root@xiaomao ~]# systemctl enable prometheus #查看监听端口 #Prometheus监听的端口为9090 [root@xiaomao ~]# ss -tln State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 :::9090 :::*

    web界面访问

    访问链接:http://192.168.146.133:9090/graph

    部署node_exporter

    监控服务器CPU、内存、磁盘、I/O等信息,首先需要安装node_exporter。node_exporter的作用是用于机器系统数据收集

    #下载源码包 [root@xiaomao1 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz #解压源码包 [root@xiaomao1 ~]# tar xf node_exporter-0.17.0.linux-amd64.tar.gz -C /usr/local/ #创建软链接 [root@xiaomao1 ~]# ln -sv /usr/local/node_exporter-0.17.0.linux-amd64/ /usr/local/node_exporter/usr/local/node_exporter’ ->/usr/local/node_exporter-0.17.0.linux-amd64/#创建运⾏Prometheus Server进程的系统⽤⼾,并为其创建家⽬录/var/lib/prometheus作为数据存储⽬录 [root@xiaomao1 ~]# useradd -r -m -d /var/lib/prometheus prometheus #创建启动脚本 [root@xiaomao1 ~]# vim /usr/lib/systemd/system/node_exporter.service [root@xiaomao1 ~]# cat !$ cat /usr/lib/systemd/system/node_exporter.service [Unit] Description=Prometheus exporter for machine metrics, written in Go with pluggable metric collectors. Documentation=https://github.com/prometheus/node_exporter After=network.target [Service] EnvironmentFile=-/etc/sysconfig/node_exporter User=prometheus ExecStart=/usr/local/node_exporter/node_exporter \ $NODE_EXPORTER_OPTS Restart=on-failure StartLimitInterval=1 RestartSec=3 [Install] WantedBy=multi-user.target #启动服务 [root@xiaomao1 ~]# systemctl daemon-reload [root@xiaomao1 ~]# systemctl start node_exporter #查看端口是否启动 [root@xiaomao1 ~]# ss -ntl | grep 9100 LISTEN 0 128 :::9100 :::*

    编辑配置文件抓取数据

    [root@xiaomao ~]# cd /usr/local/prometheus/ [root@xiaomao prometheus]# cp prometheus.yml prometheus.yml.bak [root@xiaomao prometheus]# vim prometheus.yml #在文件的底部添加 #顺便也把监控主机的地址也改了 static_configs: - targets: ['192.168.146.133:9090'] - job_name: 'nodes' static_configs: - targets: ['192.168.146.134:9100'] #重启服务生效 [root@xiaomao prometheus]# systemctl restart prometheus

    查看数据抓取情况

    设定Ceph Mgr

    Ceph Manager内置了众多模块,包括prometheus模块,⽤于直接输出Prometheus⻛格的指标数据。

    #Prometheus模块默认监听于TCP协议的9283端⼝ [root@xiaomao prometheus]# su - cephadm [cephadm@xiaomao ~]$ ceph mgr module enable prometheus #在被监控机查看9283端口是否启动 [root@xiaomao1 ~]# ss -ntl | grep 9283 LISTEN 0 5 :::9283 :::* #修改配置文件抓取数据,监控ceph [root@xiaomao prometheus]# vim prometheus.yml #在文件最后添加 - job_name: 'ceph' static_configs: - targets: ['192.168.146.134:9283'] #重启服务 [root@xiaomao prometheus]# systemctl restart prometheus

    查看是否抓取到ceph的数据

    Grafana

    下载地址

    https://grafana.com/grafana/download

    安装Grafana

    [root@xiaomao ~]# yum -y install grafana-6.6.1-1.x86_64.rpm

    启动Grafana

    [root@xiaomao ~]# systemctl enable grafana-server [root@xiaomao ~]# systemctl start grafana-server

    查看监听端口

    [root@xiaomao ~]# ss -ntl | grep 3000 LISTEN 0 128 :::3000 :::*

    浏览器访问

    初始用户名和密码均为admin,首次登录后会提示设置新的密码

    配置Dashboard

    选择Prometheus

    导入Dashboard

    模板编号查找地址https://grafana.com/grafana/dashboards

    查看监控

    监控内存、硬盘等信息

    拷贝对应的编号

    开始导入

    查看监控

    Processed: 0.009, SQL: 9