프로 메테우스 사용자 정의 모니터링 지표 - 실제

하나의 기능은 장점과 단점뿐만 아니라 사용의 배포, 몇 가지 예를 모니터링 지표를 사용하는 방법을 사용자 정의의 자신을 생각 나게하는이 기계를 pushgateway 소개합니다.


첫째, 선박 모니터링 시작 시간 (쉘)

  사용 메테우스 두 달 있었지만 컨테이너 인덱스를 실행할 수있는 시간을 찾을 수 없을 (유사한 표시가 컨테이너를 만들 수있는 시간이있다). 사용자 정의 모니터링 지표를 학습 한 후, 첫 번째 인스턴스는 그것을 얻을 수 있어야합니다.

  전제 조건은 pushagateway를 배포!

  모니터링 시스템 (리눅스)에서 다음 스크립트를 만들

#! / 빈 / bash는 
  
allname 도커 PS =` ".Names는 {} {}"#`실행중인 모든 선박의 이름을 가져옵니다 --format 

(기능 dockerruntime를) { 
    =`도커는 {} { '.State.StartedAt을 -f 검사 T } $ # 1` 각 컨테이너의 시간 시작 얻는 
    T1 = '날짜 + % S -d "$의 t' '#는 타임 스탬프로 변환 
    T2 ='날짜 + %의 s` # 현재 시간 스탬프를 획득 
    TT하자가 = T2-T1 번호 런타임 계산 
    에코 $의 TT를 
} 

sudo는 RM -fa 
에코 "" "#은 TYPE 게이지 docker_runtime 
" "# >> 파일 데이터 기록에 업로드 pushgateway # 시간 초는 HELP docker_runtime" 

를 들어에서 I $ { } allname 
할 일 
    T $ =`dockerruntime i`
    에코 "docker_runtime {이름 = \" $ 내가 \ "} A # >> $ (T)를" 형식의 데이터는 내가 $ 차단합니다 작은 따옴표를 사용하여 기록 할 수 없습니다 
DONE 

컬 --data 바이너리 "@a"HTTP : // pushgatewayIP를 : 9091 / 측정 / 작업 / docker_runtime # / 예 / - billubuntu XA-LSR 업로드 데이터 파일의 수에 특정 URL에 매개 변수 이름과 주소를 수정을 

sudo는 RM -fa # 임시 파일을 비워

  착륙 웹 UI의 pushgateway의 실행 후, 스크립트 실행 권한을 추가

당신은 기계가 각 작업의 이름은 "docker_runtime"라는 모니터링 시스템에 세 개의 컨테이너 검색을 의미, PUSH 데이터를 pushgateway를 모니터링 할 볼 수 있습니다

한 번씩 15 초 또는 30 초를 수행, 위의 스크립트를 약간 수정 될 수 있습니다 시간에 대한 요구 사항이있는 경우 스크립트는 한 번 분당, 정기적으로 예약 된 작업을 추가합니다.

이제 쿼리 상자 프로 메테우스 (Prometheus)은 "docker_runtime"에서 쿼리를 입력 위의 데이터를 얻을 수 있습니다.

[주]

데이터의 유형을 업로드 할 수 있습니다

당신이 업로드 데이터 유형 UNTYPE 경우 프로 메테우스는 접수 할 수 없습니다 pushgateway 데이터의 결과로 인식되지 않도록! 따라서, 특별한주의가 전송되는 데이터를 포맷 할 필요가있다.
데이터 유형은 네 개의 카운터 게이지 요약 히스토그램이다

두, 파이썬은 pushgateway 데이터를 전송

클라이언트 설치 프로 메테우스

  prometheus_client를 설치 PIP

1 대향 형

#counter가 다시 시작 시간이 0으로 설정됩니다, 성장하고, 작업의 수는 만 상승하는
제안 페이지를 구축하기 위해 플라스크를 사용하여 #을

     수입 prometheus_client 
	prometheus_client 수입 카운터에서 
	prometheus_client.core 수입 CollectorRegistry에서 
	플라스크 가져 오기 응답, 플라스크에서 
	
	응용 프로그램 = 플라스크 (__ name__) 
	
	requests_total = 카운터 ( "되었다 request_count", "호스트의 총 요청 cout을") 
	
	@ app.route ( "/ 통계" ) 
	데프 requests_count () : 
	    requests_total.inc () 
	    #의 requests_total.inc (2)每一次刷新会이增加
	    반환 응답 (prometheus_client.generate_latest (requests_total), 
	                    MIME 유형 = "텍스트 / 일반") 
	
	@ app.route ( '/' ) 
	데프 지수 () : 
	    requests_total.inc () 
	    반환 "Hello World」의 
	
	경우 __name__ =="__main__ ":
	    app.run (호스트 = "0.0.0.0")

결과 : 

 

2, gauage 유형

	수입 prometheus_client 
	prometheus_client 수입 카운터, 게이지에서 
	prometheus_client.core 수입 CollectorRegistry에서 
	플라스크 가져 오기 응답, 플라스크에서 
	
	응용 프로그램 = 플라스크 (__ name__) 
	
	g = 게이지 ( "random_value", "요청의 임의의 값") 
	
	@ app.route ( "/ 측정 ") 
	DEF S () : 
	    오픈 (함께"a.txt이 "F로서, 'R') : 
	        NUM = f.read () 
	    g.set (NUM) 
	    반환 응답 (prometheus_client.generate_latest (g), 
	                    마임 ="텍스트 / 일반 ") 
	
	
	@ app.route ( '/') 
	데프 지수 () : 
	    requests_total.inc () 
	    반환에"Hello World " 
	
	__name__ 경우 =="__main__ ":
    app.run (호스트 = "0.0.0.0")

결과 : 

 

작은 지역의 웹 사이트를 생성하기 위해 위의 효과가있다 보내기, 다음 단계는 pushgateway하기 위해 선택한 데이터입니다 

#在被监控机上写python代码
#CollectorRegistry可以同时注册多个自定义指标并返回给prometheus

	
importprometheus_client
fromprometheus_clientimportGauge
fromprometheus_client.coreimportCollectorRegistry
importrequests

defv1(): #获取监控数据的值
	return2.3

defv2():
	return3.60

n1=v1()
n2=v2()

REGISTRY=CollectorRegistry(auto_describe=False)
#自定义指标必须利用CollectorRegistry进行注册,注册后返回给prometheus
#CollectorRegistry必须提供register,一个指标收集器可以注册多个collectoryregistry


jin=Gauge("jin_kou","zhegezuoyongshijinkoudaxiao",["l1",'l2','instance'],registry=REGISTRY)
chu=Gauge("chu_kou","zhegezuoyongshichukoudaxiao",["l1",'l2','instance'],registry=REGISTRY)
	#“jin_kou” 指标名称
	# "zhegezuoyongshichukoudaxiao"  指标的注释信息
	# "[]"  定义标签的类别及个数

jin.labels(l1="label1",l2="label2",instance="windows1").inc(n1)
chu.labels(l1="label1",l2="label2",instance="windows1").inc(n2)
	#“[]”中有几个,就需要写几个个数要完全一致

requests.post("http://pushgatewayIP:9091/metrics/job/python/",data=prometheus_client.generate_latest(REGISTRY))
	#向指定的API发送post信息,将注册的信息发过去
	#API中的 “python”是 job的名字

 结果:

 

추천

출처www.cnblogs.com/zqj-blog/p/11106724.html