centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobackupex/Xtrabackup   第四十节课

上半节课
nagios监控脚本
自定义zabbix脚本

下半节课
mysql备份脚本
zabbix错误日志
直接送给bc做计算
gzip
innobackupex/Xtrabackup

一. 自定义nagios监控脚本
nagios:0成功, 1有问题 warning, 2 严重 critical危险的
nagios监控
exit 0 ok,1 warning,2 critical

数组赋值
sta=(1 2 0 2)
数组元素读取
${sta[0]} 从0开始

1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.sh
vim /usr/local/nagios/libexec/check_disk.sh 写入如下内容:(client上)

#!/bin/bash
row=`df -h |wc -l`
for i in `seq $row`
do
ava=`df -h |sed -n "$i"p|awk '{print $4}'`
u_per=`df -h |sed -n "$i"p|sed -n "s/\%//"p|awk '{print $5}'`
p_p=`df -h -P|sed -n "$i"p|awk '{print $6}'`
if [ "$u_per" -gt "" ];then
echo -n "$p_p CRITICAL $u_per% $ava "
sta[$i]=
elif [ "$u_per" -gt "" ];then
echo -n "$p_p WARNING! $u_per% $ava "
sta[$i]=
else
echo -n "$p_p OK $u_per% $ava "
sta[$i]=
fi
done
n=
for j in `seq $row`
do
if [ "${sta[$j]}" -gt $n ];then
n=${sta[$j]}
fi
done
exit $n

2. 保存后,修改该脚本的权限
chmod +x /usr/lib/nagios/plugins//check_disk.sh (client上)
3. 然后编辑/etc/nagios/nrpe.cfg文件
vim /etc/nagios/nrpe.cfg # 加入一行:(client上)
command[check_disk]=/usr/lib/nagios/plugins/check_disk.sh
保存,重启nrpe服务
/etc/init.d/nrpe restart (client上)
4. 检测刚才的脚本是否正常运行的方法是,到server端执行如下命令:
check_nrpe -H 192.168.0.12 -c check_disk (server上)
如果正常的话,会输出一行磁盘检测的数据,否则可能会报错。
5. 到server上添加相应的service
cd /etc/nagios/conf.d/
vim 192.168.0.12.cfg # 加入如下内容:

define service{
use generic-service
host_name 192.168.0.12
service_description check_disk
check_command check_nrpe!check_disk
max_check_attempts
normal_check_interval
}

6. 重启nagios服务
/etc/init.d/nagios restart (server上)

二. 自定义zabbix脚本
UserParameter=my.net.if[*],/usr/local/sbin/zabbix/net.sh $1 $2 有参数传入就一定要加[*]  (如果有多个自定义监控项就添加多个UserParameter)

1. 在客户端修改配置文件 /etc/zabbix/zabbix_agentd.conf
需要改动两个地方:
(1) UnsafeUserParameters=1
(2) UserParameter=my.net.if[*],/usr/local/sbin/zabbix/net.sh $1 $2 //其中UserParameter用来自定义键值key,(类似于net.if.in),自己写的脚本往往会有参数,所以需要加[*],这是固定写法,如果脚本压根就没有什么参数,那么这个[*]就省了。逗号后面就是我们写的脚本的路径了,再后面就是要用到的参数,有几个就写几。

2. 编写脚本
vi /usr/local/sbin/zabbix/net.sh //内容如下

#!/bin/bash
eth=$
io=$
net_file="/proc/net/dev"
if [ $ == "in" ]
then
n_new=`grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2`
n_old=`tail - /tmp/neti.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail - /tmp/neti.log|head -`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neti.log
grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2>>/tmp/neti.log
elif [ $ == "out" ]
then
n_new=`grep "$eth" $net_file|awk '{print $9}'`
n_old=`tail - /tmp/neto.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail - /tmp/neto.log|head -`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neto.log
grep "$eth" $net_file|awk '{print $9}'>>/tmp/neto.log
else
echo
fi

