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_timeouti 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-nodeama-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