/usr/lib/check_mk_agent/plugins/mk_redis

#!/bin/bash

echo '<<<redis>>>'
hosts=$(netstat -nlp -t |grep redis-server|awk '{print $4}') for host in $hosts;
do
ip=$(echo $host|cut -d ':' -f1)
port=$(echo $host|cut -d ':' -f2)
echo "start $ip:$port"
redis-cli -p $port info |egrep '^redis_version|^redis_mode|^process_id|^uptime_in_days|^rdb_last_save_time|^rdb_changes_since_last_save|^master_link_down_since|^role|^connected_slaves|^master_last_io_seconds_ago|^blocked_clients|^connected_clients|^rejected_connections|^blocked_clients|^connected_clients|^rejected_connections|^instantaneous_ops_per_sec|^keyspace_hits|^keyspace_misses|^evicted_keys|^used_memory:|^mem_fragmentation_ratio'|awk -F ':' '{print $1,$2}'
echo "end $ip:$port"
done

/opt/omd/sites/test/share/check_mk/checks/redis

'''
start 127.0.0.1:6381
redis_version 2.8.19
redis_mode standalone
process_id 13675
uptime_in_days 5
rdb_changes_since_last_save 0
rdb_last_save_time 1490268431
role master
connected_slaves 0 connected_clients 1
blocked_clients 0
rejected_connections 0
evicted_keys 0
instantaneous_ops_per_sec 0 keyspace_hits 0
keyspace_misses 0 used_memory 502624 mem_fragmentation_ratio 11.67
end 127.0.0.1:6381
''' import time def inventory_redis_info(info):
inventory = []
for line in info:
if line[0] == 'start':
inventory.append((line[1], None))
return inventory def inventory_redis_stat(info):
inventory = []
for line in info:
if line[0] == 'start':
inventory.append((line[1], None))
return inventory def check_redis_info(item, params, info):
message = []
flag = False
for line in info:
if line[0] == 'end' and line[1] == item:
break elif line[0] == 'start' and line[1] == item:
flag = True elif flag:
if line[0] in ['redis_version', 'redis_mode', 'process_id', 'uptime_in_days', 'role', 'connected_slaves', 'rdb_changes_since_last_save']:
message.append(line[0]+': '+line[1])
elif line[0] in ['rdb_last_save_time']:
message.append(line[0]+': '+ time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(int(line[1])))) return 0, ', '.join(message) def check_redis_stat(item, params, info):
message = []
perfdata = []
flag = False for line in info:
if line[0] == 'end' and line[1] == item:
break elif line[0] == 'start' and line[1] == item:
flag = True elif flag:
if line[0] in ['connected_clients', 'blocked_clients', 'rejected_connections', 'evicted_keys', 'instantaneous_ops_per_sec', 'used_memory']:
message.append(line[0]+': '+line[1])
perfdata.append((line[0], int(line[1]), None, None, 0, None)) elif line[0] in ['mem_fragmentation_ratio']:
message.append(line[0]+': '+line[1])
perfdata.append((line[0], float(line[1]), None, None, 0, 100)) elif line[0] in ['keyspace_hits']:
message.append(line[0]+': '+line[1])
perfdata.append((line[0], int(line[1]), None, None, 0, None))
hits = int(line[1]) elif line[0] in ['keyspace_misses']:
message.append(line[0]+': '+line[1])
perfdata.append((line[0], int(line[1]), None, None, 0, None))
misses = int(line[1])
if (hits+misses) == 0:
hit_rate = 0
else:
hit_rate = round(hits/(hits+misses)*1.0, 2) message.append('hit_rate: %.2f' % hit_rate)
perfdata.append(('hit_rate', hit_rate*100, None, None, 0, 100)) return 0, ', '.join(message), perfdata check_info['redis.info'] = {
'check_function': check_redis_info,
'inventory_function': inventory_redis_info,
'service_description': 'redis_info %s',
} check_info['redis.stat'] = {
'check_function': check_redis_stat,
'inventory_function': inventory_redis_stat,
'service_description': 'redis_stat %s',
'has_perfdata': True,
}

