安装
counter
Gauge
histogram
Summary
随着Kubernetes越来越普遍使用,用于监控云原生的利器Prometheus也广泛被使用。除了官方提供的一些exporter之外,可能有时候还需要自定义或开发自己的exporter来进行监控。现在云原生生态中的软件或应用都是使用golang进行开发的,但是Prometheus也提供了golang之外的python、Ruby、Java的库来进行开发exporter,这里介绍使用Python来开发exporter,仅作简单介绍,更复杂的生产逻辑需要自己实现。
安装
$ pip install prometheus-client
counter
无label
from prometheus_client import start_http_server, Counter
import random
import time
r = Counter('http_request_num', 'http reuqeust times')
def getRequest(t):
r.inc(random.randint(1,10))
time.sleep(t)
if __name__ == '__main__':
start_http_server(8080)
while True:
getRequest(5)
有label
from prometheus_client import start_http_server, Counter
import random
r = Counter('http_request_num', 'http reuqeust times', ['request_ip'])
def getRequest(t):
r.labels(request_ip='127.0.0.1').inc(random.randint(1,10))
time.sleep(t)
if __name__ == '__main__':
start_http_server(8080)
while True:
getRequest(5)
Gauge
无label
from prometheus_client import start_http_server, Gauge
import random
import time
disk = Gauge('disk', 'disk usage')
def getDisk(t):
disk.set(random.random())
time.sleep(t)
if __name__ == '__main__':
start_http_server(8080)
while True:
getDisk(5)
有label
from prometheus_client import start_http_server, Gauge
import random
import time
disk = Gauge('disk', 'disk usage', ['mount'])
def getDisk(t):
disk.labels(mount="/dev/sda1").set(random.randint(100, 200))
time.sleep(t)
if __name__ == '__main__':
start_http_server(8080)
while True:
getDisk(5)
histogram
from prometheus_client import start_http_server, Histogram
import random
import time
temperature = Histogram("temperature", "temperature of today", buckets=(0, 10,
20, 30))
if __name__ == "__main__":
start_http_server(8080)
while True:
temperature.observe(random.randint(0, 35))
time.sleep(5)
Summary
无label
from prometheus_client import start_http_server, Summary
import time
s = Summary("request_time", "url request time")
if __name__ == "__main__":
start_http_server(8080)
while True:
s.observe(0.001)
time.sleep(1)
有label
from prometheus_client import start_http_server, Summary
import time
s = Summary("request_time", "url request time", ['url'])
if __name__ == "__main__":
start_http_server(8080)
while True:
s.labels(url='/').observe(0.001)
time.sleep(1)

文章转载自DevOps视角,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




