PromQL을 통해 당신의 프로메테우스를 발견


PromQL을 통해 당신의 프로메테우스를 발견
프로메테우스의 실례에 대한 모든 사용 가능한 지표를 이해하는 것은 때때로 불가능하다고 느낄 수 있기 때문에 제가 디자인한 작은 기교를 공유하여 이러한 지표를 탐색하는 것을 더욱 쉽게 하고 싶습니다!
프로메테우스의 장점 중 하나는 도량 양식의 단순성 때문에 다양한 데이터 원본에서 대량의 데이터를 수신할 수 있다는 것이다.그러나 프로메테우스 수출 업체를 여러 팀에서 관리하는 조직에서 일한다면, 모든 사용 가능한 지표에 대해 실망하거나 당황할 수도 있다. 특히 당신이 있는 인프라 시설 팀이 경보 규칙에서 낮은 등급의 지표를 사용한다면.이러한 지표는 일반적으로 당신의 팀에서 작성하지 않은 제3자 수출 업체에서 나오기 때문에 사용할 수 있는 모든 지표를 모를 수 있습니다.
검색어를 입력하기 시작하면, 프로메테우스는 자동으로 완성된 대화상자에 도량 목록을 제공합니다.Grafana를 사용하면 비슷한 일을 완성할 수 있습니다.그러나 이러한 작업 절차는 '알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수 없는 알 수

주어진 수출 업체의 모든 지표를 열거하다
프로메테우스가 자신을 긁었을 때 내보낸 모든 도량의 목록을 원한다면, 문제의 기교는 다음과 같다.
count({job="prometheus"}) by ( __name__ )
프로메테우스에 대한 경험에 따르면 당신은 이전에 __name__ 라벨을 본 적이 있을 수도 있고, 본 적이 없을 수도 있습니다.__name__은 프로메테우스의 특수한 라벨이다. 그것은 도량 자체의 이름이다.사실 foo{bar="baz"}은 사실상 { __name__ ="foo",bar="baz"}의 설탕!

지정된 내보내기에 대한 모든 이름 공간을 나열합니다.
내 프로메테우스를 테스트한 결과 202개의 결과를 얻었다. 다음은 작은 견본이다.
미터법의
가치관
프로메테우스(prometheus tsdb isolation low watermark{}
1
프로메테우스 최소 시간 스탬프 초
1
프로메테우스 규칙팀 지속 시간 초와
1
프로메테우스의 sd 파일 읽기 오류 총수 {
1
프로메테우스(prometheus tsdb compressions total{}
1
go_memstats_gc_sys_bytes{}
1
프로메테우스(프로메테우스)
1
프로메테우스(prometheus)(tsdb)(헤드)(절단)(실패)(총수)
1
프로메테우스 tsdb 압축 블록 크기 바이트 계수 {}
1
네트워크 연결 다이얼 업 연결 설정된 총 연결 수 {
9
프로메테우스(prometheus) tsdb head chunk removed total{}
1
프로메테우스(prometheus) tsdb 묘비 cleanu seconds count{}
1
여기에는 두 가지 중요한 요점이 있다. 첫째, 도량은 명칭에 따라 정렬된 것이 아니라, 사실상 결과 정렬은 실행 사이에서 바뀔 수 있다.따라서 저는 promtool을 자주 사용하여 이러한 유형의 탐색적 조회를 실행하고 이를 jq 또는 sort 등 도구로 가져올 것입니다.
이 지표들은 특정한 명칭 공간 방안을 따르는 것을 볼 수 있습니다.1단계 "이름 공간"은 label_replace을 사용하여 추출할 수 있습니다.
count(label_replace({job="prometheus"}, "metric_namespace", "$1", " __name__", "^([^_]+).*")) by(metric_namespace)
...이것은 우리에게 다음과 같은 목록을 주었다.
  • {metric_namespace="prometheus"}
  • {metric_namespace="promhttp"}
  • {metric_namespace="scrape"}
  • {metric_namespace="up"}
  • {metric_namespace="go"}
  • {metric_namespace="net"}
  • {metric_namespace="process"}
  • 이 목록은 우리가 찾고 있는 것들을 주목할 수 있는 다른 필터에 대한 힌트를 제공할 수 있다. 예를 들어 프로메테우스가 인터넷을 통해 사물과 어떻게 통신하는지에 대한 저급 지표에 관심이 있다면, 나는 net을 나의 벡터 선택기에 추가해서 __name__ =~"net_.*"의 '명칭 공간' 을 깊이 연구할 수 있다.이러한 '명칭 공간' 은 도량 자체에 기록되지 않기 때문에, 각각의 명칭 공간을 탐색하고, 각각의 명칭 공간이 어느 공간에 관한지 확인하기 위해 발견한 내용을 보아야 합니다.

    모든 수출 업체의 모든 지표를 열거하다
    첫 번째 질의를 조정하여 프로메테우스의 각 작업에 대한 지표를 나열할 수 있습니다.
    count({ __name__!=""}) by ( __name__ )
    
    첫 번째 검색어에 비해 주의해야 할 점은 __name__!=""위입니다. 익숙하지 않으면 좀 이상하게 보일 수도 있습니다.이것은 단지'나에게 모든 시간 서열을 주어라'의 가능한 약자일 뿐이다.이 부분은 ProMQ가 벡터 선택기에 빈 문자열과 일치하지 않는 탭이 최소한 하나 있어야 하기 때문에 {} 또는 { __name__ =~".*"}과 비슷한 내용을 사용할 수 없습니다.

    지정된 내보내기의 모든 시간 시퀀스를 나열합니다.
    초기 질의를 변경할 수 있는 또 다른 변경 사항은 지표 대신 수출 업체가 제공하는 모든 시간 순서를 나열하는 것입니다.
    {job="prometheus"}
    
    이렇게 하면 각 메트릭에 대한 모든 레이블 정렬을 볼 수 있습니다.그러나 주의해야 할 것은: 이것은 대량의 출력을 초래할 수 있기 때문에 탐색할 때 추가 필터를 추가하는 것을 권장합니다.이것은 또 다른 상황이다. 나는 promtool에 이를 것이다. 이것은 내가 위에서 언급한 것이다.나에게 있어서 promtool을 사용하여 모든 시간 서열을 한 파일에 저장한 다음 셸 도구를 사용한다. (심지어 vim에서만 이 파일을 훑어본다.)내가 얻는 게 뭔지 더 잘 알기 위해서
    나는 네가 이것이 매우 도움이 된다고 생각하고, 또한 네가 매일 사용하는 프로메테우스의 실례에 어떤 유용한 도량 기준이 있는지 탐색할 능력이 있다고 생각하기를 바란다.너는 어떤 묘수를 발견했니?그렇다면 알려주세요!
    Frew Schmidt, John Anderson, David Golden, Jonathan YeongLiz Lam에서 이 게시물을 검토해 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기