Menu
Woocommerce Menu

图片预览,利用Zabbix动态监控磁盘I

0 Comment

应用Zabbix动态监察和控制磁盘I/O

前段时间在看Linux
I/O子系统相关的资料,须求监察和控制每台服务器的磁盘I/O,极度是MongoDB数据库服务器的磁盘I/O,由于每台服务器的磁盘名称恐怕区别等,所以须要接纳Zabbix的LLD成效来发掘磁盘并监察和控制I/O

参照小说

1.编写制定发掘磁盘的步伐

shell版本disk_discovery.sh

 #!/bin/bash

 diskarray=(`cat /proc/diskstats |grep -E
“\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b”|awk ‘{print
$3}’|sort|uniq  2>/dev/null`)

 

 length=${#diskarray[@]}

printf “{\n”

printf  ‘\t'”\”data\”:[“

for ((i=0;i<$length;i++))

do

        printf ‘\n\t\t{‘

        printf “\”{#DISK_NAME}\”:\”${diskarray[$i]}\”}”

        if [ $i -lt $[$length-1] ];then

                printf ‘,’

        fi

done

printf  “\n\t]\n”

printf “}\n”

   

$ sh disk_discovery.sh

{

    “data”:[

        {“{#DISK_NAME}”:”xvda”},

        {“{#DISK_NAME}”:”xvdb”}

    ]

}

Python版本disk_discovery.py

#/usr/bin/python

#This script is used to discovery disk on the server

import subprocess

import json

args=”cat /proc/diskstats |grep -E
‘\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s’|awk ‘{print
$3}’|sort|uniq 2>/dev/null”

t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]

 

disks=[]

 

for disk in t.split(‘\n’):

    if len(disk) != 0:

      disks.append({‘{#DISK_NAME}’:disk})

print json.dumps({‘data’:disks},indent=4,separators=(‘,’,’:’))

$ python disk_discovery.py

{

    “data”:[

        {

            “{#DISK_NAME}”:”xvda”

        },

        {

            “{#DISK_NAME}”:”xvdb”

        }

    ]

}

2.编纂获取磁盘I/O消息的剧本

选拔iostat采摘磁盘I/O音信

#/bin/sh

device=$1

item=$2

 

/usr/bin/iostat -dxkt 1 5 > /tmp/iostat_output 2>/dev/null

 

case $item in

        rrqm)

            /usr/bin/tail -n20 /tmp/iostat_output |grep
“\b$device\b”|tail -1|awk ‘{print $2}’

            ;;

        wrqm)

            /usr/bin/tail -n20 /tmp/iostat_output |grep
“\b$device\b”|tail -1|awk ‘{print $3}’

            ;;

          rps)

            /usr/bin/tail -n20 /tmp/iostat_output |grep
“\b$device\b”|tail -1|awk ‘{print $4}’

            ;;

          wps)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $5}’

            ;;

        rKBps)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $6}’

            ;;

        wKBps)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $7}’

            ;;

    avgrq-sz)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $8}’

            ;;

    avgqu-sz)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $9}’

            ;;

        await)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $10}’

            ;;

        svctm)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $11}’

            ;;

        util)

            /usr/bin/tail -n20 /tmp/iostat_output |grep “\b$device\b”
|tail -1|awk ‘{print $12}’

            ;;

esac

3.改进Zabbix agent配置文件

添加disk_status.conf

Timeout=10

### Option: UserParameter

#      User-defined parameter to monitor. There can be several
user-defined parameters.

#      Format: UserParameter=<key>,<shell command>

#      See ‘zabbix_agentd’ directory for examples.

#

# Mandatory: no

# Default:

# UserParameter=

UserParameter=disk.discovery,/usr/bin/python
/usr/local/zabbix/bin/disk_discovery.py

UserParameter=disk.status[*],/usr/local/zabbix/bin/disk_status.sh $1
$2

这里供给小心,Zabbix agent默许的Timeout值为3秒,由于此处运用iostat
-ydxkt 1
3,每间隔1秒刷新二回,刷新3次,所以要是获得磁盘音信Timeout设置时间短了的话会冒出ZBX_NOTSUPPORTED那样的错误

然后重新加载zabbix agent

4.通过在zabbix server或zabbix proxy端使用zabbix_get获取磁盘音讯

$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k
“disk.discovery”

