mysql监控指标 简书_zabbix 监控mysql nginx

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

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

重启agent

4测试能否获取到值

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

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

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

mysql.status[3306,Threads_connected]

mysql.status[3306,Com_select]

mysql.status[3306,Bytes_received]

mysql.status[3306,Bytes_sent]

写一个测试的程序测一下

[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

==============================================================================

Mysql主从监控的必要性

1.如果发生主从同步异常,业务会出问题

2.如果从库是用来备份的,会导致数据丢失

Mysql主从同步监控说明

1.从库运行show slave status\G可以来查看主从同步信息

Slave IO Running 可以观察从库的IO进程是否正常,IO进程用于同步二进制日志

Slave SQL Running 可以观察从库的SQL进程是否正常,SQL进程用于执行二进制日志

Seconds Behind Master代表主从同步的延时时间

1.监控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

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

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

重启Agent

4.创建监控模板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]

5.定义解决器来判断主从同步是否异常

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

1.php检查master进程是否存活

2.redis监控

你可能感兴趣的:(mysql监控指标,简书)