Tworzenie i weryfikowanie niestandardowego pliku konfiguracji dla metryk Rozwiązania Prometheus w usłudze Azure Monitor
Oprócz domyślnych elementów docelowych zeskrobywania agenta prometheus usługi Azure Monitor domyślnie wykonaj następujące kroki, aby zapewnić więcej konfiguracji zeskrobania agenta przy użyciu mapy konfiguracji. Agent Prometheus usługi Azure Monitor nie rozumie ani nie rozumie identyfikatorów CRD operatora przetwarzania na potrzeby konfiguracji złomowania, ale zamiast tego używa natywnej konfiguracji rozwiązania Prometheus zdefiniowanej w konfiguracji Rozwiązania Prometheus.
Trzy mapy konfiguracji, które mogą być używane do niestandardowego złomowania obiektów docelowych, to :
- ama-metrics-prometheus-config (zalecane) — po utworzeniu mapy konfiguracji o tej nazwie zadania zdefiniowane w nim są uruchamiane z zasobnika repliki metryk usługi Azure Monitor uruchomionego w klastrze.
- ama-metrics-prometheus-config-node (Zaawansowane) — po utworzeniu mapy konfiguracji o tej nazwie zadania zdefiniowane w nim są uruchamiane z każdego zasobnika DaemonSet systemu Linux uruchomionego w klastrze. Aby uzyskać więcej informacji, zobacz Konfiguracja zaawansowana.
- ama-metrics-prometheus-config-node-windows (zaawansowane) — po utworzeniu mapy konfiguracji o tej nazwie zadania zeskropka zdefiniowane w nim są uruchamiane z każdego zestawu daemonSet systemu Windows . Aby uzyskać więcej informacji, zobacz Konfiguracja zaawansowana.
Tworzenie pliku konfiguracji rozwiązania Prometheus
Jednym z łatwiejszych sposobów tworzenia zadań konfiguracji rozwiązania Prometheus:
- Krok:1 Używanie pliku konfiguracji (yaml) do tworzenia/definiowania zadań złomowania
- Krok:2 Zweryfikuj plik konfiguracji zeskrobania przy użyciu narzędzia niestandardowego (zgodnie z opisem w tym artykule), a następnie przekonwertuj ten plik konfiguracji na configmap
- Krok:3 Wdróż plik konfiguracji zeskrobania jako configmap do klastrów.
Dzięki temu łatwiej jest tworzyć konfigurację yaml (która jest bardzo wrażliwa na przestrzeń), a nie dodawać niezamierzonych spacji, bezpośrednio tworząc konfigurację zeskropka wewnątrz mapy konfiguracji.
Utwórz plik konfiguracji programu Prometheus o nazwie prometheus-config
. Aby uzyskać więcej informacji, zobacz porady dotyczące konfiguracji i przykłady , które zawierają więcej informacji na temat tworzenia konfiguracji złomowania dla rozwiązania Prometheus. Możesz również zapoznać się z dokumentacją konfiguracji Prometheus.io złomowania. Plik konfiguracji zawiera listę konfiguracji zeskropków w sekcji sekcji scrape_configs
i opcjonalnie może użyć sekcji globalnej do ustawienia globalnej scrape_interval
, scrape_timeout
i external_labels
.
Napiwek
Zmiany w sekcji globalnej będą mieć wpływ na domyślne konfiguracje i niestandardową konfigurację.
Oto przykładowy plik konfiguracji rozwiązania Prometheus:
global:
scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
scrape_interval: 60s
static_configs:
- targets: ['my-static-service.svc.cluster.local:1234']
- job_name: prometheus_example_app
scheme: http
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: "prometheus-example-service"
Weryfikowanie pliku konfiguracji zeskrobania
Agent używa niestandardowego promconfigvalidator
narzędzia, aby zweryfikować konfigurację prometheus nadaną jej za pomocą mapy konfiguracji. Jeśli konfiguracja jest nieprawidłowa, otrzymana konfiguracja niestandardowa zostanie odrzucona przez agenta dodatku. Po utworzeniu pliku konfiguracji rozwiązania Prometheus możesz opcjonalnie użyć promconfigvalidator
narzędzia do zweryfikowania konfiguracji przed utworzeniem mapy konfiguracji używanej przez agenta.
Narzędzie promconfigvalidator
jest dostarczane wewnątrz zasobników metryk usługi Azure Monitor. Aby pobrać narzędzie do walidacji, możesz użyć dowolnego ama-metrics-node-*
zasobnika w kube-system
przestrzeni nazw w klastrze. Użyj kubectl cp
polecenia , aby pobrać narzędzie i jego konfigurację:
for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator; kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done
Po skopiowaniu pliku wykonywalnego i pliku yaml znajdź ścieżkę utworzonego pliku konfiguracji rozwiązania Prometheus. Następnie zastąp element <config path>
w poleceniu i uruchom moduł sprawdzania poprawności za pomocą polecenia :
./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"
Uruchomienie modułu sprawdzania poprawności generuje scalony plik merged-otel-config.yaml
konfiguracji, jeśli nie podano ścieżki z opcjonalnym output
parametrem. Nie używaj tego automatycznie wygenerowanego pliku scalonego jako konfiguracji do agenta modułu zbierającego metryki, ponieważ jest on używany tylko do sprawdzania poprawności i debugowania narzędzi.
Wdrażanie pliku konfiguracji jako mapy konfiguracji
Niestandardowy plik konfiguracji rozwiązania Prometheus jest używany jako pole o nazwie prometheus-config
inside metrics addon configmap(s) ama-metrics-prometheus-config
(lub) ama-metrics-prometheus-config-node
ama-metrics-prometheus-config-node-windows
w kube-system
przestrzeni nazw. Możesz utworzyć mapę konfiguracji na podstawie utworzonego powyżej pliku konfiguracji złomowania, zmieniając nazwę pliku konfiguracji Rozwiązania Prometheus na prometheus-config
(bez rozszerzenia pliku) i uruchamiając co najmniej jedno z następujących poleceń, w zależności od tego, która mapa konfiguracji ma zostać utworzona dla niestandardowych zadań złomowania.
Ex;- aby utworzyć configmap do użycia przez replicsset
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
Spowoduje to utworzenie mapy konfiguracji o nazwie ama-metrics-prometheus-config
w kube-system
przestrzeni nazw. Zasobnik repliki metryk usługi Azure Monitor jest uruchamiany ponownie w ciągu 30–60 sekund, aby zastosować nową konfigurację. Aby sprawdzić, czy występują problemy z walidacją konfiguracji, przetwarzaniem lub scalaniem, możesz przyjrzeć ama-metrics
się zasobnikom replik
Ex;- aby utworzyć configmap do użycia przez element DaemonSet systemu Linux
kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system
Spowoduje to utworzenie mapy konfiguracji o nazwie ama-metrics-prometheus-config-node
w kube-system
przestrzeni nazw. Wszystkie metryki narzędzia DaemonSet usługi Azure Monitor są uruchamiane ponownie w ciągu 30–60 sekund, aby zastosować nową konfigurację. Aby sprawdzić, czy występują problemy z walidacją konfiguracji, przetwarzaniem lub scalaniem, możesz zapoznać ama-metrics-node
się z zasobnikami deamonset systemu Linux
Ex;- aby utworzyć configmap do użycia przez element DaemonSet systemu Windows
kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system
Spowoduje to utworzenie mapy konfiguracji o nazwie ama-metrics-prometheus-config-node-windows
w kube-system
przestrzeni nazw. Wszystkie metryki usługi Azure Monitor demona systemu Windows są uruchamiane ponownie w ciągu 30–60 sekund, aby zastosować nową konfigurację. Aby sprawdzić, czy występują problemy z walidacją konfiguracji, przetwarzaniem lub scalaniem, możesz zapoznać ama-metrics-win-node
się z zasobnikami deamonset systemu Windows
Upewnij się, że plik konfiguracji Prometheus ma nazwę prometheus-config
przed uruchomieniem następującego polecenia, ponieważ nazwa pliku jest używana jako nazwa ustawienia configmap.
Spowoduje to utworzenie mapy konfiguracji o nazwie ama-metrics-prometheus-config
w kube-system
przestrzeni nazw. Zasobnik metryk usługi Azure Monitor zostanie uruchomiony ponownie, aby zastosować nową konfigurację. Aby sprawdzić, czy występują problemy z walidacją konfiguracji, przetwarzaniem lub scalaniem, możesz przyjrzeć się ama-metrics
zasobnikom.
Oto przykład ama-metrics-prometheus-config
mapy konfiguracji.
Rozwiązywanie problemów
Jeśli pomyślnie utworzono configmap (ama-metrics-prometheus-config lub ama-metrics-prometheus-config-node) w przestrzeni nazw kube-system i nadal nie widać obiektów docelowych niestandardowych, które są zeskropane, Sprawdź błędy w dziennikach zasobnika repliki dla elementu ama-metrics-prometheus-config configmap lub DaemonSet pod logs for ama-metrics-prometheus-config-node configmap) przy użyciu dzienników kubectl i upewnij się, że w dziennikach narzędzia kubectl nie występują błędy Rozpocznij scalanie sekcji Default i Custom Prometheus Config z prefiksem prometheus-config-merger
Uwaga
Konfiguracja zaawansowana: konfigurowanie niestandardowych zadań złomowania rozwiązania Prometheus dla elementu DaemonSet
Zasobnik ama-metrics
Replika używa niestandardowej konfiguracji Prometheus i złomuje określone obiekty docelowe. W przypadku klastra z dużą liczbą węzłów i zasobników oraz dużą liczbą metryk do złomowania niektóre z odpowiednich niestandardowych elementów docelowych ze złomowania można odciążyć z pojedynczego ama-metrics
zasobnika repliki do ama-metrics
zasobnika DaemonSet.
Mapa konfiguracji ama-metrics-prometheus-config-node jest podobna do mapy konfiguracji zestawu replik i może zostać utworzona w celu utworzenia statycznych konfiguracji złomowania w każdym węźle. Konfiguracja złomowania powinna dotyczyć tylko jednego węzła i nie powinna używać adnotacji odnajdywania/zasobników usługi. W przeciwnym razie każdy węzeł próbuje zeskrobać wszystkie obiekty docelowe i wykonuje wiele wywołań serwera interfejsu API Kubernetes.
Niestandardowe elementy docelowe zeskrobania mogą mieć taki sam format, używając static_configs
obiektów docelowych i zmiennej $NODE_IP
środowiskowej oraz określając port do złomowania. Każdy zasobnik zestawu DaemonSet pobiera konfigurację, złomuje metryki i wysyła je do tego węzła.
Example:- Następująca node-exporter
konfiguracja jest jednym z domyślnych obiektów docelowych dla zasobników DaemonSet. Używa zmiennej środowiskowej $NODE_IP
, która jest już ustawiona dla każdego ama-metrics
kontenera dodatku, aby kierować do określonego portu w węźle.
- job_name: nodesample
scrape_interval: 30s
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9100']
Następne kroki
- Dowiedz się więcej o zbieraniu metryk rozwiązania Prometheus.