From 1aeacc8f9423e759e602ca8cb109cb20feb2ad40 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 5 Jun 2024 10:48:30 +0300 Subject: [PATCH] homework 8 --- kubernetes-monitoring/nginx/Dockerfile | 6 ++++ kubernetes-monitoring/nginx/deployment.yaml | 32 ++++++++++++++++++ kubernetes-monitoring/nginx/nginx.conf | 22 ++++++++++++ kubernetes-monitoring/nginx/service.yaml | 20 +++++++++++ .../prometheus-stack/serviceMonitor.yaml | 16 +++++++++ .../prometheus-stack/values.yaml | Bin 0 -> 327028 bytes kubernetes-monitoring/readme.md | 32 ++++++++++++++++++ 7 files changed, 128 insertions(+) create mode 100644 kubernetes-monitoring/nginx/Dockerfile create mode 100644 kubernetes-monitoring/nginx/deployment.yaml create mode 100644 kubernetes-monitoring/nginx/nginx.conf create mode 100644 kubernetes-monitoring/nginx/service.yaml create mode 100644 kubernetes-monitoring/prometheus-stack/serviceMonitor.yaml create mode 100644 kubernetes-monitoring/prometheus-stack/values.yaml create mode 100644 kubernetes-monitoring/readme.md diff --git a/kubernetes-monitoring/nginx/Dockerfile b/kubernetes-monitoring/nginx/Dockerfile new file mode 100644 index 0000000..0a484f1 --- /dev/null +++ b/kubernetes-monitoring/nginx/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:1.14.2 +RUN rm /etc/nginx/conf.d/default.conf +ADD nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/kubernetes-monitoring/nginx/deployment.yaml b/kubernetes-monitoring/nginx/deployment.yaml new file mode 100644 index 0000000..685de37 --- /dev/null +++ b/kubernetes-monitoring/nginx/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx + namespace: homework + labels: + app: nginx +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nvyakimov/my-nginx:v1.0.0 + ports: + - containerPort: 80 + - name: nginx-exporter + image: 'nginx/nginx-prometheus-exporter:1.1.0' + args: + - '-nginx.scrape-uri=http://homework.otus/nginx-metrics' + ports: + - containerPort: 9113 \ No newline at end of file diff --git a/kubernetes-monitoring/nginx/nginx.conf b/kubernetes-monitoring/nginx/nginx.conf new file mode 100644 index 0000000..9b631c8 --- /dev/null +++ b/kubernetes-monitoring/nginx/nginx.conf @@ -0,0 +1,22 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + location /nginx-metrics { + stub_status on; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file diff --git a/kubernetes-monitoring/nginx/service.yaml b/kubernetes-monitoring/nginx/service.yaml new file mode 100644 index 0000000..81b91b9 --- /dev/null +++ b/kubernetes-monitoring/nginx/service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + name: nginx-service + namespace: homework + labels: + app: nginx +spec: + type: ClusterIP + selector: + app: nginx + ports: + - name: nginx-port + protocol: TCP + port: 80 + targetPort: 80 + - name: nginx-exporter-port + protocol: TCP + port: 9113 + targetPort: 9113 \ No newline at end of file diff --git a/kubernetes-monitoring/prometheus-stack/serviceMonitor.yaml b/kubernetes-monitoring/prometheus-stack/serviceMonitor.yaml new file mode 100644 index 0000000..b6a8c7f --- /dev/null +++ b/kubernetes-monitoring/prometheus-stack/serviceMonitor.yaml @@ -0,0 +1,16 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: nginx-exporter-sm + namespace: prometheus + labels: + release: prometheus-stack +spec: + namespaceSelector: + any: true + selector: + matchLabels: + app: nginx + endpoints: + - port: nginx-exporter-port + scheme: http \ No newline at end of file diff --git a/kubernetes-monitoring/prometheus-stack/values.yaml b/kubernetes-monitoring/prometheus-stack/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3867713451dd1133393683f8c2dbf040b78cd3dc GIT binary patch literal 327028 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

6-X*$CNiaP#mX-QT+qewmB4rS#{%zbt6t3Hf} zgK}tqI_nSPCnzM(0p)XVuZ6u`<@8YgKH%~>e9pHcf2yzl@bK34)*;^uI$S@d!1>Co z={lSB^skaYAqt5D;8V%!p<{bqJBWDTJE!^L7yZ^S+lsZhDq-9G39v57dP z-JwX+KU5!AAxMC%{hwXWJtd? zug-rG)$j>OI=)bH)Jl+~nJS=idwfQA`L(rh$+n zXkT!C9)30>G9cEw;#_eYcU}~Q0Cj(Y^Q?l_uoH;!Qb)()aUN)mts|P|MmFkoj5=CyEx17uMshQ7{7ffsQSl<<6n#4 zza1xDuf(S>%SYTd=j(&IUsm9H0U7Y1mAW!;_}zxr#E74SzP2yyo0x7@AhT(Aj-NN z5mG~EmjH>z18Fx`**j7M)Yw&?K@!9<`Cadz@?6&H<-e+a;IluCIg*p|yy%|w!110} zAP&^YUhPQB8YAoIq$C@i%&4r7A+XZ;CRurDSevP|JJIk(8H@JCB<+evg}ov@`+O=% zBusS` z$l!>$Pn?XU{c_0zupPEr#67J4Xn{5@#Lf6!I~RK72p{d)i@#Kt)dBST1rPWHwRo0} zptOF{$v-YsQ%7I*fUNdlcv|rnegOJ#k9a>{R_1DLZ7){$AIlXG$-lQz-G0Dr57E!Q SzAm%pICeq};j9AAy#F6ZJW*Ky literal 0 HcmV?d00001 diff --git a/kubernetes-monitoring/readme.md b/kubernetes-monitoring/readme.md new file mode 100644 index 0000000..a137a05 --- /dev/null +++ b/kubernetes-monitoring/readme.md @@ -0,0 +1,32 @@ +1) запустить миникуб minikube start --registry-mirror=https://c.163.com +2) запустить деплоймент с кастомным образом nginx и экспортером: kubectl apply -f .\nginx\deployment.yaml +3) включить сервис для него: kubectl apply -f .\nginx\service.yaml +4) создать неймспейс для prometheus-operator: kubectl create ns prometheus +5) установить prometheus-operator. Для этого выполнить команды: +- helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +- helm repo update +- helm -n prometheus install prometheus-stack prometheus-community/kube-prometheus-stack + +6) добавить настройку для скейпинга метрик nginx: + вариант №1: + получить values из чарта: helm show values prometheus-community/kube-prometheus-stack > .\prometheus-stack\values.yaml + + в values добавить + additionalServiceMonitors: + - name: "nginx-exporter" + namespaceSelector: + any: true + selector: + matchLabels: + app: nginx + endpoints: + - port: "nginx-exporter-port" + - targetPort: "nginx-exporter-port" + scheme: http + и выполнить helm -n prometheus upgrade -f .\prometheus-stack\values.yaml prometheus-stack prometheus-community/kube-prometheus-stack + + вариант №2: применить настройку из файла serviceMonitor.yaml + выполнить kubectl apply -f .\prometheus-stack\serviceMonitor.yaml + +7) пробросить порт для графаны: kubectl -n prometheus port-forward svc/prometheus-stack-grafana 8080:80 + ипортировать дашборд 12708 , уюбедиться, что на нем есть информация о работе nginx \ No newline at end of file