ceph pg相关运维脚本工具(一)

概述

  在生产环境中,经常需要对ceph集群进行一些调优,维护,设备替换等操作,为了简化和方便操作,陆续写过一些简单的小脚本工具,现整理出来。

共同PG检测工具

使用场景

  在一个双副本环境中,已经有部分osd离线(down and in)的状态,此时集群部分pg处于单副本状态,此时有另外一些osd设备(硬盘原因,机器原因)需要替换或者离线,预估受影响的pg;或者想查询出某些osd共同承载了哪些pg。

脚本

  在脚本所在目录要查询的osd编号写入warnosdlist中,执行脚本,返回对应的pg编号。

root@mon0:/opt/pgtools# cat warnosdlist
10
15
29
40
66
78
root@mon0:/opt/pgtools# cat check_warnosd_pg 
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import re,os
osd=[]

os.system("""ceph pg dump|grep 2019|grep "]" > pgmap""")
with open ('warnosdlist') as f:
    for i in f:
        osd.append(i.strip())

with open ('pgmap') as pg:
    for p in pg:
        info=p.strip()
        p1="\d+,\d+"
        pa=re.compile(p1)
        oid=pa.findall(info)[0]
        q="\d+"
        qa=re.compile(q)
        s=qa.findall(oid)
        if s[0] in osd and s[1] in osd:
            print p

硬盘温度/告警级别查询

原理

  本质是利用smartctl工具检测硬盘相关的几个参数,直接将命令粘贴到交互界面执行即可。

温度异常检测
root@mon0:~# cat hotdisk.sh 
#!/bin/bash
lsblk | awk '/disk/{print "/dev/"$1}' | while read dev; do echo -n "$dev : "; smartctl -A $dev | grep Tem|grep 190;echo "";done
告警级别
root@mon0:~# cat hddcheck.sh 
#!/bin/bash
lsblk | awk '/disk/{print "/dev/"$1}' | while read dev; do echo -n "$dev : "; smartctl -A $dev | awk '/^ *(5|187|188|197|198)/{if($NF > 0) count++} END {if(count>=4) print "err"; else if(count>=3) print "warning";  else if(count>0) print "some wrong"; else print "ok"}'; done
smartctl相关参数

  网上有更详细的说明信息,感兴趣的可以看一下。根据相关的资料和实际经验,将5,187,188,197,198作为关键检测项,其余的作为参考,作为硬盘的损坏程度。

属性ID 属性名称 属性含义
1 Raw Read Error Rate 底层数据读取错误率
2 Throughput Performance 磁盘读写通量性能
3 Spin Up Time 主轴起旋时间
4 Start/Stop Count 启停次数
5 Reallocated_Sector_Ct 重映射扇区数
10 Spin_Retry_Count 主轴起旋重试次数
11 Calibration_Retry_Count 磁盘校准重试次数
12 Power_Cycle_Count 磁盘通电次数
187 Reported Uncorrectable Errors 无法校正的错误
188 Command Timeout 命令超时
194 Temperature_Celsius 温度
197 Current Pending Sector Count 当前待映射扇区计数
198 Offline Uncorrectable Sector Count 脱机无法校正的扇区计数
199 UDMA_CRC_Error_Count 奇偶校验错误率
200 Write_Error_Rate 写错误率
241 Total_LBAs_Written 磁盘自出厂总共写入的的数据,单位是LBAS=512Byte
242 Total_LBAs_Read 磁盘自出厂总共读取的数据,单位是LBAS=512Byte

(未完)

你可能感兴趣的:(ceph,运维)