博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
prometheus介绍与gp表膨胀监控
阅读量:6407 次
发布时间:2019-06-23

本文共 2417 字,大约阅读时间需要 8 分钟。

 

一、什么是普罗米修斯?

1.是一个最初在构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开发人员和用户。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并澄清项目的治理结构,Prometheus 于2016年加入 ,作为继之后的第二个托管项目。

 

2.普罗米修斯的主要特点是:

  • 具有由度量名称和键/值对标识的时间序列数据的多维
  • PromQL,一种 可以利用这一维度
  • 不依赖分布式存储; 单个服务器节点是自治的
  • 时间序列集合通过HTTP上的拉模型发生
  • 通过中间网关支持
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

 

3.核心架构图

 

 

二、Prometheus Python客户端

三步演示:

 

一:安装客户端:

pip install prometheus_client

二:将以下内容粘贴到Python解释器中:

from prometheus_client import start_http_server, Summaryimport randomimport time# Create a metric to track time spent and requests made.REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')# Decorate function with metric.@REQUEST_TIME.time()def process_request(t):    """A dummy function that takes some time."""    time.sleep(t)if __name__ == '__main__':    # Start up the server to expose the metrics.    start_http_server(8000)    # Generate some requests.    while True:        process_request(random.random())

三:访问查看指标。

 

提供四种类型的度量:Counter, Gauge, Summary and Histogram. 

Counters:一直上升, 并且随着进程重启而重置。

Gauge: 可以上升也可以下降。

from prometheus_client import Gaugeg = Gauge('my_inprogress_requests', 'Description of gauge')g.inc()      # 上升1g.dec(10)    # 减少10g.set(4.2)   # 设置为4.2

 

然后利用该程序监控

a=[] def monitor():     conn = Connection(Config.HOST, Config.PASSWD, Config.USER, Config.DB).connect()     cur = conn.cursor()     cur.execute("SELECT datname FROM pg_database")     rows = cur.fetchall()     for i in  rows:             if i[0] != 'template0':                         a.append(i[0])     conn.close()     for qq in a:         conn2 = Connection(Config.HOST, Config.PASSWD, Config.USER, qq).connect()         cur = conn2.cursor()         for value in Config.MONITOR_DICT.values():                 cur.execute(value)                 rows2 = cur.fetchall()                 for key in Config.MONITOR_DICT.keys():                     if rows2 :                             app_database_maintain.labels(event=qq+"_"+key).set(1)                     else:                             app_database_maintain.labels(event=qq+"_"+key).set(0)                 conn2.close()
def main():     start_http_server(6001)     logging.info("gp monitor start app.") if __name__ == '__main__':    main() def sleeptime(hour,min,sec):     return hour*3600 + min*60 + sec; second = sleeptime(0,0,3600); while 1==1:     time.sleep(second);     monitor()

转载于:https://www.cnblogs.com/languid/p/10886619.html

你可能感兴趣的文章
VS2015安装EF Power Tools
查看>>
MySQL主从复制(笔记)
查看>>
keepalived高可用集群的简单配置
查看>>
Android Java Framework显示Toast(无Activity和Service)
查看>>
通过 SignalR 类库,实现 ASP.NET MVC 的实时通信
查看>>
NavigationController修改状态条颜色
查看>>
16大跨平台游戏引擎
查看>>
NPS如何配置基于mac地址的8021x认证
查看>>
XenServer架构之XAPI的调用流程
查看>>
redhat下搭建LAMP架构
查看>>
GitHub详细教程
查看>>
raid技术的读与想
查看>>
Hbase 中Column Family 的作用
查看>>
用鸡讲解技术债务的形成过程?
查看>>
Linux下的Tftp服务
查看>>
C#将集合和Json格式互相转换的几种方式
查看>>
java连接数据库并操作
查看>>
安装.net framework 4.0时提示HRESULT 0xc8000222
查看>>
集群下文件同步问题
查看>>
ASA 5510 V821 EASY ×××配置
查看>>