/opt/omd/sites/test/share/check_mk/pnp-templates/check_mk-redis.stat.php

<?php

# clients
$opt[1] = "-t \"Clients\" -v \"Number\" -l 0 ";
$def[1] = ""; $def[1] .= "DEF:v1=$RRDFILE[1]:$DS[1]:MAX ";
$def[1] .= "LINE2:v1#ff4000:\"connected_clients\" ";
$def[1] .= "GPRINT:v1:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v1:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v1:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v1:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v2=$RRDFILE[2]:$DS[2]:MAX ";
$def[1] .= "LINE2:v2#a00000:\"blocked_clients\" ";
$def[1] .= "GPRINT:v2:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v2:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v2:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v2:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v6=$RRDFILE[6]:$DS[6]:MAX ";
$def[1] .= "LINE2:v6#00f040:\"rejected_connections\" ";
$def[1] .= "GPRINT:v6:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v6:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v6:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v6:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v7=$RRDFILE[7]:$DS[7]:MAX ";
$def[1] .= "LINE2:v7#00b0b0:\"evicted_keys\" ";
$def[1] .= "GPRINT:v7:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v7:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v7:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v7:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v8=$RRDFILE[8]:$DS[8]:MAX ";
$def[1] .= "LINE2:v8#c060ff:\"keyspace_hits\" ";
$def[1] .= "GPRINT:v8:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v8:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v8:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v8:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v9=$RRDFILE[9]:$DS[9]:MAX ";
$def[1] .= "LINE2:v9#f000f0:\"keyspace_misses\" ";
$def[1] .= "GPRINT:v9:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v9:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v9:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v9:MIN:\"min \:%5.0lf\" "; $def[1] .= "DEF:v5=$RRDFILE[5]:$DS[5]:MAX ";
$def[1] .= "LINE2:v5#ff4000:\"instantaneous_ops_per_sec\" ";
$def[1] .= "GPRINT:v5:LAST:\"last \:%5.0lf\" ";
$def[1] .= "GPRINT:v5:AVERAGE:\"avg \:%5.0lf\" ";
$def[1] .= "GPRINT:v5:MAX:\"max \:%5.0lf\" ";
$def[1] .= "GPRINT:v5:MIN:\"min \:%5.0lf\" "; # performance
$opt[2] = "-t \"Performance\" -v \"(%)\" -l 0 ";
$def[2] = ""; $def[2] .= "DEF:v4=$RRDFILE[4]:$DS[4]:MAX ";
$def[2] .= "LINE2:v4#a00000:\"mem_fragmentation_ratio\" ";
$def[2] .= "GPRINT:v4:LAST:\"last \:%5.2lf\" ";
$def[2] .= "GPRINT:v4:AVERAGE:\"avg \:%5.2lf\" ";
$def[2] .= "GPRINT:v4:MAX:\"max \:%5.2lf\" ";
$def[2] .= "GPRINT:v4:MIN:\"min \:%5.2lf\" "; $def[2] .= "DEF:v10=$RRDFILE[10]:$DS[10]:MAX ";
$def[2] .= "LINE2:v10#00f040:\"hit_rate\" ";
$def[2] .= "GPRINT:v10:LAST:\"last \:%5.2lf\" ";
$def[2] .= "GPRINT:v10:AVERAGE:\"avg \:%5.2lf\" ";
$def[2] .= "GPRINT:v10:MAX:\"max \:%5.2lf\" ";
$def[2] .= "GPRINT:v10:MIN:\"min \:%5.2lf\" "; # memory
$opt[3] = "-t \"Use Memory\" -v \"Bytes\" -l 0 ";
$def[3] = ""; $def[3] .= "DEF:v3=$RRDFILE[3]:$DS[3]:MAX ";
$def[3] .= "AREA:v3#FF6666:\"use_memory\" ";
$def[3] .= "GPRINT:v3:LAST:\"last \:%5.0lf\" ";
$def[3] .= "GPRINT:v3:AVERAGE:\"avg \:%5.0lf\" ";
$def[3] .= "GPRINT:v3:MAX:\"max \:%5.0lf\" ";
$def[3] .= "GPRINT:v3:MIN:\"min \:%5.0lf\" ";
?>





