16_小米監控Open-Falcon:Redis監控
#!/bin/env python #-*- coding:utf-8 -*- __author__ = 'iambocai' import json import time import socket import os import re import sys import commands import urllib2, base64 class RedisStats: # 如果你是自己編譯部署到redis,請將下面的值替換為你到redis-cli路徑 _redis_cli = '/usr/local/redis/redis-cli' _stat_regex = re.compile(ur'(\w+):([0-9]+\.?[0-9]*)\r') def __init__(self, port='6379', passwd=None, host='127.0.0.1'): self._cmd = '%s -h %s -p %s info' % (self._redis_cli, host, port) if passwd not in ['', None]: self._cmd = '%s -h %s -p %s -a %s info' % (self._redis_cli, host, port, passwd) defstats(self): ' Return a dict containing redis stats ' info = commands.getoutput(self._cmd) return dict(self._stat_regex.findall(info)) def main(): ip = "dst6-redis" timestamp = int(time.time()) step = 60 # inst_list中儲存了redis配置檔案列表,程式將從這些配置中讀取port和password,建議使用動態發現的方法獲得,如:# inst_list = [ i for i in commands.getoutput("find /etc/ -name 'redis*.conf'" ).split('\n') ] insts_list = [ '/usr/local/redis/redis.conf' ] p = [] monit_keys = [ ('connected_clients','GAUGE'), ('blocked_clients','GAUGE'), ('used_memory','GAUGE'), ('used_memory_rss','GAUGE'), ('mem_fragmentation_ratio','GAUGE'), ('total_commands_processed','COUNTER'), ('rejected_connections','COUNTER'), ('expired_keys','COUNTER'), ('evicted_keys','COUNTER'), ('keyspace_hits','COUNTER'), ('keyspace_misses','COUNTER'), ('keyspace_hit_ratio','GAUGE'), ] for inst in insts_list: port = commands.getoutput("sed -n 's/^port *\([0-9]\{4,5\}\)/\\1/p' %s" % inst) passwd = commands.getoutput("sed -n 's/^requirepass *\([^ ]*\)/\\1/p' %s" % inst) metric = "redis" endpoint = ip tags = 'port=%s' % port try: conn = RedisStats(port, passwd) stats = conn.stats() except Exception,e: continue for key,vtype in monit_keys: #一些老版本的redis中info輸出的資訊很少,如果缺少一些我們需要採集的key就跳過 if key not in stats.keys(): continue #計算命中率 if key == 'keyspace_hit_ratio': try: value = float(stats['keyspace_hits'])/(int(stats['keyspace_hits']) + int(stats['keyspace_misses'])) except ZeroDivisionError: value = 0 #碎片率是浮點數 elif key == 'mem_fragmentation_ratio': value = float(stats[key]) else: #其他的都採集成counter,int try: value = int(stats[key]) except: continue i = { 'Metric': '%s.%s' % (metric, key), 'Endpoint': endpoint, 'Timestamp': timestamp, 'Step': step, 'Value': value, 'CounterType': vtype, 'TAGS': tags } p.append(i) print json.dumps(p, sort_keys=True,indent=4) method = "POST" handler = urllib2.HTTPHandler() opener = urllib2.build_opener(handler) url = 'http://127.0.0.1:1988/v1/push' request = urllib2.Request(url, data=json.dumps(p) ) request.add_header("Content-Type",'application/json') request.get_method = lambda: method try: connection = opener.open(request) except urllib2.HTTPError,e: connection = e # check. Substitute with appropriate HTTP code. if connection.code == 200: print connection.read() else: print '{"err":1,"msg":"%s"}' % connection if __name__ == '__main__': proc = commands.getoutput(' ps -ef|grep %s|grep -v grep|wc -l ' % os.path.basename(sys.argv[0])) sys.stdout.flush() if int(proc) < 5: main()
相關推薦
16_小米監控Open-Falcon:Redis監控
#!/bin/env python #-*- coding:utf-8 -*- __author__ = 'iambocai' import json import time import socket import os import re import sys import commands impo
18_小米監控Open-Falcon:Rabbitmq監控
key tag type note rabbitmq.messages_ready name(Queue名字) GAUGE 佇列中處於等待被消費狀態訊息數 rabbitmq.messages_unacknowledged name(Queue名字) GAUGE 佇列中處於消費中狀態的訊息數 rabbitmq.
19_小米監控Open-Falcon:Nginx監控
小米監控Open-Falcon:Nginx監控 更多幹貨 一、 工作原理 ngx_metric是藉助lua-nginx-module的log_by_lua功能實現nginx請求的實時分析,然
12_小米監控Open-Falcon郵件、簡訊、電話傳送介面
小米監控Open-Falcon 郵件、簡訊、電話傳送介面更多幹貨一、 介紹監控系統產生報警事件之後需要傳送報警郵件或者報警簡訊,各個公司可能有自己的郵件伺服器,有自己的郵件傳送方法;有自己的簡訊通道,有自己的簡訊傳送方法。falcon為了適配各個公司,在接入方案上做了一個規範
7_小米監控Open-Falcon安裝繪圖資料的元件- Graph
pen-Falcon:安裝繪圖資料的元件- Graph更多幹貨一、 介紹graph是儲存繪圖資料的元件。graph元件 接收transfer元件推送上來的監控資料,同時處理api元件的查詢請求、返回繪圖資料。二、 服務部署服務部署,包括配置修改、啟動服務、檢驗服務、停止服務等
6_小米監控Open-Falcon安裝資料轉發服務-Transfer
Open-Falcon安裝資料轉發服務-Transfer更多幹貨一、 簡介transfer是資料轉發服務。它接收agent上報的資料,然後按照雜湊規則進行資料分片、並將分片後的資料分別push給graph&judge等元件。二、 服務部署服務部署,包括配置修改、啟動服
10_小米監控Open-Falcon告警判斷-Judge
{ "debug": true, "debugHost": "nil", "remain": 11, "http": { "enabled": true, "listen": "0.0.0.0:6081" }, "rpc": {
8_小米監控Open-Falcon安裝查詢元件-API
Open-Falcon 安裝查詢元件-API更多幹貨一、 介紹api元件,提供統一的restAPI操作介面。比如:api元件接收查詢請求,根據一致性雜湊演算法去相應的graph例項查詢不同metric的資料,然後彙總拿到的資料,最後統一返回給使用者。二、 服務部署服務部署,包
4_小米監控Open-Falcon 前端安裝
Open-Falcon 前端安裝更多幹貨一、建立工作目錄這一步在建立後端服務的時候已經建立好,所以不需要再進行操作。 export HOME=/home/work export WORKSPACE=$HOME/open-falcon mkdir -p $WOR
2、小米監控_服務監控Open-Falcon環境準備
服務監控Open-Falcon環境準備更多幹貨一、安裝redis大家可以yum安裝,也可以下載原始碼安裝。yum install -y redis修改配置redis.confvi /etc/redis.conf啟動redis:redis-server &二、 安裝my
9_小米監控Open-Falcon心跳服務-HBS
Open-Falcon心跳服務-HBS更多幹貨一、 介紹心跳伺服器,公司所有agent都會連到HBS,每分鐘發一次心跳請求。Portal的資料庫中有一個host表,維護了公司所有機器的資訊,比如hostname、ip等等。這個表中的資料通常是從公司CMDB中同步過來的。但是有
Open-falcon運維監控系統——微信接口二次開發
con 重寫方法 接口 ack sets image parse urlopen data 1、Open-falcon運維監控系統簡介 OpenFalcon是一款由小米運維團隊從互聯網公司的需求出發, 根據多年的運維經驗,結合市面上使用的一些運維監控系統的使用經驗和反饋,
運維監控-Open-Falcon實戰部署
運維監控-Open-Falcon實戰部署 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 一. 二
002.Open-Falcon部署及監控
一 前期準備 節點 IP 備註
open-falcon 具體實施監控
1.mysql1.1準備環境打包go env #檢視go的變數環境 mkdir -p $GOPATH/src/github.com/open-falcon cd $GOPATH/src/github.com/open-falcon git clone https://gi
運維架構服務監控Open-Falcon
一、 介紹 監控系統是整個運維環節,乃至整個產品生命週期中最重要的一環,事前及時預警發現故障,事後提供翔實的資料用於追查定位問題。監控系統作為一個成熟的運維產品,業界有很多開源的實現可供選擇。當公司剛剛起步,業務規模較小,運維團隊也剛剛建立的初期,選擇一款開源的監控系統
Linux配置監控服務器:Zabbix監控(一)
zabbix一、Linux監控平臺介紹 cacti、nagios、zabbix、smokeping、open-falcon等; cacti、smokeping偏向基礎監控,成圖非常漂亮; cacti、nagios、zabbix服務端監控中心,需要PHP環境支持,其中zabbix和cacti都需要mysql
【小米開源監控系統】open-falcon
open-falcon1)優勢·強大靈活的數據采集:自動發現,支持falcon-agent、snmp、支持用戶主動push、用戶自定義插件支持、opentsdb data model like(timestamp、 endpoint、metric、key-value tags) ·水平擴展能力:支持每個周期上
小米open-falcon監控系統接入手冊
htm group mon 服務 gin -m 16px 微信 odata p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica; color: #000000 } span.s1 { } 一、新項目接
open-falcon 小米開源監控
1.open-falcon介紹監控系統是整個運維環節,乃至整個產品生命週期中最重要的一環,事前及時預警發現故障,事後提供翔實的資料用於追查定位問題。監控系統作為一個成熟的運維產品,業界有很多開源的實現可供選擇。當公司剛剛起步,業務規模較小,運維團隊也剛剛建立的初期,選擇一款開