{

    “data”:[

        {

            “{#DISK_NAME}”:”xvda”

        },

        {

            “{#DISK_NAME}”:”xvdb”

        },

        {

            “{#DISK_NAME}”:”xvdc”

        }

    ]

}

$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k
“disk.status[xvda,wps]”10.00

风流洒脱部分Zabbix相关学科集结:

安装配备遍及式监察和控制种类Zabbix 2.06

《安装配备布满式监察和控制系统Zabbix 2.06》

CentOS 6.3下Zabbix安装配置

Zabbix分布式监察和控制系统进行

CentOS 6.3下Zabbix监控apache server-status

CentOS 6.3下Zabbix监察和控制MySQL数据库参数

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文长久更新链接地址:

方今在看Linux
I/O子系统相关的素材,必要监察和控制每台服务器的磁盘I/O,极其是MongoDB数据库服务器的磁盘I/O,由于每…

libvirt 中体会容器

libvirt是一个通用的虚构化框架,扶持xen,kvm,lxc各种虚构化技巧,本文作为叁个笔记。

设置LXC为默认(默认为qemu)

export LIBVIRT_DEFAULT_URI=lxc:///

virsh -c lxc:/// 可省略

互联网设置

NAT

NAT是libvirt暗中同意自带,叫做default,通过下边包车型大巴 命令查看

virsh net-list

借使宿主机有五个网卡,eth0为内网,eth1为外网,大家得感觉容器桥接出七个接口:

#cat lan.xml

<network>

  <name>lan</name>

  <forward mode=”bridge” />

      <interface dev=”eth0″ />

 </network>

#cat wan.xml

<network>

  <name>wan</name>

    <forward mode=”bridge” />

      <interface dev=”eth1″ />

  </network>

导入配置

virsh net-define lan.xm

virsh net-define wan.xml

翻开网卡

virsh net-start lan

virsh net-autostart lan

virsh net-start wan

virsh net-autostart wan

运用容器

使用容器分享宿主机的各类财富,包含基本,各个软件包,各样库,它唯有三个独门的运维空间,疑似叁个沙箱遭遇。

创立二个名叫web的接收容器

cat web.xml

<domain type=”lxc”>

  <name>web</name>

      <memory>102400</memory>

      <os>

        <type>exec</type>

        <init>/bin/sh</init>

    </os>

    <device>

        <console type=”pty” />

    </device>

 </domain>

导入virsh

virsh define web.xml

开机运转

virsh autostart web

进去容器

virsh console web

编辑容器配置

virsh edit web

除去容器

virsh undefine web

操作系统容器

操作系统容器除了Linux内核,本身带有一站式周转条件,像是多少个chroot情状。

操作系统容器成立稍稍复杂一点

1、创设根目录

mkdir -p /lxc/CentOS7

2、下载并解压镜像 

cd /lxc/centos7

wget  xxx

xz -d rootfs.tar.xz

tar xvf rootfs.tar

3、创建xml模板

cat centos7.xml

<domain type=”lxc”>

 <name>centos7</name>

 <memory unit=”KiB”>1048576</memory>

 <currentMemory unit=”KiB”>1048576</currentMemory>

 <resource>

  <partition>/machine</partition>

 </resource>

 <os>

 <clock offset=’utc’ />

 <on_poweroff>destory</on_poweroff>

 <on_reboot>restart</on_reboot>

 <on_crash>restart<on_crash>

</devices>

 <emulator>/usr/lib/libvirt/libvirt_lxc</emulator>

 <filesystem type=’mount’ accessmode=’passthrough’>

  <source dir=’/lxc/centos7’/>

  <target dir=’/’/>

  </filesystem>

  <interface type=’network’>

  <mac address=’00:16:3e:52:87:f1’/>

    <source network=’lan’/>

  </interface>

  <console type=’pty’>

    <target type=’lxc’ port=’0’/>

    </console>

  </devices>

  </domain>

导入容器

virsh define centos7.xml

开发银行容器

virsh start centos7

virsh autostart centos7

跻身容器

virsh console centos7

终止开机运营

virsh autostart –disable centos7

退出lxc console

ctrl+]

运用 libvirt创设和管理KVM设想机

应用Libvirt连接KVM虚拟化平台

正文恒久更新链接地址:

中心得容器
libvirt是贰个通用的虚构化框架,辅助xen,kvm,lxc三种虚构化才干,本文作为一个笔记。
设置LXC为暗许(暗中认可为qemu) ex…

Angular中封装fancyBox(图片预览卡塔尔境遇标题总括,

先是在官方网址下载最新版的fancyBox(必供给去最新网址,早先信赖的jquery版本偏低卡塔尔,附上链接:

然后在类型中引用jquery,然后在援用jquery.fancybox.min.css和jquery.fancybox.min.js。

万后生可畏供给动画和鼠标滚轮滚动作效果应还可以引进他提供的连锁工具文件。

1.您能够通过链接.css和.js在您的html文件来安装fancyBox。确定保证您也加载了jQuery库。以下是用作示例的主干HTML模板

<!DOCTYPE html><HTML>
<HEAD>
 <meta charset =“utf-8”>
 <title>我的页面</ title>
 <! - CSS - >
 <link rel =“stylesheet”type =“text / css”href =“jquery.fancybox.min.css”>
</ HEAD>
<BODY>
 <! - 您的HTML内容到这里 - >
 <! - JS - >
 <script src =“// code.jquery.com/jquery-3.2.1.min.js”> </ script>
 <script src =“jquery.fancybox.min.js”> </ script>
</ BODY>
</ HTML>

2.通过通过Bower或npm安装工具安装

# Bower
bower install fancybox --save
# NPM
npm install @fancyapps/fancybox --save

3.品类中通过外部援引,通常坐落于lib文件夹下(小编动用的是这种艺术卡塔尔(قطر‎

在lib下新建一个文书目录fancy文件夹,然后引进下载好的.js和.css,在gulpfile.js增加自动化打包压缩职责,放在css目录中的lib.min.css和lib.min.js,在入口index.html中引入压缩后的文书。

以本fancyBox插件举例:

gulp.task('build-lib-js', ['build-clean-third-lib-js'], function () {
  var thirdLibJs = gulp.src([
  //外部引用js
  './lib/fancybox/jquery.fancybox.min.js',
  ])
  .pipe(uglify())
  .pipe(concat('lib.min.js', {newLine: '\r\n'}))
  .pipe(gulp.dest('js'));
  return merge.apply(null, thirdLibJs);
  });
gulp.task('build-lib-css', ['build-clean-lib-css'], function () {
  var thirdLibCss = gulp.src([
      //外部引用css
    './lib/fancybox/jquery.fancybox.min.css'
  ])
    .pipe(concat('lib.min.css', {newLine: '\r\n'})) //放在哪个文件中
    .pipe(gulp.dest('css'));//打包输出目录(在哪个目录下)
  return merge.apply(null, thirdLibCss);
});

封装在angular自定义组件中

html模块:

<img-box img-url="'xxxxxx.png'" img-style="'width:740px;margin-left:-50px;'"></img-box>

directive.js模块:

var appModule = angular.module('app.core');
appModule.directive('imgBox',imgBox);

function imgBox() {
  return {
    restrict:'AE',
    transclude:true,
    scope:{
      imgUrl:"=",
      imgStyle:'='
    },
    template:'<a class="imageBox" href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>',
    link:function (scope,elem,attrs) {
      $(".imageBox").fancybox();
    },
  }
}

合法写法:

<a href="https://c1.staticflickr.com/9/8387/29155724700_a227577206_k.jpg" data-fancybox="images" data-width="2048" data-height="1365">
    <img src="https://c1.staticflickr.com/9/8387/29155724700_58c1cb71cf_m.jpg" />
  </a>
  <a href="https://c1.staticflickr.com/9/8148/29324593462_abebaddc38_k.jpg" data-fancybox="images" data-width="2048" data-height="1366">
    <img src="https://c1.staticflickr.com/9/8148/29324593462_f890687b7a_m.jpg" />
  </a>
  <a href="https://c1.staticflickr.com/9/8487/28808645394_a0ff0fc5c1_k.jpg" data-fancybox="images" data-width="2048" data-height="1365">
    <img src="https://c1.staticflickr.com/9/8487/28808645394_9c7e6bf8a5_m.jpg" />
  </a>

  标记:data-fancybox使用图片预览插件,多个值都为images表示在一个图纸组内
data-width data-height 图像的实际宽中度 data-caption 标题消息

  启用方法: 

<script type="text/javascript">
 $("[data-fancybox]").fancybox({
 // Options will go here
 });
  </script>

  碰到的主题素材:

  1.例如利用低版本的图样预览插件,回报Cannot read property ‘msie’ of
undefined的错,原因低版本就像接收$ .browser方法,但是从jQuery
1.9起已被删除

  2.在template大概templateUrl要使用html中流传的imgUrl值,不可能直接选择imgUrl可能scope.imgUrl获取。

  方法:

template:'<a class="imageBox" href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>'

      或者

template:'<a class="imageBox" ng-href="{{imgUrl}}" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-fancybox><img style="{{imgStyle}}" ng-src="{{imgUrl}}" th:src="${cdn.url('+"'{{imgUrl}}'"+')}" /></a>'

     前边的th:src能够不用拼接,借使您项目中是用cdn上的财富图形,还行。

总结

以上所述是小编给我们介绍的Angular中封装fancyBox(图片预览卡塔尔(英语:State of Qatar)遭受题目总计,希望对我们具备助于,要是大家有别的疑问请给本身留言,小编会及时回复大家的。在这里也非常多谢我们对帮客之家网站的帮助!

首先在官方网址下载最新版的fancyBox(必需求去最新网址,在此以前正视的jquery版本偏低卡塔尔国,附上链接:…

标签:,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图