Цена за 48 часов в ленте | 3350,00 |
Цена за 1 час закрепления | N/A |
Взаимопиар | Нет |
Дополнительные условия рекламы | Отсутствуют |
sudo apt update
sudo apt install postfix
/etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
sudo systemctl restart postfix
echo "Test email" | mail -s "Test Subject" user@example.com
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@local.example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@local.example.com'
send_resolved: true
# Используем официальный образ Python
FROM python:3.8-slim
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем все файлы в контейнер
COPY . /app
# Устанавливаем зависимости
RUN pip install --no-cache-dir -r requirements.txt
# Определяем команду запуска
CMD ["python", "app.py"]
docker build -t username/myapp:latest .
docker push username/myapp:latest
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: username/myapp:latest
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl get deployments
kubectl get services
kubectl get pods
kubectl autoscale deployment myapp-deployment --cpu-percent=50 --min=1 --max=10
docker build -t username/myapp:v2 .
docker push username/myapp:v2
spec:
template:
spec:
containers:
- name: myapp
image: username/myapp:v2
kubectl apply -f deployment.yaml
.gitlab-ci.yml
для автоматизации деплояstages:
- build
- push
- deploy
variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
build:
stage: build
script:
- docker build -t $DOCKER_IMAGE .
only:
- main
push:
stage: push
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $DOCKER_IMAGE
only:
- main
deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
- kubectl apply -f service.yaml
only:
- main
git clone https://github.com/yourusername/your-repository.git
cd your-repository
mkdir your-repository
cd your-repository
git init
echo "# Your Repository" > README.md
git add README.md
git commit -m "Initial commit"
git remote add origin https://github.com/yourusername/your-repository.git
git push -u origin master
git checkout -b feature-branch
.gitignore
для исключения ненужных файлов из коммитов. echo "node_modules/" > .gitignore
git add .gitignore
git commit -m "Add .gitignore"
# Пример файла .github/workflows/ci.yml для GitHub Actions
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test
lsof
(list open files), чтобы найти процессы, удерживающие файлlsof | grep deleted
kill
:kill -9
df -h
find
, чтобы найти оставшиеся ссылки:find / -samefile <имя_файла>
quota -u
sudo du -sh /tmp
sudo rm -rf /tmp/*
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
umask
. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask
.umask
указывается в восьмеричной системе счисления. umask
: 022umask
: 022umask 0022
touch myfile
ls -l myfile
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
umask 0027
mkdir mydir
ls -ld mydir
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
#!/bin/bash
umask 027
touch file1
mkdir dir1
--storage.tsdb.retention.time
, который устанавливает период хранения временных рядов.--storage.tsdb.retention.time
, данные хранятся 15 дней. Это соответствует 360 часам.prometheus --storage.tsdb.retention.time=30d
services:
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=7d' # 7 дней (168 часов)
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=12h'
/status
→ /status/flags
, где можно увидеть значение параметра --storage.tsdb.retention.time
.-f
.version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"
{
"version": "3.9",
"services": {
"web": {
"image": "nginx",
"ports": ["80:80"]
}
}
}
-f
, чтобы указать Docker Compose, какой файл использоватьdocker-compose -f docker-compose.json up
docker-compose -f docker-compose.json ps
docker-compose.json
{
"version": "3.8",
"services": {
"app": {
"image": "python:3.9",
"volumes": ["./app:/app"],
"working_dir": "/app",
"command": "python app.py"
}
}
}
docker-compose -f docker-compose.json up
return
. my_function() {
if [[ $1 -gt 0 ]]; then
return 0 # Успех
else
return 1 # Ошибка
fi
}
my_function 5
echo $? # Выведет 0 (успех)
echo
. Вывод можно перехватить через подстановку команд $()
my_function() {
echo "Hello, $1!"
}
result=$(my_function "world")
echo "$result" # Выведет "Hello, world!"
my_function() {
result=$(( $1 + $2 ))
}
my_function 3 7
echo $result # Выведет 10
0
обычно означает успех, а любое другое число — ошибку.# Функция проверки файла
check_file() {
if [[ -f $1 ]]; then
echo "Файл $1 существует."
return 0
else
echo "Файл $1 не найден."
return 1
fi
}
# Вызов функции
check_file "/etc/passwd"
status=$? # Сохраняем код завершения
if [[ $status -eq 0 ]]; then
echo "Продолжаем работу..."
else
echo "Останавливаемся из-за ошибки."
fi