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-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

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 status\G可以来查看主从同步信息
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 status\G

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 status\G"|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

zabbix监控服务的更多相关文章

  1. zabbix监控服务部署脚本

    搭建平台脚本: #!/bin/bash #zabbix监控服务部署 #脚本使用前提:yum搭建,nginx-1.12.2源码包,zabbix-3.4.4源码包,要求源码包尽量在单一目录下,最好在默认管 ...

  2. zabbix监控服务部署

    目录 zabbix监控服务部署 1. zabbix介绍 1.1 zabbix的组件 1.2 zabbix的进程 1.3 zabbix常用术语 2. zabbix工作原理 3. zabbix监控架构 4 ...

  3. centos6.5安装部署zabbix监控服务端和客户端

    部署zabbix服务端需要LNMP环境(nginx,mysql,php),其它数据库也可以,我这里使用mysql,关于LNMP环境部署,可以参考我的另一遍文章:http://www.cnblogs.c ...

  4. 【zabbix部署】基于linux安装zabbix监控服务和被监控服务

    环境配置 zabbix_server:10.0.0.1 zabbix_agentd:10.0.0.1,10.0.0.2(暂定) 操作系统:centos7.6 安装环境配置 1. LNMP环境 zabb ...

  5. CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...

  6. 四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务

     1.常用系统监控命令 查看内存信息 查看交换分区信息 查看磁盘信息 查看CPU信息 查看网卡信息 查看端口信息 查看网络连接信息   一般企业做监控的目的:实时报告系统状态,提前发现系统的问题. 监 ...

  7. zabbix监控服务搭建

    命令配置 浏览器配置: 检查必须全部ok(若有warning,检查是否漏装包,重启php-fpm服务) 数据库信息 主机名(zabbix server ip).端口号(默认).名字(随意) 配置摘要 ...

  8. Zabbix 监控服务

    熟悉了解一些  zabbix 基础项目监控 zabbix_get 相关操作 :获取 item 监控数据 基本格式: -s --host: 指定客户端主机名或者IP -p --port:客户端端口,默认 ...

  9. 04.Linux系统-Zabbix监控服务安装部署

    一.环境准备 操作系统:CentOS_Server_7.5_x64_1804.iso 部署组件:Zabbix 二.操作步骤: Zabbix_Server安装部署 2.0.安装依赖组件 [root@lo ...

随机推荐

  1. 准确率、精确率、召回率、F-Measure、ROC、AUC

    先理解一下正类(Positive)和负类(Negetive),比如现在要预测用户是否点击了某个广告链接,点击了才是我们要的结果,这时,点击了则表示为正类,没点击则表示为负类. TP(True Posi ...

  2. sqlserver 行转列、字符串行转列、自动生产行转列脚本

    行转列,老生常谈的问题.这里总结一下网上的方法. 1.生成测试数据: CREATE TABLE human( name ), --姓名 norm ), --指标 score INT , --分数 gr ...

  3. Pycharm导入Django项目

    Pycharm导入Django项目 添加项目:file-->open,找到项目所在的位置打开项目 添加django后台项目路径 file-->settings-->Languages ...

  4. 【nagios监控】基于linux搭建nagios监控

    nagios工作原理 nagios的功能是监控服务和主机,但是其自身并不包括这些功能,所有的监控.检测功能都是通过各种插件来完成的. 启动nagios后,它会周期性的自动调用插件去检测服务器状态,同时 ...

  5. Shell命令的执行优先级

    Shell内置命令.外部命令.别名.函数.保留关键字的优先级 在Shell中,有5种可调用的东西:别名(alias).函数(function).shell保留关键字.shell内置命令.外部命令. 如 ...

  6. C# -- LinkedList的使用

    C# -- LinkedList的使用 private static void TestLinkList() { LinkedList<Person> linkListPerson = n ...

  7. pycharm查看函数用法,参数信息的设置方法

    在编写python程序时,常常会遇到一些不太常见的函数,有时候又不想去百度,那么,使用pycharm设置快速显示函数的参数和用法,这个方法十分快捷方便. step1. file -> setti ...

  8. day 27-1 反射、内置方法

    反射 反射:通过字符串来映射到对象的属性 class People(): def __init__(self, name, age): self.name = name self.age = age ...

  9. 3.Python常用逻辑运算符

    #header { /* Initially hidden to prevent FLOUC */ display: none; background-color: #fff; /* Display ...

  10. 一文读懂AOE到底是什么!

    一.背景 1.1 AoE是什么 AoE (AI on Edge) 是一个滴滴开源的终端侧AI集成运行时环境(IRE).以 “稳定性.易用性.安全性” 为设计原则,帮助开发者将不同框架的深度学习算法轻松 ...