그라파나 구름층의 Statsd+프로메테우스
7301 단어 statsdgografanaprometheus
나는 공고를 보자마자 애완동물 프로젝트에서 나의 도량을 갱신하여 사용하기 시작했다.내 프로젝트에서 나는 거의 Statsd를 도량 기준으로 사용하지만 일상적인 업무에서 나도 프로메테우스를 사용한다.
Grafana 클라우드 계정 제한 없음
Grafana Cloud를 무료로 사용할 것을 고려하고 있다면, 당신은 알고 있을 것입니다. limitations of free accounts
보안 및 개인 정보 보호 문제
네 머릿속에 스쳐 지나갈 수 있는 첫 번째 일은 너의 지표를 구름 속에 넣는 것이 안전한지 의심하는 것이다.응, 생각이 좀 있어.
우리 는 내 발견 을 보고, 이것 이 내 걱정 을 완화시킬 수 있는지 없는지 봅시다
스타즈인가 프로메테우스인가
주의해야 할 점은Grafana Cloud Statsd 서버가 메트릭을 보낼 수 없다는 것입니다.있더라도 인증과 암호화를 위해 Statsd를 사용하는 것은 지원되지 않습니다.이것은 내부에 해결 방안을 배치하거나 당신이 가지고 있는 그룹에서 가능하지만 클라우드에 도량을 보낼 때 더 좋은 선택이 있어야 합니다.
이상적인 해결 방안은 Statsd 지표를 보내서Prometheus로 전환한 다음에Prometheus에 내장된
remote_write
기능을 사용할 수 있다는 것이다.이것은 내가 발견했을 때Statsd Prometheus Exporter다.프로메테우스에게 경의를 표하다
내보내기는 Statsd 서버로
/metrics
단점의 지표를 내보내는 데 사용됩니다.이렇게 하면 내가 해야 할 일은 도출기를 Kubernetes에 배치한 다음에 도량을 보낼 호스트를 바꾸는 것이다.현재, 이것은 Statsd에서 프로메테우스로 전환하는 간단한 방법이지만, 가장 좋은 두 가지 공제 유형을 얻지 못했다.프로메테우스의 아름다움은 미터법과 라벨이 있지만 Statsd에는 라벨이 없다는 데 있다.Statsd 도량에 상하문을 더 추가하려면 키 이름에 추가해야 합니다. 이것은 프로메테우스의 방법이 아닙니다.
다행히도 Statsd Prometheus Exporter 이미4 awesome tagging/labelling extensionsStatsd 도량 프로토콜에 연결되었고, 이 프로토콜은 나도 도량을 보낼 수 있도록 허락했다.
혼합 메트릭 클라이언트
내 자신의 도량을 더욱 쉽게 실현하기 위해, 나는 Golang에 간단한 도량 인터페이스를 만들고, 그 다음에 '혼합' 도량 유형을 실현했다.
메트릭 인터페이스
package metrics
//ClientInterface ...
type ClientInterface interface {
Init() error
Increment(key string, labels map[string]string)
IncrementBy(key string, by int, labels map[string]string)
Gauge(key string, value int, labels map[string]string)
}
혼합 실현
블렌드 유형은 바로 제가 말하는 Statsd+ 태그 솔루션입니다.인터페이스에서 볼 수 있듯이 나는 두 가지 도량 유형, 즉 증량과 규격만 실현했다.모든 탭에는 키, 값, 문자열에 대한 탭이 있습니다.이것은 statsd 혼합 구현입니다.
package metrics
import (
"fmt"
"strings"
"time"
"github.com/alexcesaro/statsd"
)
// Hybrid metrics
type Hybrid struct {
Statsd StatsdConfig
Client *statsd.Client
AttachLabels bool
}
// StatsdConfig ...
type StatsdConfig struct {
Host string
Prefix string
}
// Init ...
func (m *Hybrid) Init() error {
// Set up the statsd client
client, err := statsd.New(
statsd.Address(m.Statsd.Host),
statsd.Prefix(m.Statsd.Prefix),
statsd.FlushPeriod(time.Second*1),
)
if err != nil {
return fmt.Errorf("Hybrid: Could not connect to %s: %s", m.Statsd.Host, err.Error())
}
m.Client = client
return nil
}
// Format key with labels
func (m *Hybrid) formatKeyWithLabels(key string, labels map[string]string) string {
// Do we want to attach labels?
if m.AttachLabels == false {
return key
}
// Use librato-style tags
// metrim.name#tagName=val,tag2Name=val2:0|c
// https://github.com/prometheus/statsd_exporter#tagging-extensions
if len(key) == 0 {
return key
}
formattedLabels := []string{}
for labelKey, labelVal := range labels {
formattedLabels = append(formattedLabels, fmt.Sprintf("%s=%s", labelKey, labelVal))
}
joinedFormattedLabels := strings.TrimSpace(strings.Join(formattedLabels, ","))
if joinedFormattedLabels != "" {
key = fmt.Sprintf("%s#%s", key, joinedFormattedLabels)
}
return strings.Trim(key, "#")
}
// Increment ...
func (m *Hybrid) Increment(key string, labels map[string]string) {
m.IncrementBy(key, 1, labels)
}
// IncrementBy ...
func (m *Hybrid) IncrementBy(key string, by int, labels map[string]string) {
updatedKey := m.formatKeyWithLabels(key, labels)
if m.Client != nil {
m.Client.Count(updatedKey, by)
}
}
// Gauge ...
func (m *Hybrid) Gauge(key string, value int, labels map[string]string) {
updatedKey := m.formatKeyWithLabels(key, labels)
if m.Client != nil {
m.Client.Gauge(updatedKey, value)
}
}
Grafana Cloud로 보내기
현재 저는 도량을 Prometheus로 내보낼 수 있습니다. Kubernetes 그룹에 실행 중인 기존 Prometheus 서버를 사용하여Grafana Cloud에 쉽게 보낼 수 있습니다.
내가 해야 할 일은 바로 나의 프로메테우스 스크레이퍼 설정에 다음과 같은 내용을 추가하는 것이다.
remote_write:
- url: https://prometheus-us-central1.grafana.net/api/prom/push
basic_auth:
username: '<my-user-id-here>'
password: '<my-auth-token-here>'
결론
내가 가장 걱정하는 것은 내가 이 문장 맨 위에 열거한 세 가지 문제다.
믿음: 나는 그들을 믿습니까?지금까지 나는 그들을 믿지 않을 이유가 없다.이것은 결함일 수도 있지만, 나는 너무 쉽게 믿을 수 있다.
remove_write
기능은 인증(기본 인증)과 암호화(SSL)를 포함한다.저는 회원 링크가 없지만 반드시 sign up for an account무료(단 제한)의metrics 인프라를 받아야 합니다!
Reference
이 문제에 관하여(그라파나 구름층의 Statsd+프로메테우스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ollieparsley/statsd-prometheus-on-grafana-cloud-1740텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)