https://github.com/romanow/openshift-homework2
https://github.com/romanow/openshift-homework2
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/romanow/openshift-homework2
- Owner: Romanow
- Created: 2022-02-22T15:15:58.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-14T13:50:55.000Z (about 2 years ago)
- Last Synced: 2025-04-16T02:11:26.489Z (over 1 year ago)
- Language: Shell
- Size: 43.9 KB
- Stars: 1
- Watchers: 1
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Домашнее задание: Monitoring
## Формулировка
1. Grafana + Prometheus:
1. создать Dashboard с графиком суммарного потребления памяти java приложениями (Heap + Metaspace);
2. настроить Alerting в Telegram / Slack если потребление памяти больше некоторого порога (выбираете сами по
графику).
2. ELK Stack:
1. в Kibana построить график количества сообщений в логах в разрезе Log Level (debug, info, warn, error);
2. в Kibana построить график количества уникальных запросов за минуту (уникальные TraceId).
## Создание Telegram Bot
1. Создать бота через `@BotFather`
```
/newbot
name: k8s_monitoring_
id: k8s_monitoring_bot
```
2. Создать канал K8S Monitoring, добавить `@k8s_monitoring_` как администратора. Отправить **хотя бы одно
сообщение** в группу.
3. После этого через Telegram API получить chart ID: `http://api.telegram.org/bot/getUpdates`
## Запуск minikube
```shell
$ minikube start --driver=virtualbox --cpus 4 --memory 10240
😄 minikube v1.26.1 на Darwin 12.4
✨ Используется драйвер virtualbox на основе конфига пользователя
👍 Запускается control plane узел minikube в кластере minikube
🔥 Creating virtualbox VM (CPUs=4, Memory=10240MB, Disk=20000MB) ...
🐳 Подготавливается Kubernetes v1.24.3 на Docker 20.10.17 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
▪ Используется образ gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Включенные дополнения: default-storageclass, storage-provisioner
🔎 Компоненты Kubernetes проверяются ...
🏄 Готово! kubectl настроен для использования кластера "minikube" и "default" пространства имён по умолчанию
$ minikube addons enable ingress
💡 ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
▪ Используется образ k8s.gcr.io/ingress-nginx/controller:v1.2.1
▪ Используется образ k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
▪ Используется образ k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
🔎 Verifying ingress addon...
🌟 The 'ingress' addon is enabled
$ sudo tee -a /etc/hosts > /dev/null < `Stack Management` -> `Kibana` -> `Index Pattern` -> Create index
pattern -> Name: `logstash-*`, Timestamp field: `@timestamp`.
### Конфигурация Grafana
Логин и пароль: `admin`/`admin`.
Grafana Dashboard: 10280.
Метрики Prometheus:
```shell
curl "http://localhost:8080/manage/prometheus --user management:passwd" | jq
```
### Возможные ошибки
##### Ошибка скачивания образов Error: ErrImagePull
```
Failed to pull image "romanowalex/order-service:v1.0-lecture": rpc error: code = Unknown desc = context deadline exceeded
```
Причина: kubelet не успевает загрузить образ за 2 минуты, и надо его загрузить в minikube руками.
```shell
$ minikube image pull romanowalex/order-service:v1.0-lecture
```
##### Ошибка скачивания ElasticSearch, Logstash, Kibana
```
The Amazon CloudFront distribution is configured to block access from your country.
We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error.
Try again later, or contact the app or website owner
```
Для скачивания образов ElasticSearch нужно включить VPN, т.к. docker.elastic.co отказывается скачивать с российских ip.
##### Ошибка синхронизации времени внутри VM
Если VM ушла в сон, то она некорректно синхронизирует время с host машиной. В случае возникновения ошибки:
```
Error fetching server time: Detected 41629.25100016594 seconds time difference between your browser and the server.
```
Решение: нужно синхронизировать время:
```shell
minikube ssh -- docker run -it --rm --privileged --pid=host alpine nsenter -t 1 -m -u -n -i date -u $(date -u +%m%d%H%M%Y.%S)
```
## Ссылки
1. [minikube start](https://minikube.sigs.k8s.io/docs/start/)