这个脚本的思路,就是通过查看文件 /proc/net/dev 里面的数值,来计算实时网卡流量,其实我算的是一个平均值。分为进和出。如果这个脚本每隔1分钟执行一次,那么算出来的流量值就是1分钟的平均值。

3. 在脚本执行前,需要先做一个操作
touch /tmp/net[io].log
date +%s >>/tmp/neti.log
grep eth0 /proc/net/dev |awk '{print $2}' >>/tmp/neti.log
date +%s >>/tmp/neto.log
grep eth0 /proc/net/dev |awk '{print $10}' >>/tmp/neto.log
chown zabbix /tmp/net[io].log

4. 检查脚本是否可用
在客户端执行
/etc/init.d/zabbix-agentd restart

在服务端执行
zabbix_get -s 192.168.31.166 -p10050 -k "my.net.if[eth0,out]"

5. 如果可以返回数值说明没问题了,接着在浏览器里面配置
组态 --> 主机 --> 项目 --> 创建两个监控项in 和out
名称 “网卡流量出入”
类型默认“zabbix代理”
键值 输入 "my.net.if[eth0,in]"
数据更新间隔 30
存档
名称 “网卡流量出”
类型默认“zabbix代理”
键值 输入 "my.net.if[eth0,out]"
数据更新间隔 30
存档

监控-》最新数据-》host166
检查是否有最新数据,是否有最新配置项

三. mysql备份脚本
1. 最简单的
#!/bin/bash
d=`date +%w`
/usr/bin/mysqldump -umylinux -pxxxxx mylinux >/data/mysqlbak/$d.sql

2. 稍微复杂的

#! /bin/bash

STORE_NAME=`date +%m%d`
STORE_NAME2=`date +%w`
STORE_DIR='/backup/mysqlbak'
REMOTE_DIR='ypl-web:/backup'
BACKUP_DIR='/data/mysql/'
exec >/var/log/mysqlbak.log >&
echo mysqlbak start `date` /etc/init.d/mysqld stop
sleep
killall - mysqld; sleep
killall - mysqld
/usr/bin/rsync -azu $BACKUP_DIR $STORE_DIR/$STORE_NAME2
/etc/init.d/mysqld start for db in ypl 1yplcc ypl913 ecshop wordpress
do
/usr/local/mysql/bin/mysqldump -uroot -p'xxx' $db >$STORE_DIR/$db-$STORE_NAME.sql
echo mysqlbak end `date` cd $STORE_DIR
for db in ypl 1yplcc ypl913 ecshop wordpress
do
gzip -f $db-$STORE_NAME.sql
done
find $STORE_DIR/*.sql.gz -mtime +6 |xargs rm -f echo remote bak start `date`
/usr/bin/rsync -azu --delete $STORE_DIR $REMOTE_DIR/
echo remote bak end `date`

3. innodb引擎,超大数据库备份

#!/bin/bash
## mysql backup daily and .
exec > /BACKUP/mysqlbackup/bak.err innb="/usr/bin/innobackupex"
opt="--user=backup \
--password=bakBAK001 \
--defaults-file=/etc/my.cnf "
bakdir="/BACKUP/mysqlbackup/whole" bak() {
$innb $opt --socket=$ $bakdir/$
} bak /tmp/mysql1.sock >/tmp/.bak
bak /tmp/mysql2.sock >/tmp/.bak find /BACKUP/mysqlbackup/whole/ -type f -mtime + |xargs rm -f

innobackupex如何安装 [url]http://www.apelearn.com/bbs/thread-1012-1-1.html[/url]

1、有没有安装过mysql 查找一下有没有ibdata1这个文件
find / -name "ibdata1" -type f

yum 安装mysql的时候看一下有没有残留的mysql文件,find / -name "ibdata1" -type f
如果有,先rm删除它,再重新yum安装mysql

2、zabbix错误日志
less /var/log/zabbix/zabbix_server.log

3、直接送给bc做计算
echo "$n/$d"|bc
echo "$n-$d"|bc
echo "$n+$d"|bc

4、gzip
gzip -f 选项强制覆盖
gzip -f 1.txt

d=$(date -d "-1day" +"%F-%T")
echo 22> /tmp/1232_$d.txt | gzip -f

5、innobackupex/Xtrabackup 
innobackupex包含Xtrabackup
innobackupex可以备份myisam和innodb
Xtrabackup 只能备份innodb
mysqldump 加 --single-transaction 选项 备份innodb表 不锁表

f

centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课的更多相关文章

  1. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  2. centos shell编程3【告警系统】 没有服务器端和客户端的概念 main.sh mon.conf load.sh 502.sh mail.php mail.sh disk.sh 第三十七节课

    centos shell编程3[告警系统]  没有服务器端和客户端的概念 main.sh mon.conf load.sh 502.sh mail.php mail.sh  disk.sh  第三十七 ...

  3. centos shell 编程-通过端口号kill对应的进程

    centos shell 编程-通过端口号kill对应的进程 方式一.端口固定 ------------------killportprocess.sh fSum() {    pid=$(lsof ...

  4. centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课

    centos shell编程5  LANMP一键安装脚本 lamp  sed  lnmp  变量和字符串比较不能用-eq  cat > /usr/local/apache2/htdocs/ind ...

  5. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  6. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  7. centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课

    centos  系统软件包管理  yum 本地yum配置  扩展源epel  rpm  清除yum缓存  yum provides "*/vim"   第十节课 你不能保证可逆化操 ...

  8. 风炫安全WEB安全学习第二十节课 反射型XSS讲解

    风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...

  9. 风炫安全web安全学习第三十节课 命令执行&代码执行基础

    风炫安全web安全学习第三十节课 命令执行&代码执行基础 代码执行&命令执行 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行 ...

