1.模板的重要
1.手动添加监控比较麻烦,监控项 -> 图形 -> 触发器。
问题:
1.例如: 100台服务器需要检查81端口
2.例如: 100台服务器81改成82
解决:
使用模板可以解决以上问题, 只需要修改一下模板,然后所有的主机都生效

2.两种模板
系统自带模板
自定义模板

自定义模板的使用
1.创建模板,模板得属于某个主机组(Templates)
2.在模板中创建监控项目、触发器、创建图形
3.新增监控主机时添加对应的模板
4.更改模板的监控项,所以使用模板的主机都会自动变更

建议: 监控的时候都使用模板, 因为模板添加啥的都方便,修改也比较方便

1.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-amd64\conf\zabbix_agentd.conf
Server=10.0.0.71

3.运行cmd,将zabbix命令注册为服务(使用管理员) services.msc
“d:\zabbix_agents-4.0.14-win-amd64\bin\zabbix_agentd.exe” --config d:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_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-amd64\echo.bat
@echo off
echo “100”

zabbix配置添加D:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf
UserParameter=echo.test,D:\zabbix_agents-4.0.14-win-amd64\echo.bat


2.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.关联对应主机
		

1.nginx的状态监控
2.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.关联对应主机

================================================================================
监控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.关联对应主机

==============================================================================
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}'