1、监控TCP 连接数
#(1)创建conf文件引用脚本
# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/all.conf #或者
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=linux_status[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp_conn_plugin.sh “$1” “$2” #添加用户自定义参数
#(2)配置agent 配置文件导入自定义配置那文件
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
263 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
#(3)重启agent服务
# /etc/init.d/zabbix_agentd restart
#(4)在被监控服务器为zabbix 用户授权:
# vim /etc/sudoers
99 zabbix ALL =(ALL) NOPASSWD: ALL
#(5)测试获取数据:
[root@zabbix-server src]# zabbix_get -s 192.168.15.204 -p 10050 -k "linux_status["tcp_status","LISTEN"]"
11
#(6)导入并关联模板:
#(7)验证连接数据:
2、监控memcache
#(1)监控脚本内容:
#!/bin/bash
memcached_status(){
M_PORT=$1
M_COMMAND=$2
echo -e "stats\nquit" | nc 127.0.0.1 "$M_PORT" | grep "STAT $M_COMMAND " | awk '{print $3}'
}
main(){
case $1 in
memcached_status)
memcached_status $2 $3
;;
esac
}
main $1 $2 $3
#(2)调用脚本:
[root@zabbix-web2 zabbix_agentd.conf.d]# cat all.conf
UserParameter=linux_status[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp_conn_plugin.sh "$1" "$2" "$3"
UserParameter=memcache_status[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/memcache.sh "$1" "$2" "$3“
#测试脚本:
# bash memcache.sh memcached_status 11211 curr_connections
#(3)/etc/init.d/zabbix_agentd restart
#(4)创建模板:
#(5)创建监控项:
#(6)创建图形:
#(7)创建报警:
#(8)关联主机并验证数据:
3、监控redis:监控连接数和内存使用
#(1)安装Zabbix Server端与数据库
#脚本内容:
# vim redis.sh
#!/bin/bash
redis_status(){
R_PORT=$1
R_COMMAND=$2
(echo -en "INFO \r\n";sleep 1;) | nc 127.0.0.1 "$R_PORT" > /usr/local/zabbix/redis_"$R_PORT".tmp REDIS_STAT_VALUE=$(grep ""$R_COMMAND":" /usr/local/zabbix/redis_"$R_PORT".tmp | cut -d ':' -f2)
echo $REDIS_STAT_VALUE
}
help(){
echo "${0} + redis_status + PORT + COMMAND"
}
main(){
case $1 in
redis_status)
redis_status $2 $3
;;
*)
help
;;
esac
}
main $1 $2 $3
#Server端验证脚本:
# bash redis.sh redis_status 6379 connected_clients
# zabbix_get -s 192.168.15.205 -p 10050 -k "redis_status[redis_status,6379,connected_clients]"监控redis
#(2)编辑配置文件调用脚本
#(3)重启zabbix agent服务
#(4)创建主动式模板
#(5)关联到主机并验证数据监控redis
#(6)添加内存使用并验证数据:
4、监控Nginx:SNMP 服务配置
#Centos服务器安装配置SNMP:
[root@s6 ~]# yum install -y net-snmp
[root@s6 ~]# vim /etc/snmp/snmpd.conf
# sec.name source community
com2sec notConfigUser default 123456 #第一步:设置团体认证
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser #第二步:将团体名称notConfigUser 关联至组notConfigGroup
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1 #创建一个view,并对其授权可访问的OID范围
access notConfigGroup “” any noauth exact systemview none none #将组notConfigGroup关联至systemview 从未完成组的授权
#测试能否通过SNMOP采集数据:
[root@s6 ~]# systemctl restart snmpd
[root@s1 ~]# snmpwalk -v 2c -c 123456 172.18.200.106 .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
[root@s1 ~]# snmpwalk -v 2c -c 123456 172.18.200.106 .1.3.6.1.4.1.2021.4.3.0
#Zabbix 添加主机
#Zabbix 主机关联SNMP模板
#Zabbix 验证SNMP 数据
5、监控MySQL
#(1)部署mysql 主从同步,需要配置不同的server id并开启bin log
#Master mysql:
[root@zabbix-web1 apps]# cat /etc/my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
server-id=10
log-bin=/data/mysql/master-log
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/tmp/mysql.sock
#重启并设置同步账户:
/etc/init.d/mysqld restart
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'rsync-user'@'192.168.15.%' IDENTIFIED BY '123456';
#(2)部署mysql 主从同步
#Slave mysql:
[root@zabbix-serversrc]# cat /etc/my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
relay-log = /data/mysql
server-id=20
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/tmp/mysql.sock
# /etc/init.d/mysqld restart
#(3)导出master的mysql 数据:
/usr/local/mysql/bin/mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock
tables > /opt/backup.sql
#复制到slave并导入,Position位置在sql文件:
# mysql < /opt/backup.sql
mysql> CHANGE MASTER TO
mysql> CHANGE MASTER TO MASTER_HOST='192.168.15.203',MASTER_USER='rsync
user',MASTER_PASSWORD='123456',MASTER_LOG_FILE='bin-log.000003',MASTER_LOG_POS=120;
start slave;
stop slave;
reset slave;
#(4)安装procona
# yum install php php-mysql –y #安装php
# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm #安装模板文件
# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
– <?php
– $mysql_user = 'root';
– $mysql_pass = '';
#测试数据:
#重启zabbix agent,并在Zabbix Server导入模板zbx_mysql_export_templates
#更改模板模式为主动模式,关联到主机
#验证数据:
#注:如果无法获取数据,就要查看/tmp目录是否有一个localhost-mysql_cacti_stats.txt 这样的类似文件,如果有的话就把权限改为zabbix用户和用户组:
# chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt自定义
#(5)编写脚本监控脚本MySQL主从同步及延迟
#(6)脚本内容:
#脚本 mysql_monitor.sh
#(7)导入自定义配置:
# vim ../zabbix_agentd.conf
263 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
#(8)自定义监控项:
# vim all.conf
UserParameter=mysql_monitor[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_m
onitor.sh "$1"
#(9)确认一上配置无误后重启zabbix agentd:
# systemctl restart zabbix_agentd
#(10)创建模板监控项:
#(11)关联主机
#(12)验证数据:
6、自定义脚本监控端口和进程
#脚本process_port_check.sh 内容:
#!/bin/bash
check_process(){
NUM=`ps -ef | grep -v grep | grep -v bash | grep ${NAME} | wc -l`
if [ $NUM -eq 0 ];then
echo 100
else
echo 50
fi
}
check_port(){
ss -tnl | grep ${PORT} &> /dev/null
if [ $? -eq 0 ];then
echo 50
else
echo 100
fi
}
main(){
case $1 in
process)
NAME=$2
check_process;
;;
port)
PORT=$2
check_port;
;;
esac
}