随机推荐

  1. 记save函数

    在写商品修改的代码的时候,我使用到了create()函数,也使用到了save函数.但是我从表单接受过来的数据,在添加语句的时候都没成功.代码如下 function upd($goods_id){ $g ...

  2. C#安全API

    Bouncycastle库C#版 官网地址为:http://www.bouncycastle.org/csharp/. http://blog.csdn.net/popozhu/article/det ...

  3. Nginx 笔记与总结(10)Nginx 与 PHP 整合

    Apache + PHP 的编译 和 Nginx + PHP 的编译,区别: Apache 一般把 PHP 当作自己的一个模块来启动: Nginx 则是把 HTTP 请求变量(如 get,user_a ...

  4. 【翻译】Kinect v1和Kinect v2的彻底比较

      本连载主要是比较Kinect for Windows的现行版(v1)和次世代型的开发者预览版(v2),以C++开发者为背景介绍进化的硬件和软件.本文主要是对传感的配置和运行条件进行彻底的比较.   ...

  5. JQUERY 一些技巧在实际中的应用

    在jquery选择器中.继续做判断$("tr[rel!=" + id + "]").find('.status').html('--'); $("tr ...

  6. PHP自动加载__autoload的工作机制

    PHP自动加载__autoload的工作机制 PHP的懒加载lazy loading 在 2011年11月12日 那天写的     已经有 4559 次阅读了 感谢 参考或原文   服务器君一共花费了 ...

  7. Yii源码阅读笔记(十九)

    View中渲染view视图文件的前置和后置方法,以及渲染动态内容的方法: /** * @return string|boolean the view file currently being rend ...

  8. 大话数据结构(八)Java程序——双向链表的实现

    线性链表--双向链表 双向链表定义: 双向链表(double linked list): 是在单表单的每个结点中,再设置一个指向前驱结点的指针域.因此,在双向链表中的结点都有两个指针域,一个指向前驱, ...

  9. Rochester Memory Hardware Error Research Project

    http://www.cs.rochester.edu/research/os/memerror/

  10. 【转】JavaScript中的this关键字使用的四种调用模式

    http://blog.csdn.net/itpinpai/article/details/51004266 this关键字本意:这个.这里的意思.在JavaScript中是指每一个方法或函数都会有一 ...