zoukankan      html  css  js  c++  java
  • zabbix监控服务

    1.模板的重要

    1.手动添加监控比较麻烦,监控项 -> 图形 -> 触发器。

    问题:
    		1.例如: 100台服务器需要检查81端口
    		2.例如: 100台服务器81改成82
    解决:
    		使用模板可以解决以上问题, 只需要修改一下模板,然后所有的主机都生效
    

    2.两种模板

    系统自带模板
    自定义模板
    
    自定义模板的使用
    1.创建模板,模板得属于某个主机组(Templates)
    2.在模板中创建监控项目、触发器、创建图形
    3.新增监控主机时添加对应的模板
    4.更改模板的监控项,所以使用模板的主机都会自动变更
    建议: 监控的时候都使用模板, 因为模板添加啥的都方便,修改也比较方便
    

    3.zabbix监控windows

    环境:
    1.zabbix server的ip:10.0.0.71
    2.被监控windows的ip:10.0.0.1
    
    1.下载Zabbix Agent
    
    https://www.zabbix.com/downloads/4.0.14/zabbix_agents-4.0.14-win-amd64.zip
    
    2.Windows安装zabbix agent
    编辑配置文件D:zabbix_agents-4.0.14-win-amd64confzabbix_agentd.conf
        Server=10.0.0.71
    
    3.运行cmd,将zabbix命令注册为服务(使用管理员) services.msc
    "d:zabbix_agents-4.0.14-win-amd64inzabbix_agentd.exe" --config d:zabbix_agents-4.0.14-win-amd64confzabbix_agentd.conf --install
    
    4.cmd运行
    
        查看监听netstat -an|find "10050"
    ---------------------------------------------------
    
    5.zabbix_get获取windows信息
        zabbix_get -s xxx -k system.uname
        zabbix_get -s xxx -k vm.memory.size[free]
        zabbix_get -s xxx -k vfs.fs.size[C:,pfree]
    
    6.windows防火墙放开10050端口
        1.防火墙关闭的可以跳过这步
        2.高级设置->入站规则->新建规则->端口->10050->允许连接->所有
    
    7.zabbix页面上添加windows主机
        1.直接应用windows模板
        2.验证Windows监控是否正常
    
    编写一个最简单的bat脚本D:zabbix_agents-4.0.14-win-amd64echo.bat
    @echo off
    echo "100"
    
    zabbix配置添加D:zabbix_agents-4.0.14-win-amd64confzabbix_agentd.conf
    UserParameter=echo.test,D:zabbix_agents-4.0.14-win-amd64echo.bat
    

    4.zabbix监控Nginx状态

    1.监控Nginx什么内容
    	监控Nginx⑦中状态
    
    2.怎么监控
    	1.开启Nginx stub status 模块
    	2.使用curl命令获取stub_status的数据
    	3.将获取数据的方法封装为一个又一个的监控项
    
    3.实施监控
    	1.开启nginx stub_status状态
    
    ​	2.编写脚本,提取nginx status的指标
    ​	[root@web01 scripts]# cat nginx_status.sh 
    ​	Nginx_status_file=/tmp/nginx_status.tmp
    ​	Nginx_status_name=status.oldxu.com
    ​	Nginx_status_path=/nginx_status
    ​	curl -sH host:${Nginx_status_name} http://127.0.0.1:80${Nginx_status_path} > ${Nginx_status_file}
    
    ​	case $1 in
    ​		active)
    ​			echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ]
    ​			;;
    ​		accepts)
    ​			echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ]
    ​			;;
    ​		handled)
    ​			echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ]
    ​			;;
    ​		requests)
    ​			echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ]
    ​			;;
    ​		reading)
    ​			awk 'NR==4 {print $2}' ${Nginx_status_file}
    ​			;;
    ​		writing)
    ​			awk 'NR==4 {print $4}' ${Nginx_status_file}
    ​			;;
    ​		waiting)
    ​			awk 'NR==4 {print $NF}' ${Nginx_status_file}
    ​			;;
    ​		*)
    ​			echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]"
    ​			;;
    ​	esac
    
    ​	3.配置zabbix-agent, 添加自定义监控项
    ​	[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf 
    
    UserParameter=nginx_status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh "$1"
    
    ​	4.重启zabbix-agent
    
    
    ​		
    
    ​	5.zabbix-server使用zabbix-get获取监控项的值
    ​	[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[active]
    ​	10
    ​	[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[requests]
    ​	20
    ​	
    ​	6.登录zabbix-web
    ​		1.创建模板
    ​		2.创建监控项
    ​		3.创建图形
    ​		4.创建触发器
    ​		5.关联对应主机
    

    在这里插入图片描述

    5.nginx日志监控 { 200 300 301 304 404 403 500 401 .... 这些状态出现的次数}

    	1.提取日志
    ​	awk '{print $9}' /var/log/nginx/access.log|grep -c "302"
    ​	
    ​	2.自定义监控项,支持传参
    ​	[root@web01 ~]# cat  /etc/zabbix/zabbix_agentd.d/nginx.conf 
    ​	UserParameter=nginx_status_code[*], awk '{print $9}' /var/log/nginx/access.log|grep -c "$1"
    
    ​	[root@web01 ~]# systemctl restart zabbix-agent
    
    ​	3.server使用zabbix-get获取
    ​	[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[200]
    ​	10000
    ​	[root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[302]
    ​	327556
    
    ​	4.登录zabbix-web
    ​		1.创建模板
    ​		2.创建监控项
    ​		3.创建图形
    ​		4.创建触发器
    ​		5.关联对应主机
    

    在这里插入图片描述

    6.zabbix监控php

    1.监控php端口
    2.监控php进程    master  worker
    3.监控php状态
    	
    实施:
    1.如何开启php状态
    2.获取php状态中重要的指标
    3.编写脚本支持传参
    
    
    1.开启php的状态模块
    [root@web01 ~]# cat /etc/php-fpm.d/www.conf
    ....
    pm.status_path = /fpm_status
    ....
    
    
    
    2.配置nginx,将http请求转发给php处理
    [root@web01 conf.d]# cat status.oldxu.com.conf 
    server {
    	listen 80;
    	server_name status.oldxu.com;
    	location /fpm_status {
    		fastcgi_pass 127.0.0.1:9000;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		include fastcgi_params;
    	}
    }
    
    
    
    3.php-fpm状态指标含义
    [root@web01 conf.d]# curl -H Host:status.oldxu.com http://127.0.0.1/fpm_status
    pool:                 www
    process manager:      dynamic
    start time:           20/Nov/2019:15:15:19 +0800
    start since:          200
    accepted conn:        22	#当前池接受的请求数
    listen queue:         0		#请求队列,如果这个值不为0,那么需要增加FPM的进程数量
    max listen queue:     0		#请求队列最高的数量
    listen queue len:     128	#socket等待队列长度
    idle processes:       5		#空闲进程数量
    active processes:     1		#活跃进程数量
    total processes:      6		#总进程数量
    max active processes: 1		#最大的活跃进程数量(FPM启动开始计算)
    max children reached: 0		#超过最大进程数的峰值的次数,如果不为0,需要调整进程的最大活跃进程数量
    
    4.编写取值脚本
    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh 
    #!/usr/bin/bash
    
    fpm_status_file=/tmp/fpm_status.tmp
    fpm_status_name=status.oldxu.com
    fpm_status_path=/fpm_status
    
    curl -sH host:${fpm_status_name} http://127.0.0.1:80${fpm_status_path} > ${fpm_status_file}
    
    case $1 in
    	accepted_conn)
    		awk '/accepted conn:/{print $NF}' ${fpm_status_file}
    		;;
    	listen_queue)
    		awk '/^listen queue:/{print $NF}' ${fpm_status_file}
    		;;
    	max_listen_queue)
    		awk '/^max listen queue:/{print $NF}' ${fpm_status_file}
    		;;
    	active_processes)
    		awk '/^active processes:/{print $NF}' ${fpm_status_file}
    		;;
    	idle_processes)
    		awk '/^idle processes:/{print $NF}' ${fpm_status_file}
    		;;
    	total_processes)
    		awk '/^total processes:/{print $NF}' ${fpm_status_file}
    		;;
    	max_active_processes)
    		awk '/^max active processes:/{print $NF}' ${fpm_status_file}
    		;;
    	max_children_reached)
    		awk '/^max children reached:/{print $NF}' ${fpm_status_file}
    		;;
    	*)
    		echo "USAGE: $0 [accepted_conn|listen_queue|max_listen_queue|active_processes|idle_processes|total_processes|max_active_processes|max_children_reached]"
    		;;
    esac
    
    5.自定义监控项,支持传参
    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.conf
    
    UserParameter=fpm.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh "$1"
    
    [root@web01 ~]# systemctl restart zabbix-agent
    	
    6.server使用zabbix-get获取
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[accepted_conn]
    2031
    [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[max_active_processes]
    50
    
    7.登录zabbix-web
    	1.创建模板
    	2.创建监控项
    	3.创建图形
    	4.创建触发器
    	5.关联对应主机
    

    在这里插入图片描述

    7.Mysql的基础监控

    1.进程存活
    2.检测端口

    Mysql的高级监控说明
    	Mysql提供show global status可以实现对Mysql的高级监控
    	高级监控包含监控Mysql连接数,增删改查数,流量等
    	
    其他的监控mysql的方式
    	天兔		(文档)
    	percona		(视频)
    

    监控命令详解mysql -uroot -poldxu.com -e 'show global status'

    Threads_connected:连接数
    	Com_select:查询总量
    	Com_insert:插入总量
    	Com_update:更新总量
    	Com_delete:删除总量
    	Bytes_received: 流入总流量
    	Bytes_sent:流出总流量
    	Slow_queries:慢查询总量
    

    1.编写取值脚本check_mysql.sh

    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh
    #!/usr/bin/bash
    
    port=$1
    key=$2
    mysql -uroot -poldxu.com -P${port} -e "show global status" |grep "${key}s" |awk '{print $2}'
    

    2.测试监控Shell脚本

    [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh 3306 Threads_connected
    

    3.Zabbix自定义监控项

    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
    UserParameter=mysql.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh  "$1" "$2" 2>/dev/null
    

    4.重启agent

     *systemctl restart zabbix-agent.service* 
    

    5.测试能否获取到值

    	zabbix_get -s xxx -k mysql.status[3306,Threads_connected]
    	zabbix_get -s xxx -k mysql.status[3306,Com_insert]
    

    6..使用Template DB MySQL模板监控Mysql 利用自带的模板改一改

    mysql.status[3306,Threads_connected]
    	mysql.status[3306,Com_select]
    	mysql.status[3306,Bytes_received]
    	mysql.status[3306,Bytes_sent]
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    7.写一个测试的程序测一下

    [root@web01 ~]# cat mysql.sh 
    for i in {1..1000}
    do
    mysql -uroot -poldxu.com -h 127.0.0.1 -e "create database IF NOT EXISTS db;
    	use db;
    	DROP TABLE IF EXISTS test${i};
    	create table test${i}(id int);
    	insert into db.test${i} values (123456);
    	select * from db.test${i};
    	delete from test${i} where id=123456;"
    
    done
    

    在这里插入图片描述

    8.Mysql主从监控的必要性

    1.如果发生主从同步异常,业务会出问题
    2.如果从库是用来备份的,会导致数据丢失
    

    Mysql主从同步监控说明

    1.从库运行show slave statusG可以来查看主从同步信息
    Slave IO Running	可以观察从库的IO进程是否正常,IO进程用于同步二进制日志
    Slave SQL Running	可以观察从库的SQL进程是否正常,SQL进程用于执行二进制日志
    Seconds Behind Master代表主从同步的延时时间
    

    1.配置数据库主从环境:

    [root@db01 ~]# vim /etc/my.cnf +10  添加
    log-bin
    server-id=51
    
    [root@db01 ~]# systemctl restart mariadb
    MariaDB [(none)]> grant replication slave, replication client on *.* to 'all'@'%' identified by '123456';
    Query OK, 0 rows affected (0.15 sec)
    
    [root@db01 ~]# mysqldump -uroot --all-databases --single-transaction --master-data=1 --flush-logs > /root/db-$(date +%F)-all.sql
    
    [root@web01 ~]# vim /etc/my.cnf
    server-id=7
    
    [root@db01 ~]# scp db-2019-11-20-all.sql root@172.16.1.7:/root/
    [root@web01 ~]# mysql -uroot < db-2019-11-20-all.sql 
    [root@web01 ~]# systemctl restart mariadb
    
    [root@web01 ~]# MariaDB [(none)]> change master to master_host='master1',master_user='all',master_password='123456';
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> start slave;
    MariaDB [(none)]> show slave statusG
    

    2.监控Mysql主从的Shell脚本mysql_slave_status.sh

    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh
    #!/usr/bin/bash
    port=$1
    key=$2
    mysql -uroot -poldxu.com -P${port} -e "show slave statusG"|grep "${key}:"|awk '{print $2}' 2>/dev/null
    

    3.Shell脚本测试

    [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_SQL_Running
    Yes
    [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_IO_Running
    Yes
    [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Seconds_Behind_Master
    0
    

    4.Zabbix自定义Key监控Mysql主从

    [root@web01 ~]# cat  /etc/zabbix/zabbix_agentd.d/mysql.conf 
    UserParameter=mysql.slave.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh "$1" "$2" 2>/dev/null
    

    5.重启Agent

    systemctl restart zabbix-agent.service
    

    6.创建监控模板Template Mysql Slave Status

    mysql.slave.status[3306,Slave_IO_Running]
    mysql.slave.status[3306,Slave_SQL_Running]
    mysql.slave.status[3306,Seconds_Behind_Master]
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    7.定义触发器来判断主从同步是否异常

    1.触发器一: 两个状态都要为Yes 
    {Template MySQL Slave Status:mysql.slave.status[3306,Slave_IO_Running].str(Yes)}=0 or {Template MySQL Slave Status:mysql.slave.status[3306,Slave_SQL_Running].str(Yes)}=0
    

    在这里插入图片描述

     2.触发器二: 延时不能超过100 {Template MySQL Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}>100  
    

    在这里插入图片描述 在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    16日彻底去除安卓应用的内置广告
    配台600元的主机套装 自己组装 全新
    带记录功能的计算器
    华为8812 进入工程模式 和打电话黑屏问题
    买平板 四核 500~600左右对比
    querySelector()方法
    Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。
    Android实用代码七段(二)
    Android实用代码七段(三)
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/baozexu/p/11922405.html
Copyright © 2011-2022 走看看