Ceph pg関連運転次元スクリプトツール(一)

6755 ワード

概要
生産環境の中で、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

HDDの温度/警告レベルの照会
げんり
  本質は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関連パラメータ
  ネット上にはもっと詳しい説明情報がありますので、興味のある人は見てみてください.関連資料と実際の経験に基づいて、51871881971998をキー検出項目とし、残りはハードディスクの破損の程度として参照します.
属性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=512 Byteである.
242
Total_LBAs_Read
ディスクは工場出荷時から全部読み取ったデータで、単位はLBAS=512 Byteである.
(未完)