check_mk插件 redis的更多相关文章

  1. collectd的python插件(redis)

    https://blog.dbrgn.ch/2017/3/10/write-a-collectd-python-plugin/ redis_info.conf <LoadPlugin pytho ...

  2. Nagios监控生产环境redis群集服务战

    前言:     曾经做了cacti上展示redis性能报表图.能够看到redis的性能变化趋势图,可是还缺了实时报警通知的功能,如今补上这一环节. 在redis服务瓶颈或者异常时候即使报警通知,方便d ...

  3. 【JAVAWEB学习笔记】网上商城实战2:异步加载分类、Redis缓存分类和显示商品

    网上商城实战2 今日任务 完成分类模块的功能 完成商品模块的功能 1.1      分类模块的功能: 1.1.1    查询分类的功能: 1.1.2    查询分类的代码实现: 1.1.2.1  创建 ...

  4. 【Redis】集群方式

    一.概述 1.1 Redis3.0版本之前 1.2 常见集群方案 二.Redis-Cluster原理 三.搭建集群方案 3.1 准备工作 3.2 创建模拟集群的文件夹 3.3 复制脚本 3.4 复制一 ...

  5. 日志分析平台ELK之日志收集器logstash常用插件配置

    前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...

  6. 为什么Redis集群要使用反向代理?

    为什么要使用反向代理? 如果没有方向代理,一台Redis可能需要跟很多个客户端连接: 看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立 ...

  7. redis缓存穿透穿透解决方案-布隆过滤器

    redis缓存穿透穿透解决方案-布隆过滤器 我们先来看一段代码 cache_key = "id:1" cache_value = GetValueFromRedis(cache_k ...

  8. [Logstash-input-redis] 使用详解

    redis插件的完整配置 input { redis { batch_count => 1 #返回的事件数量,此属性仅在list模式下起作用. data_type => "lis ...

  9. logstash使用操作部分

    1.logstash的概念及特点.概念:logstash是一个数据采集.加工处理以及传输(输出)的工具.特点: - 所有类型的数据集中处理 - 不同模式和格式数据的正常化 - 自定义日志格式的迅速扩展 ...

随机推荐

  1. kuangbin专题十二 HDU1176 免费馅饼 (dp)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. JavaScript权威指南--闭包讲解摘记

    不积跬步无以至千里,不积小流无以成江河. 关于闭包的解释,在<JavaScript权威指南>中讲的很透彻了.今天看了书中的一个段讲解,更加深了对闭包的理解,特此记下,以备查阅. 在同一个作 ...

  3. Luogu P1471 方差 线段树

    那是上上周...也是重构了四遍...后来GG了...今天又拾起,搞了搞终于过了... 好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561 ...

  4. redis初识及基本操作

    一.redis介绍: 1.Redis是什么: REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key-Value) ...

  5. python 函数调用

    ##########定义函数######### 如果不主动调用函数,函数是不会执行的 def say_hello():     print 'hello1'     print 'hello2'    ...

  6. 使用wget下载oracle jdk1.8

    wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com% ...

  7. 转 PyCharm 进行调试 以及怎么熟悉一个已经成熟的项目的代码和断点 以及 jetBrains pycharm快捷键

    https://blog.csdn.net/guider2334/rss/list Ctrl + Q 现实document视图,查看选择元素的详细信息        (重要) Ctrl + Alt + ...

  8. Oracle 12c DG备库Alert报错ORA-01110

    环境是12.2.0.1 version, Oracle Data Guard备库近段时间一直报错,但是备库主库同步一致,数据一致. 2019-03-06T23:42:22.184048+08:00 E ...

  9. readline的用法

    with open(r'C:\Users\admin\pycdtest\wanyue\llduizhang_20180207\33_1517970821000304388_119061116',enc ...

  10. bootstrap-datepicker控件中文 ,只显示年和只显示月份

    插件下载地址 https://github.com/uxsolutions/bootstrap-datepicker html <link href="css/bootstrap-da ...