Compare commits
4 Commits
a92bf6e8d2
...
ad5c3d983a
Author | SHA1 | Date | |
---|---|---|---|
ad5c3d983a | |||
6fa690dd96 | |||
f04048e3c0 | |||
5bf0d5327e |
82
docs/Other/InfluxDB.md
Normal file
82
docs/Other/InfluxDB.md
Normal file
@ -0,0 +1,82 @@
|
||||
### Influx1.x
|
||||
|
||||
- `unflux` - подключиться
|
||||
- `show databases` - список бд
|
||||
- `create database <db>` - создать бд
|
||||
- `drop database <db>` - удалить бд
|
||||
|
||||
---
|
||||
|
||||
- `USE mydb` - перейти в БД
|
||||
- `SHOW MEASUREMENTS` - показать измерения
|
||||
- `SHOW FIELD KEYS` - показать все поля
|
||||
- `SHOW TAG KEYS` - показать все
|
||||
- `SHOW TAG KEYS FROM "measurement_name"` - показать теги определенного измерения
|
||||
- `SHOW RETENTION POLICIES ON mydb` - посмотреть политики хранения на бд
|
||||
- `CREATE RETENTION POLICY "one_week" ON mydb DURATION 7d REPLICATION 1`
|
||||
- `ALTER RETENTION POLICY "one_week" ON mydb DURATION 14d`
|
||||
- `DROP RETENTION POLICY "one_week" ON mydb`
|
||||
|
||||
---
|
||||
|
||||
- `SHOW USERS` - показать пользователей
|
||||
- `CREATE USER username WITH PASSWORD 'password'` - создать пользователя
|
||||
- `GRANT ALL PRIVILEGES TO username` - дать пользователю права администратора
|
||||
- `GRANT READ ON mydb TO username` - дать права на базу данных
|
||||
- `DROP USER username` - удалить пользователя
|
||||
|
||||
---
|
||||
|
||||
- `influxd backup -database mydb /path/to/backup` - резервное копирование бд
|
||||
- `influxd restore -database mydb /path/to/backup` - восстановление бд
|
||||
|
||||
### Influx2.x
|
||||
|
||||
- `SHOW BUCKETS` - показать список бакетов
|
||||
- `CREATE BUCKET mybucket` - создать бакет
|
||||
- `DROP BUCKET mybucket` - удалить бакет
|
||||
|
||||
- `SHOW MEASUREMENTS ON "mybucket"` - показать измерения в бакете
|
||||
- `ALTER BUCKET mybucket SET RETENTION 7d` - политика хранения
|
||||
|
||||
- Записать данные через API
|
||||
```bash
|
||||
curl --request POST "http://localhost:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=ns" \
|
||||
--header "Authorization: Token YOUR_API_TOKEN" \
|
||||
--data-raw "temperature,location=server1 value=25.6"
|
||||
```
|
||||
|
||||
- Запрос данных через Flux
|
||||
```
|
||||
from(bucket: "my-bucket")
|
||||
|> range(start: -1h)
|
||||
|> filter(fn: (r) => r._measurement == "temperature" and r.location == "server1")
|
||||
|> mean()
|
||||
```
|
||||
|
||||
- `SELECT * FROM "mybucket"."autogen"."temperature" WHERE location = 'server1'` - если включен
|
||||
|
||||
- `influx auth list` - показать список токенов
|
||||
- `influx auth create --org myorg --all-access` - создать токен
|
||||
- `influx auth delete --id TOKEN_ID` - удалить токен
|
||||
|
||||
---
|
||||
|
||||
- `influx org list` - посмотреть список организаций
|
||||
- `influx org create -n myorg` - создать организацию
|
||||
- `influx org delete -n myorg` - удалить организацию
|
||||
|
||||
---
|
||||
|
||||
- `influx task list --org myorg` - просмотр списка задач
|
||||
- `influx task delete --id taskid` - удаление задачи
|
||||
|
||||
---
|
||||
|
||||
- `influxd backup -bucket mybucket /path/to/backup` - резервное копирование бд
|
||||
- `influxd restore -bucket mybucket /path/to/backup` - восстановление бд
|
||||
|
||||
### Telegraf
|
||||
|
||||
- `telegraf --config /etc/telegraf/telegraf.conf --test` - запустить телеграф в режиме отладки
|
||||
|
212
docs/Other/MariaDB.md
Normal file
212
docs/Other/MariaDB.md
Normal file
@ -0,0 +1,212 @@
|
||||
### MariaDB
|
||||
|
||||
- `mysql -u [user] -p` - локальное подключение к серверу
|
||||
- `mysql -h [host] -P [port] -u [user] -p` - удалённое подключение к серверу
|
||||
|
||||
---
|
||||
|
||||
- `SHOW DATABASES;` - показать все бд
|
||||
- `CREATE DATABASE [db_name];` - создать бд
|
||||
- `DROP DATABASE [db_name];` - удалить бд
|
||||
|
||||
---
|
||||
|
||||
- `USE [db_name];` - использовать бд
|
||||
- `SHOW TABLES;` - показать таблицы
|
||||
- `DROP TABLE [table_name];` - удалить таблицу
|
||||
- `TRUNCATE TABLE [table_name];` - очистить таблицу (удалить все данные)
|
||||
- `DESCRIBE [table_name]` или `SHOW COLUMNS FROM [table_name];` - структура таблицы
|
||||
|
||||
---
|
||||
|
||||
- `CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';` - создать пользователя, может коннектиться к базе только через `localhost`
|
||||
|
||||
- Права
|
||||
```sql
|
||||
GRANT SELECT, INSERT ON [db_name].[table_name] TO 'username'@'localhost';
|
||||
GRANT ALL PRIVILEGES ON [db_name].* TO 'username'@'localhost';
|
||||
```
|
||||
- `REVOKE INSERT ON [db_name].[table_name] FROM 'username'@'localhost';` - отозвать права
|
||||
- `FLUSH PRIVILEGES;` - обновить права
|
||||
- `RENAME USER 'user1'@'localhost' TO 'user1'@'192.168.1.100';` - изменить пользователя (имя, доступ с какого хоста)
|
||||
- `DROP USER 'username'@'localhost';` - удалить пользователя
|
||||
- `SELECT user, host FROM mysql.user;` - список пользователей и хостов
|
||||
|
||||
---
|
||||
|
||||
- Изменение таблицы
|
||||
```
|
||||
ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type];
|
||||
ALTER TABLE [table_name] DROP COLUMN [column_name];
|
||||
```
|
||||
|
||||
- Пример запроса на чтение данных
|
||||
```sql
|
||||
SELECT * FROM [table_name];
|
||||
SELECT column1, column2 FROM [table_name] WHERE condition;
|
||||
-- Примеры условий:
|
||||
WHERE id = 5;
|
||||
WHERE created_at BETWEEN '2023-01-01' AND '2023-12-31';
|
||||
WHERE column1 LIKE '%pattern%';
|
||||
```
|
||||
|
||||
- Обновить данные
|
||||
```sql
|
||||
UPDATE [table_name] SET column1 = 'new_value' WHERE condition;
|
||||
```
|
||||
|
||||
- Удалить данные
|
||||
```sql
|
||||
DELETE FROM [table_name] WHERE condition;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- Индексы
|
||||
```sql
|
||||
-- Создать индекс
|
||||
CREATE INDEX [index_name] ON [table_name] (column1, column2); -- по умолчанию btree
|
||||
-- Удалить индекс
|
||||
DROP INDEX [index_name] ON [table_name];
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- `mysqldump -u [user] -p [db_name] > backup.sql` - резервное копирование бд (`-p --all-databases` - все бд)
|
||||
- `mysql -u [user] -p [db_name] < backup.sql` - восстановление бд
|
||||
|
||||
---
|
||||
|
||||
- `mariabackup --backup --user=[user] --password=[password] --target-dir=/backup/` - бэкап быстрее, бинарный формат, не блокирует таблицы, перед восстановлением необходимо завершить все транзации - `mariabackup --prepare --target-dir=/backup/`
|
||||
- Восстановление бэкапа
|
||||
```bash
|
||||
sudo systemctl stop mariadb
|
||||
sudo rm -rf /var/lib/mysql/*
|
||||
mariabackup --copy-back --target-dir=/backup/
|
||||
sudo chown -R mysql:mysql /var/lib/mysql
|
||||
sudo systemctl start mariadb
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- План выполнения запроса
|
||||
```sql
|
||||
EXPLAIN SELECT * FROM table_name WHERE column1 = 'value';
|
||||
```
|
||||
|
||||
- Выполняет запрос и показывает фактический план выполнения с реальными метриками (время, количество строк и т.д.)
|
||||
```sql
|
||||
ANALYZE FORMAT=JSON SELECT * FROM table_name WHERE column1 = 'value';
|
||||
```
|
||||
|
||||
- `SHOW PROFILE` Показывает профиль выполнения запроса
|
||||
```sql
|
||||
SET profiling = 1;
|
||||
SELECT * FROM table_name WHERE column1 = 'value';
|
||||
SHOW PROFILE;
|
||||
```
|
||||
|
||||
??? info "SHOW PROFILE"
|
||||
SHOW PROFILE — это инструмент для анализа времени выполнения отдельных этапов запроса. Показывает, сколько времени заняла каждая операция (например, парсинг, выполнение, отправка данных).
|
||||
|
||||
+----------------------+----------+
|
||||
| Status | Duration |
|
||||
+----------------------+----------+
|
||||
| starting | 0.000123 |
|
||||
| checking permissions | 0.000045 |
|
||||
| Opening tables | 0.000067 |
|
||||
| init | 0.000034 |
|
||||
| System lock | 0.000023 |
|
||||
| optimizing | 0.000056 |
|
||||
| executing | 0.000078 |
|
||||
| Sending data | 0.001234 |
|
||||
| end | 0.000045 |
|
||||
| query end | 0.000034 |
|
||||
| closing tables | 0.000023 |
|
||||
| freeing items | 0.000045 |
|
||||
| cleaning up | 0.000034 |
|
||||
+----------------------+----------+
|
||||
|
||||
- Показывает активные соединения и выполняемые запросы.
|
||||
```sql
|
||||
SHOW FULL PROCESSLIST;
|
||||
```
|
||||
|
||||
- Показывает статус InnoDB, включая информацию о блокировках, транзакциях и буферах.
|
||||
```sql
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
```
|
||||
|
||||
- Показывает статистику сервера
|
||||
```sql
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';
|
||||
```
|
||||
|
||||
- Завершает выполнение запроса по его ID.
|
||||
```sql
|
||||
KILL [process_id];
|
||||
```
|
||||
|
||||
- Перестраивает таблицу и освобождает неиспользуемое пространство.
|
||||
```sql
|
||||
OPTIMIZE TABLE table_name;
|
||||
```
|
||||
|
||||
- Обновляет статистику для оптимизатора.
|
||||
```sql
|
||||
ANALYZE TABLE table_name;
|
||||
```
|
||||
|
||||
- Проверяет целостность таблицы.
|
||||
```sql
|
||||
CHECK TABLE table_name;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- Логирование медленных запросов
|
||||
```sql
|
||||
SET GLOBAL slow_query_log = 'ON';
|
||||
SET GLOBAL long_query_time = 1; -- Запросы дольше 1 секунды
|
||||
```
|
||||
|
||||
- Показывает статистику выполнения запросов.
|
||||
```sql
|
||||
SELECT * FROM performance_schema.events_statements_summary_by_digest;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Настройки
|
||||
|
||||
- `SHOW VARIABLES;` - посмотреть текущие настройки
|
||||
|
||||
!!! info "Конфиги"
|
||||
Основной конфиг: `/etc/my.cnf` или `/etc/mysql/my.cnf`
|
||||
|
||||
Дополнительные конфиги: `/etc/mysql/conf.d/` или `/etc/mysql/mariadb.conf.d/`
|
||||
|
||||
Пример структуры:
|
||||
```ini
|
||||
[mysqld]
|
||||
datadir = /var/lib/mysql
|
||||
bind-address = 0.0.0.0
|
||||
innodb_buffer_pool_size = 1G
|
||||
```
|
||||
|
||||
!!! info "Логи"
|
||||
Общий лог: `/var/log/mysql/mysql.log` (логирует все запросы).
|
||||
|
||||
Лог ошибок: `/var/log/mysql/error.log` (или `/var/log/mariadb/mariadb.log`)
|
||||
|
||||
Бинарный лог (журнал транзакций): `/var/lib/mysql/mysql-bin.*` (включает все изменения данных)
|
||||
|
||||
`mysqlbinlog /var/lib/mysql/mysql-bin.000001` - для просмотра бинарных логов
|
||||
|
||||
Лог медленных запросов: `/var/log/mysql/mysql-slow.log`
|
||||
|
||||
|
||||
!!! info ""
|
||||
По умолчанию данные лежат в `/var/lib/mysql/`
|
||||
|
||||
Можно посмотреть в конфиге параметр `datadir`
|
@ -2,4 +2,4 @@
|
||||
|
||||
## DevOps База знаний
|
||||
|
||||
## Здесь я буду хранить свои заметки и инструкции, которые пишу для себя!!!!
|
||||
## Мои заметки и инструкции
|
||||
|
@ -61,6 +61,103 @@ WantedBy=multi-user.target
|
||||
- `sudo systemctl start prometheus`
|
||||
- `sudo systemctl enable prometheus`
|
||||
|
||||
#### Настройка TLS
|
||||
|
||||
- `touch web-config.yml` - создать конфигурационный файл для настойки TLS
|
||||
|
||||
- Добавить в Unit-файл пусть к конфигу TLS в директиве `ExecStart`
|
||||
```bash
|
||||
ExecStart=/usr/local/bin/prometheus \
|
||||
--config.file /etc/prometheus/prometheus.yml \
|
||||
--storage.tsdb.path /etc/prometheus/data \
|
||||
--web.config.file /etc/prometheus/web-config.yml
|
||||
```
|
||||
|
||||
- `certbot certonly --nginx -d prometheus.mcarov.pro` - сгенирировать сертификаты, команду не хочу пояснять
|
||||
|
||||
!!! tip "Если на сервере нет Nginx"
|
||||
`certbot certonly --standalone -d prometheus.mcarov.pro`
|
||||
|
||||
- Добавить Серт и Ключ в `web-config.yml`
|
||||
```
|
||||
tls_server_config:
|
||||
cert_file: /home/prometheus/certs/example.com/example.com.crt
|
||||
key_file: /home/prometheus/certs/example.com/example.com.key
|
||||
```
|
||||
|
||||
- Добавить строку в `/etc/crontab` для обновления серта
|
||||
```
|
||||
0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q
|
||||
```
|
||||
|
||||
- Создать скрипт `/etc/letsencrypt/renewal-hooks/deploy/set-permissions-and-restart-prometheus.sh`
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Выдать права пользователю prometheus
|
||||
setfacl -R -m u:prometheus:rX /etc/letsencrypt/
|
||||
|
||||
# Перезагрузить Prometheus
|
||||
systemctl restart prometheus
|
||||
```
|
||||
- `chmod +x /etc/letsencrypt/renewal-hooks/deploy/set-permissions-and-restart-prometheus.sh`
|
||||
|
||||
- `certbot renew --dry-run` - для отладки процесса обновления сертификатов
|
||||
|
||||
- Создать конфиг nginx в `/etc/nginx/sites-available`
|
||||
```
|
||||
server {
|
||||
server_name prometheus.mcarov.pro;
|
||||
|
||||
location / {
|
||||
client_max_body_size 512M;
|
||||
proxy_pass https://127.0.0.1:9090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
access_log /var/log/nginx/prometheus.mcarov.pro.access.log;
|
||||
error_log /var/log/nginx/prometheus.mcarov.pro.error.log;
|
||||
|
||||
listen 443 ssl;
|
||||
ssl_certificate /etc/letsencrypt/live/prometheus.mcarov.pro/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/prometheus.mcarov.pro/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
}
|
||||
|
||||
server {
|
||||
if ($host = prometheus.mcarov.pro) {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
|
||||
listen 80;
|
||||
server_name prometheus.mcarov.pro;
|
||||
return 404;
|
||||
|
||||
}
|
||||
```
|
||||
- `ln -s /etc/nginx/sites-available/prometheus.mcarov.pro /etc/nginx/sites-enabled/`
|
||||
- `nginx -t`
|
||||
- `systemctl reload nginx`
|
||||
|
||||
#### Аутентификация для Prometheus Server
|
||||
|
||||
- `htpasswd -nBC 10 "" | tr -d ':\n'` - выполнить
|
||||
|
||||
- Добавить в `web-config.yml`
|
||||
```yml
|
||||
basic_auth_users:
|
||||
# user: password (hash)
|
||||
admin: $2y$10$QzpQ2fO9TpU1Hm4VbB6AMO8ZsdoplfesfAmI8MFB402BVIu5gf.TK
|
||||
```
|
||||
- `systemctl restart prometheus`
|
||||
|
||||
- В UI Grafana настроить Basic auth в Data Source
|
||||
|
||||
#### Node exporter install
|
||||
- `wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-arm64.tar.gz` - скачиваем node exporter на удалённый хост
|
||||
|
||||
@ -89,10 +186,62 @@ ExecStart=/usr/local/bin/node_exporter
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
- `systemctl daemon-reload`
|
||||
- `sudo systemctl daemon-reload`
|
||||
- `sudo systemctl start node_exporter`
|
||||
- `sudo systemctl enable node_exporter`
|
||||
|
||||
#### Настройка TLS
|
||||
|
||||
- `touch web.yml`
|
||||
- Создать `openssl.cnf` и наполнить содержимым:
|
||||
```
|
||||
[req]
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
distinguished_name = dn
|
||||
|
||||
[dn]
|
||||
CN = 150.241.66.94
|
||||
|
||||
[v3_ext]
|
||||
authorityKeyIdentifier=keyid,issuer:always
|
||||
basicConstraints=CA:FALSE
|
||||
keyUsage=digitalSignature,keyEncipherment
|
||||
extendedKeyUsage=serverAuth
|
||||
subjectAltName=@alt_names
|
||||
|
||||
[alt_names]
|
||||
IP.1 = 150.241.66.94
|
||||
```
|
||||
|
||||
- `sudo openssl req -x509 -newkey rsa:2048 -keyout node_exporter.key -out node_exporter.pem -days 36500 -nodes -config openssl.cnf -extensions v3_ext` - генирируем серты
|
||||
|
||||
- Не забываем выдать права на сертификаты
|
||||
|
||||
- Добавить в `web.yml`
|
||||
```
|
||||
tls_server_config:
|
||||
cert_file: /etc/prometheus/node_exporter/certs/node_exporter.pem
|
||||
key_file: /etc/prometheus/node_exporter/certs/node_exporter.key
|
||||
```
|
||||
|
||||
- Добавить в Unit Node Exporter в директиву ExecStart
|
||||
```bash
|
||||
--web.config.file=/etc/prometheus/node_exporter/web.yml
|
||||
```
|
||||
|
||||
- `systemctl daemon-reload`
|
||||
- `systemctl restart node_exporter.service`
|
||||
|
||||
- На машине с Prometheus Server добавить в `prometheus.yml` в нужную джобу экспортера
|
||||
```
|
||||
scheme: https
|
||||
tls_config:
|
||||
ca_file: /etc/prometheus/node_exporter/srv-infra/certs/node_exporter.pem
|
||||
```
|
||||
|
||||
- `systemctl restart prometheus`
|
||||
|
||||
### Про PromQL
|
||||
- `increase()` возвращает общий прирост за указанный интервал времени.
|
||||
@ -105,6 +254,6 @@ increase(<метрика>[<интервал>])
|
||||
|
||||
### Полезности
|
||||
|
||||
- `promtool check config prometheus.yml`
|
||||
- `promtool check rules rules.yml`
|
||||
- `promtool check config prometheus.yml`- проверка синтаксиса
|
||||
- `promtool check rules rules.yml` - проверка синтаксиса
|
||||
- `promtool test rules rules_test.yml`
|
Loading…
x
Reference in New Issue
Block a user