zabbix通过php脚本模拟业务访问redis验证nosql的可用性

背景:
redis通过shell脚本进行监控,没有问题,应用报警连不上redis,此时需要通过php模拟web环境进行redis的操作来确认web服务器是否能正常和redis通信

1.配置nginx,让监控redis的php脚本能通过url访问到redis

# nginx.conf的配置修改

location ~ ^/php {
    root   /data/www/html;
    location ~ php(.+\.php)(.*)$ {
    fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    include fastcgi_params;
    expires -1;
    if ($request_uri ~ "^(.*)(\?.*)$") {
        set $path_info $1;
    }
    fastcgi_param PATH_INFO $path_info;
    set $path_info $request_uri;
    }
    index  watchphp.php;
} 

2.编写监控脚本

# mkdir -p /data/www/html/php
# vim /data/www/html/php/redis_monitor.php

<?php

/*
    redis_monitor.php
    author:reblue520
    通过类似 http://127.0.0.1/php/eus_redis_monitor.php?func_name=‘store_redis‘ php web的访问来判断redis的可用性

 */
//通过获取/data/www/machine_no/.machine_no获取机房进行redis的判断

//$machine_no = trim(file_get_contents("/data/www/machine_no/.machine_no"));
//empty($machineNo) && $machine_no = ‘ws‘;
//echo "machineno=$machine_no";

// 获取机房编号
/*
$file_path = "/data/www/machine_no/.machine_no";

if(file_exists($file_path)) {
    $machine_no = file_get_contents($file_path);
    $machine_no= str_replace("\r\n","<br />",$machine_no);
    if (empty($machine_no)){
        $machine_no = ‘ws‘;
    }
}
*/

function conn_redis($redis_domain, $redis_port, $redis_pass){
    //创建 Redis 对象
    $redis = new Redis();
    // global $redis;
    $redis->connect($redis_domain, $redis_port);
    $redis->auth($redis_pass);

    //设置 redis 字符串数据,并返回该设置的字符串
    $redis->set("tutorial-name", "Redis-tutorial");

    $result = $redis->get("tutorial-name");
    return $result;
}

function eus_store_redis() {
    global $machine_no;

    $res = conn_redis(‘store-cart.chinasoft.com‘, 6379, ‘pass‘);

    if ($res == "Redis-tutorial") {
        echo "store_success";
    }else {
        echo "store_fail";
    }
}

function ws_store_redis() {
    global $machine_no;

    $res = conn_redis(‘cart.chinasoft.com‘, 6379, ‘pass‘);

    if ($res == "Redis-tutorial") {
        echo "store_success";
    }else {
        echo "store_fail";
    }
}

function platform_redis() {

    $res = conn_redis(‘cbs_out.chinasoft.com‘, 9376, ‘pass‘);
    if ($res == "Redis-tutorial") {
        echo "platform_success";
    }else {
        echo "platform_fail";
    }
}

function cbs_redis() {

    $res = conn_redis(‘cbs_out.chinasoft.com‘, 9376, ‘pass‘);
    if ($res == "Redis-tutorial") {
        echo "cbs_success";
    }else {
        echo "cbs_fail";
    }
}

// 通过get参数获取不同的应用redis
$func_name = $_GET[‘func_name‘];

if ($func_name == "store_redis") {
    eus_store_redis();
}elseif($func_name == "platform_redis"){
    platform_redis();
}elseif($func_name == "cbs_redis"){
    cbs_redis();
}

?>

3.监控的配置

[[email protected]:/data/www/html/php]# cat /usr/local/zabbix_agents_3.2.0/conf/zabbix_agentd/redis_monitor.conf
UserParameter=redis.store_redis,/usr/bin/curl http://127.0.0.1/php/eus_redis_monitor.php?func_name=‘store_redis‘
UserParameter=redis.cbs_redis,/usr/bin/curl http://127.0.0.1/php/eus_redis_monitor.php?func_name=‘cbs_redis‘
UserParameter=redis.platform_redis,/usr/bin/curl http://127.0.0.1/php/eus_redis_monitor.php?func_name=‘platform_redis‘

4.模板



原文地址:https://www.cnblogs.com/reblue520/p/10335198.html

时间: 2024-11-05 21:33:32

zabbix通过php脚本模拟业务访问redis验证nosql的可用性的相关文章

