91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用iostat和LLD實現zabbix監控IO性能

發布時間:2020-07-18 22:47:06 來源:網絡 閱讀:7442 作者:雪梨冰糖心 欄目:移動開發

本文主要分為3個部分

第一部分 前言,主要說說需求和獲取數據的命令

第二部分 zabbix,主要說如何利用lld獲得想要監控的數據

第三部分 ansible,主要提供一個ansible playbook來分發該監控所需的文件

第一部分 前言部分

最近有一個需求是對系統的IO進行監控,最后決定從iostat獲取數據。

這是具體的命令:

iostat -x -d -m 1 3

參數簡單解析:

-x     Display  extended statistics 

-d     Display the device utilization report

-m     Display statistics in megabytes per second instead of blocks or kilobytes per second


那么為什么要 1 3呢?

我們用

iostat -x -d -m 1

多次測試,會發現第一次輸出的值變動不大,第二次,第三次輸出的值會有一定的變化,因此我更偏向與取第二次,第三次的值做平均

命令的輸出格式如下:

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util

可以較好地滿足我們的監控需求


第二部分 zabbix部分

接下來,我們就用zabbix的LLD來自動發現當前系統的Device值

cat /etc/zabbix/scripts/io_discovery.py

#!/bin/env python
import os
import commands
(status,output) = commands.getstatusoutput("iostat -x -d -m  | sed -n '4,$p' | grep -v ^$|  awk '{print $1}'")
DISKS = output.split()
print '{'
print '\t"data":['
count = 1
for key in DISKS:
    print '\t{'
    if count < len(DISKS):
        print '\t\t"{#DISK}":"%s"},' % key
    else:
        print '\t\t"{#DISK}":"%s"}' % key
    count += 1
print '\t]'
print '}'


拿到Device以后,用腳本來獲取對應的數值

cat /etc/zabbix/scripts/userparameter_diskio.py

#!/bin/env python
import commands
import sys

DISK = sys.argv[1]
cmdline = 'cat /tmp/iostat.txt | grep %s' % DISK
(status,output) = commands.getstatusoutput(cmdline)
output_list = output.split()
value = zip(*[iter(output_list)]*12)

if sys.argv[2] == "rrqmps":
    print ((float(value[1][1])+float(value[2][1]))/2)
elif sys.argv[2] == "wrqmps":
    print ((float(value[1][2])+float(value[2][2]))/2)
elif sys.argv[2] == "rps":
    print ((float(value[1][3])+float(value[2][3]))/2)
elif sys.argv[2] == "wps":
    print ((float(value[1][4])+float(value[2][4]))/2)
elif sys.argv[2] == "rspeed":
    print ((float(value[1][5])+float(value[2][5]))/2)
elif sys.argv[2] == "wspeed":
    print ((float(value[1][6])+float(value[2][6]))/2)
elif sys.argv[2] == "await":
    print ((float(value[1][9])+float(value[2][9]))/2)
elif sys.argv[2] == "svctm":
    print ((float(value[1][10])+float(value[2][10]))/2)
elif sys.argv[2] == "util":
    print ((float(value[1][11])+float(value[2][11]))/2)

這里還需要一個crontab來生成/tmp/iostat.txt文件

* * * * * iostat -x -d -m 1 3 > /tmp/iostat.txt


接著寫一個自定義配置文件

cat /etc/zabbix/zabbix_agentd.d/userparameter_diskio.conf

UserParameter=diskio_discovery[*],python /etc/zabbix/scripts/io_discovery.py
UserParameter=diskio[*],python /etc/zabbix/scripts/userparameter_diskio.py  $1 $2


接下來需要在zabbix上建一個監控模板,模板在附件里面,本模板適用于zabbix3.2,其他版本請自行測試,可能需要做一些修改


都準備以后可以開始使用了

首先把相應的腳本和配置文件放到客戶機上面,添加cron

接著把模板導入,在模板里面添加機器,然后restart zabbix 客戶端


第三部分 Ansible部分

如果你有使用ansible,這里可以提供一個playbook,用來分發腳本等工作

- hosts: 客戶機
  tasks:
    - name: mkdir the scripts dir 
      file: path=/etc/zabbix/scripts state=directory
    - name: copy conf files
      copy: src=/etc/zabbix/zabbix_agentd.d/userparameter_diskio.conf   dest=/etc/zabbix/zabbix_agentd.d/
    - name: copy io_discovery.py 
      copy: src=/etc/zabbix/scripts/io_discovery.py   dest=/etc/zabbix/scripts/io_discovery.py mode=0755
    - name: copy userparameter_diskio.py 
      copy: src=/etc/zabbix/scripts/userparameter_diskio.py   dest=/etc/zabbix/scripts/userparameter_diskio.py mode=0755
    - name: add cron
      cron: name='add iostat cron'  minute='*' hour='*' day='*' month='*' weekday='*' job='iostat -x -d -m 1 3 > /tmp/iostat.txt' state=present
      notify:
      - restart zabbix-agent
  handlers:
    - name: restart zabbix-agent
      service: name=zabbix-agent state=restarted enabled=yes



附件:http://down.51cto.com/data/2368552
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉南县| 阳新县| 会同县| 宜川县| 曲阜市| 雅安市| 临夏县| 昌都县| 枣阳市| 河曲县| 罗江县| 青田县| 安龙县| 竹溪县| 定结县| 磴口县| 凭祥市| 大厂| 永春县| 阿坝县| 仙居县| 岑巩县| 西盟| 龙口市| 汉川市| 通山县| 老河口市| 塘沽区| 平泉县| 鄂伦春自治旗| 开平市| 平舆县| 光泽县| 逊克县| 勃利县| 隆尧县| 旬邑县| 龙口市| 东乡| 夏邑县| 奉贤区|