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. Javascript - 数组去重复

    这里我使用的场景是将表单中所有的input的值塞入数组中,然后通过去除重复的值.如果数组的长度和原数组的长度一致,说明没有重复,如果不一致(少于)则报错 //通过$.unique对数组进行“去重”,再 ...

  2. /etc/named/named.conf.options中的Options参数

    listen-on port 53 { any; }; 监听在这部主机系统上面的哪个网路介面.预设是监听在localhost,亦即只有本机可以对DNS 服务进行查询,那当然是很不合理啊!所以这里要将大 ...

  3. 3种用组策略将域帐号加入本地管理员组的方法_jinifly_新浪博客

    次当前系统域帐号是怎么在第一次登录时,自动加入域客户端本地管理员组的?我猜不外乎就是脚本.计算机策略或虚拟机初始化的自动应答脚本,结果系统的前任同事找到了答案--GPO的用户策略(确切讲是用户首选项) ...

  4. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5:compile

    mvn clean mvn install mvn clean -Dmaven.test.skip=true install 出现上述问题,找不到很多类的一些方法. 解决方法: 1.Window -- ...

  5. 2016.04.28,英语,《Vocabulary Builder》Unit 20

    nom, comes from the Latin word for 'name'. nominee is 'named', [ˌnɑːmɪ'niː] n. 被提名的人, 名义人. binomial ...

  6. [听课笔记]Professor Michael Cusumano's New Book:" Strategy Rules: Five Timeless Lessons from Bill Gates, Andy Grove, and Steve Jobs"

    1. Look Forward, Reason Back Extrapolate, interpret, then tie vision to concrete actions2. Make Big ...

  7. 【IOS笔记】Resource Management in View Controllers

    Resource Management in View Controllers 视图控制器的资源管理 View controllers are an essential part of managin ...

  8. Python浮点数控制小数精度

    将精度高的浮点数转换成精度低的浮点数. 1.round()内置方法 这个是使用最多的,刚看了round()的使用解释,也不是很容易懂.round()不是简单的四舍五入的处理方式. For the bu ...

  9. mysql入门问题

    1.给列设置默认时间 在创建表的图形化界面,不能直接用函数sysdate()或者now()来设置默认当前时间,要用sql脚本创建的话就可以 IF NOT EXISTS `tb_1` THENBEGIN ...

  10. mac终端中显示tree的命令

    寻觅了良久终于找到了mac下如何在终端显示tree的命令了,作为从linux下转过来的人,还没适应mac的finder,还是喜欢在命令行下查看文件. 命令: find . -print | sed - ...