shell脚本一键在线安装redis数据库(使用函数实现)

shell脚本一键在线安装redis数据库(使用函数实现) 前面的文章给出了有关手工编译安装redis的流程,并且在模拟搭建redis集群时给出了在线安装redis的过程,于是就想着自己写好在线安装的redis脚本,本文主要使用shell函数来实现并且验证在线安装的过程,执行无误后就想着分享出来. PS:系统环境为Centos7.4 脚本如下: #!/bin/bash function checkroot(){ if [ $UID -ne 0 ] then echo "|------------

CentOS+Apache+php无法访问redis的解决方法

PHP 使用 Redis 安装 开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP. 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases. PHP安装redis扩展 以下操作需要在下载的 phpredis 目录中完成: $ wget https://github.com/phpredis/phpredis/ar

新浪计数业务之Redis

今天听一个同事说新浪使用的是Redis,于是自己将研究的过程整理出来以备后用. 我们都知道微博这玩意儿现在很火,新浪作为国内最早使用redis,并且是国内最大的redis使用者,当然备受人们关注.新浪微博中一项很重要数据,计数类业务就用到了Redis.OK,废话不多说,直接切入主题.  Redis是什么? 解析:一种内存型数据库,虽然其拥有了持久化机制. Redis配置过程 首先声明,今天我们探讨的配置是在windows系统下 步骤一:下载redis文件包 下载的windows版本是redis-

Unable to Connect: sPort: 0 C# ServiceStack.Redis 访问 redis

需求:  对数据库中的不断抓取的文章进行缓存,因此需要定时访问数据,写入缓存中 在捕获到的异常日志发现错误:Unable to Connect: sPort: 0 使用的访问方式是线程池的方式:PooledRedisClientManager 经过测试发现在并发访问redis服务的情况下出现该异常的概率比较高, 解决方法 第一点:要使用using(据说访问效率在高并发的时候会有影响,简单的测试过了确实是这样,不过现在的业务达不到高并发量,速度还是很快滴) using (IRedisClient

使用RedisTemplate的操作类访问Redis(转)

深入理解Spring Redis的使用 (三).使用RedisTemplate的操作类访问Redis 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了.但是通过回调去获取connection,完全没有达到一个模版类的功能.所以这篇我们会讲下几种Operations接口提供的方法. private ValueOperations<K, V> valu

一个异步访问redis的内存问题

| 分类 redis? | 遇到一个redis实例突然内存飙高的案例, 具体症状如下: 客户端使用异步访问模式 单个请求的回包很大,hgetall一个8M的key 由于访问量比较大,已经登录不上redis了, 看不到具体在做什么做操, 因此使用perf来看下调用栈, 此处且按下不表. 为何内存会飙高呢,我们线下重现一下: import redis import time r=redis.Redis("127.0.0.1", 9988) pipe = r.pipeline() key=&

Serverless 解惑——函数计算如何访问 Redis 数据库

函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询.性能监控和报警等功能.借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费. 访问 Redis 数据库是指在函数计算中通过编写代码调用数据库驱动库通过 TCP 协议实现对数据库进行的插入.查询等操作.通常函数计算中运行的不同函数实例之间是不共享状态的,

php -- php模拟浏览器访问网址

目前我所了解到的在php后台中,用php模拟浏览器访问网址的方法有两种: 第一种:file_get_contents($url) 通过php内置的 file_get_contents 函数可以模拟浏览器访问网址的行为,取的结果就是那个网址所返回的所有东西(这种情况一般用于返回的是 xml 格式字符串或者 json 字符串) 第二种:curl curl 是 php 提供的内置函数,其功能非常强大,封装常用的http,soap,ftp等协议 微信主要通过其进行模拟POST请求 1)初始化curl 2

Zabbix自定义监控脚本,显示权限不足

最近在配置zabbix监控mysql的自定监控项的时候,使用zabbix服务器测试时,报这个错. 我就查看了agent端zabbix_agentd.log和Server端的日志,然并卵什么都木有发现.后来查看Server端发现我用的是zabbix用户,而agent端的/usr/local/zabbix的所有者是root,问题就出现在这里,将zabbix配置目录的所有者改为了zabbix,给脚本加上了可执行权限(重点是这),就可以了.(其实将目录改为zabbix有点多余,但是强迫症犯了)