Compare commits

..

No commits in common. "17f4d4caf23704445a368ad562789b847991b185" and "83d57cfc36d151af6b44cbe97b70d797ea3c9698" have entirely different histories.

4 changed files with 0 additions and 440 deletions

View File

@ -1,49 +0,0 @@
---
title: EFK - ротация логов fluent-bit
description:
published: true
date: 2025-03-13T16:02:22.898Z
tags: elk, efk, fluent-bit, rotate
editor: markdown
dateCreated: 2025-03-13T16:02:22.898Z
---
# Ротация логов fluent-bit
Не получилось сделать ротацию логов, если индекс имеет текущую дату, получилось с помощью порядокового номера
> Нужно в конфиге флюента в разделе [OUTPUT] сделать такие параметры:
Logstash_Format Off
Index smvu2-test-stand-docker
## Запросы в EFK:
После запуска контейнера лог уже отправляется в EFK и создается индекс, поэтому нужно сначала его удалить
```json
DELETE /smvu2-test-stand-docker
```
Создаем шаблон
```json
PUT _index_template/smvu2-test-stand-docker-template
{
"index_patterns": [
"smvu2-test-stand-docker-*"
],
"composed_of": ["smvu2-common-settings"],
"template": {
"settings": {
"index.lifecycle.name": "smvu2-policy",
"index.lifecycle.rollover_alias": "smvu2-test-stand-docker"
}
}
}
```
Ну и создаем индекс с алиасом, куда будет прилетать лог
```json
PUT smvu2-test-stand-docker-000001
{
"aliases": {
"smvu2-test-stand-docker": {
"is_write_index": true
}
}
}
```

View File

@ -1,146 +0,0 @@
---
title: Ротация логов с помощью Lificycle
description: ILM
published: true
date: 2025-03-13T08:16:59.504Z
tags: ilm, elk, efk
editor: markdown
dateCreated: 2025-03-13T08:16:59.504Z
---
# Ротация логов в ELK
Конечно! Давайте разберем настройку ротации логов с помощью ILM (Index Lifecycle Management) в Elasticsearch простым языком. Это пошаговая инструкция, которая поможет вам настроить автоматическое управление жизненным циклом индексов (логов).
---
### **1. Что такое ротация логов с ILM?**
Ротация логов — это процесс автоматического создания новых индексов (например, когда текущий индекс становится слишком большим или старым) и удаления старых индексов, чтобы освободить место. ILM помогает автоматизировать этот процесс.
---
### **2. Основные шаги настройки ILM для ротации логов:**
#### **Шаг 1: Создайте алиас для индексов**
Алиас — это "псевдоним", который будет указывать на текущий активный индекс. Все новые данные будут писаться в индекс, на который указывает этот алиас.
Пример:
```bash
PUT _aliases
{
"actions": [
{
"add": {
"index": "logs-2023.10.01-000001", # текущий индекс
"alias": "logs-alias" # алиас
}
}
]
}
```
---
#### **Шаг 2: Создайте политику ILM**
Политика ILM определяет, что делать с индексами на разных этапах их жизни (например, когда переходить на новый индекс, когда удалять старые данные).
Пример политики:
```bash
PUT _ilm/policy/logs-policy
{
"policy": {
"phases": {
"hot": { # этап "горячих" данных
"actions": {
"rollover": { # ротация индекса
"max_size": "50gb", # ротация при достижении 50 ГБ
"max_age": "7d" # или через 7 дней
}
}
},
"delete": { # этап удаления
"min_age": "30d", # удалить через 30 дней
"actions": {
"delete": {} # действие — удалить индекс
}
}
}
}
}
```
---
#### **Шаг 3: Создайте шаблон индекса**
Шаблон индекса автоматически применяет настройки (например, политику ILM и алиас) к новым индексам, которые соответствуют определенному шаблону имени.
Пример шаблона:
```bash
PUT _index_template/logs-template
{
"index_patterns": ["logs-*"], # шаблон имени индекса
"template": {
"settings": {
"index.lifecycle.name": "logs-policy", # применяем политику ILM
"index.lifecycle.rollover_alias": "logs-alias" # указываем алиас
}
}
}
```
---
#### **Шаг 4: Создайте начальный индекс**
Создайте первый индекс, который будет использоваться для записи данных. Убедитесь, что он соответствует шаблону и имеет алиас.
Пример:
```bash
PUT logs-2023.10.01-000001
{
"aliases": {
"logs-alias": {} # назначаем алиас
}
}
```
---
#### **Шаг 5: Настройте сбор логов**
Убедитесь, что ваши логи (например, из Filebeat, Logstash или другого источника) пишутся в алиас `logs-alias`. Это гарантирует, что данные будут попадать в текущий активный индекс.
---
#### **Шаг 6: Проверка работы ILM**
- Когда текущий индекс достигнет 50 ГБ или пройдет 7 дней, ILM создаст новый индекс (например, `logs-2023.10.08-000002`) и перенаправит запись на него.
- Старые индексы будут автоматически удаляться через 30 дней.
---
### **3. Как проверить, что все работает?**
- Проверьте статус ILM:
```bash
GET _ilm/status
```
- Посмотрите информацию по конкретному индексу:
```bash
GET logs-2023.10.01-000001/_ilm/explain
```
- Убедитесь, что новые индексы создаются, а старые удаляются.
---
### **4. Пример полного цикла:**
1. Создаете алиас `logs-alias` и первый индекс `logs-2023.10.01-000001`.
2. Данные начинают писаться в `logs-2023.10.01-000001`.
3. Через 7 дней или при достижении 50 ГБ создается новый индекс `logs-2023.10.08-000002`, и данные начинают писаться туда.
4. Через 30 дней индекс `logs-2023.10.01-000001` автоматически удаляется.
---
### **5. Частые ошибки:**
- **Алиас не указан:** Убедитесь, что алиас указан в шаблоне индекса и в самом индексе.
- **Политика не применяется:** Проверьте, что политика ILM указана в шаблоне индекса.
- **Нет данных для ротации:** Убедитесь, что данные пишутся в алиас.
---
Если все настроено правильно, ILM будет автоматически управлять вашими индексами, и вам не придется вручную заниматься ротацией логов. 😊

View File

@ -1,103 +0,0 @@
---
title: Gitlab minimal install
description:
published: true
date: 2025-03-25T18:40:52.824Z
tags: gitlab
editor: markdown
dateCreated: 2025-03-25T18:39:58.350Z
---
Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количество ресурсов. Для того, чтобы он в установке по умолчанию работал бодрячком лучше всего начать с 4 CPU и 8 GB оперативной памяти. Можно выделить 4 GB, но будет заметно тормозить, иногда 500-е ошибки выдавать.
Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт:
⇨ Running GitLab in a memory-constrained environment (https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html) (Запуск GitLab в среде с ограниченным объемом памяти)
Следуя этим рекомендация, можно заставить работать систему с использованием всего 2 GB оперативной памяти. Если вы запускаете его для себя на арендованном железе, то можно получить существенную экономию ресурсов.
Я взял виртуальную машину с 1 CPU и 2 GB памяти и попробовал на ней запустить Gitlab. Что для этого нужно сделать?
1⃣ Подключаем 1 GB свопа.
```
# dd if=/dev/zero of=/swap bs=1024 count=1000000
# mkswap /swap
# chmod 0600 /swap
# swapon /swap
```
Добавляем в /etc/fstab:
`/swap swap swap defaults 0 0`
2⃣ Меняем параметр swappiness:
`# sysctl vm.swappiness=10`
Добавляем в /etc/sysctl.conf:
`vm.swappiness=10`
3⃣ Устанавливаем Gitlab.
```
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
# EXTERNAL_URL="http://10.20.1.36" apt-get install gitlab-ce
````
4⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В /etc/gitlab/gitlab.rb добавляем:
`puma['worker_processes'] = 0`
5⃣ Уменьшаем число фоновых процессов Sidekiq:
`sidekiq['concurrency'] = 10`
6⃣ Оптимизируем Gitaly. Туда же в конфиг добавляем:
```json
gitaly['configuration'] = {
  concurrency: [
   {
    'rpc' => "/gitaly.SmartHTTPService/PostReceivePack",
    'max_per_repo' => 3,
   }, {
    'rpc' => "/gitaly.SSHService/SSHUploadPack",
    'max_per_repo' => 3,
   },
  ],
}
gitaly['env'] = {
 'GITALY_COMMAND_SPAWN_MAX_PARALLEL' => '2'
}
```
❗️Обращаю ваше внимание, что я убрал из этого раздела настройки, касающиеся cgroups. В инструкции судя по всему какая-то ошибка. Если их оставить, то сокет gitaly не поднимается. А в интерфейсе при создании каких-либо сущностей, например, нового проекта, вылетает 502 ошибка. И это не зависит от выделенных ресурсов.
7⃣ Отключаем мониторинг:
`prometheus_monitoring['enable'] = false`
8⃣ Уменьшаем потребление памяти процессам GitLab:
```
gitlab_rails['env'] = {
 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}
gitaly['env'] = {
 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}
```
9⃣ Перезапускаем Gitlab:
`# gitlab-ctl reconfigure`
🔟 Идём в веб интерфейс и отключаем в настройках мониторинга метрики Prometheus: Admin Area ⇨ Settings ⇨ Metrics and profiling ⇨ Metrics - Prometheus ⇨ отключаем Enable Prometheus Metrics.
После перезапуска Gitlab будет очень долго подниматься. Но в итоге заработает. Смотрим потребление памяти и проверяем, как всё работает:
`# free -h`
Более подробно всё это описано по ссылке в статье из начала заметки. Для комфортной работы лучше всё же добавить до 2CPU и 3GB памяти. Тогда всё это будет бодро работать с предложенными параметрами. Если этого не сделать, то иногда будете видеть 500-е ошибки.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

View File

@ -1,142 +0,0 @@
<!--
title: Просмотр атрибутов SMART в DSM 7.2.1 и новее
description: scrutiny
published: true
date: 2025-03-12T10:21:29.816Z
tags: scrutiny, smart
editor: ckeditor
dateCreated: 2025-03-12T10:21:29.816Z
-->
<p>Источник: https://bafista.ru/prosmotr-atributov-smart-v-dsm-7-2-1-i-novee/</p>
<h2><strong>Введение</strong></h2>
<p>В самой лучшей на данный момент ОС DSM для NAS от компании Synology было все необходимое для работы с дисками. Но 26.09.2023 вышло <a href="https://www.synology.com/ru-ru/releaseNote/DSM"><u>обновление DSM 7.2.1</u></a> и вместе с ним обновление для <a href="https://www.synology.com/ru-ru/releaseNote/StorageManager"><u>диспетчера хранения</u></a> 1.0.0-0017. В этом обновлении произошло невероятное: <i><strong>Атрибуты S.M.A.R.T. больше не записываются и не отображаются.</strong></i></p>
<p>При проверке опасения подтвердились. Кнопка просмотров атрибутов SMART пропала со своего места и теперь ее нигде нет. Очень печальная ситуация.</p>
<p><a href="https://github.com/AnalogJ/scrutiny"><u>Scrutiny&nbsp;</u></a> это инструмент, который собирает данные SMART с жесткого диска и отображает их через веб-интерфейс. Дополнительно ведется логирование полученных данных и есть возможность настроить уведомления.</p>
<figure class="image image_resized" style="width:47.66%;"><img src="https://bafista.ru/wp-content/uploads/2023/09/scr-20230930-iwuw.png"></figure>
<p>&nbsp;</p>
<figure class="image image_resized" style="width:47.81%;"><img src="https://bafista.ru/wp-content/uploads/2023/09/scr-20230930-jdtv.png"></figure>
<h2><strong>Установка Scrutiny</strong></h2>
<p>Для установки нам понадобится Container Manager. Поэтому перед началом найдите его в центре пакетов и установите. Если в центре пакетов его нет, значит ваше устройство его не поддерживает и дальше вам можно не читать данную инструкцию.</p>
<p>Откройте File station и перейдите в папку docker. В этой папке создайте пустой каталог с именем <strong>scrutiny</strong>, а внутри еще один пустой с именем <strong>influxdb</strong> как показано на картинке ниже.</p>
<figure class="image image_resized" style="width:46.87%;"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-180-1024x594.png"></figure>
<p>Так тут же нужно создать файл <strong>collector.yaml</strong> следующего содержимого:</p>
<pre><code class="language-plaintext">version: 1
host:
id: "NAS"
devices:
- device: /dev/sata1
type: 'sat'
# - device: /dev/sata2
# type: 'sat'
# - device: /dev/sata3
# type: 'sat'
- device: /dev/nvme0n1
type: 'nvme'
# - device: /dev/nvme1n1
# type: 'nvme'</code></pre>
<p>Разберем что в этом файле и зачем.</p>
<ul>
<li>ИмяСервера замените на ваше, желательно латинскими буквами</li>
<li>sata1 sata2 sata3 это все ваши диски. Укажите тут точное количество ваших дисков в Synology и где они установлены. Номер 1 2 и 3 совпадает с номеров диска в слотах устройства. В некоторых случаях вместо sata1 sata2 sata3 и т.д. нужно указывать sda sdb sdc и т.д.</li>
<li>nvme0m1 и nvme1n1 это ssd диски установленные в M2 слоты, если у вас их нет, то просто удалите их.</li>
</ul>
<blockquote>
<p><i>Так же можно добавить диски подключенные по USB, подробнее в комментарии по </i><a href="https://bafista.ru/prosmotr-atributov-smart-v-dsm-7-2-1-i-novee/#comment-2692"><i><u>ссылке</u></i></a></p>
</blockquote>
<p>Теперь открываем Container Manager, переходим в проекты и нажимаем создать проект. В открывшемся окне придумываем имя, задаем путь, который мы ранее создали и выбираем создать docker-compose.yml как показано на картинке ниже.</p>
<figure class="image"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-181-1024x617.png"></figure>
<p>В тактовое поле вставляем такой текст заранее его подредактировав:</p>
<pre><code class="language-plaintext">services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "8095:8080" # webapp
- "8096:8086" # influxDB admin
volumes:
- /run/udev:/run/udev:ro
- ./:/opt/scrutiny/config
- ./influxdb:/opt/scrutiny/influxdb
- ./scrutiny.yaml:/opt/scrutiny/config/scrutiny.yaml
devices:
- /dev/sata1:/dev/sata1
# - /dev/sata2:/dev/sata2
# - /dev/sata3:/dev/sata3
- /dev/nvme0n1:/dev/nvme0n1
# - /dev/nvme1n1:/dev/nvme1n1
environment:
- COLLECTOR_CRON_SCHEDULE='*/5 * * * *'
- SCRUTINY_WEB_INFLUXDB_TOKEN=ANYLONGSTRING
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=sadmin
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=6lise-shorter-Direct0
- TZ=Europe/Moscow
restart: unless-stopped</code></pre>
<p>Разберем что в этом файле и зачем.</p>
<ul>
<li>Порт 8095 это порт для web интерфейса scrutiny. Порт 8096 для web интерфейса influxDB. Порты после двоеточия 8080 и 8086 менять нельзя.</li>
<li>sata1 sata2 sata3 это все ваши диски. Укажите тут точное количество ваших дисков в Synology и где они установлены. Номер 1 2 и 3 совпадает с номеров диска в слотах устройства. В некоторых случаях вместо sata1 sata2 sata3 и т.д. нужно указывать sda sdb sdc и т.д.</li>
<li>nvme0m1 и nvme1n1 это ssd диски установленные в M2 слоты, если у вас их нет, то просто удалите их.</li>
<li>Токен, логин и пароль устанавливайте на свое усмотрение, но не менее 8 символов иначе не будет работать.</li>
</ul>
<p>По умолчанию сбор данных в scrutiny выполняется раз в сутки и этого вполне достаточно почти всегда, но это можно переопределить вставив такую переменную:</p>
<blockquote>
<p><i>Спешу напомнить, что если вы хотите переопределить частоту запуска коллектора, то нужно заново создавать проект с контейнером.</i></p>
<p style="text-align:center;"><i>!!! Не делайте часто, это не есть хорошо !!!</i></p>
</blockquote>
<pre><code class="language-plaintext">- COLLECTOR_CRON_SCHEDULE='*/1 * * * *'</code></pre>
<p>Где:</p>
<ul>
<li>*/1 * * * * запуск коллектора каждую минуту</li>
<li>*/5 * * * * запуск коллектора каждые 5 минут</li>
<li>*/10 * * * * запуск коллектора каждые 10 минут</li>
<li>0 * * * * запуск коллектора каждый час</li>
</ul>
<p>Далее нигде ничего менять не нужно, просто на заключительном этапе жмите выполнено для создания и запуска проекта scrutiny</p>
<figure class="image"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-182-1024x554.png"></figure>
<p>Процесс этот весьма небыстрый. Будет скачен образ контейнера docker, затем распакован и создан сам контейнер. Если все сделано правильно, то увидите Exit Code 0, что означает успешное создание проекта с контейнером. Если нет, то увидите в чем проблема, ее нужно будет устранить и начать заново.</p>
<figure class="image"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-183-1024x559.png"></figure>
<p>&nbsp;</p>
<p>Теперь в браузере открываете новую вкладку и вбиваете http://IP-NAS:8095. Естественно, что IP адрес и порт вы вставляете свои.</p>
<blockquote>
<p><i>При создании проекта для него создается отдельная сеть bridge, которую нужно разрешить на фаерволе Synology, если он у вас включен</i></p>
</blockquote>
<figure class="image"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-184-1024x674.png"></figure>
<p>Для просмотра атрибутов SMART щелкните три точки у нужного диска и нажмите Detail</p>
<figure class="image"><img src="https://bafista.ru/wp-content/uploads/2023/09/image-185-1024x674.png"></figure>
<p>Тут нужно отметить, что данные обновляются раз в сутки в 6:00 утра или после старта контейнера scrunity.</p>
<p><i>За образец была взята эта </i><a href="https://drfrankenstein.co.uk/2023/05/29/scrutiny-in-container-manager-on-a-synology-nas/"><i><u>инструкция</u></i></a><i>, но сделано по моему.</i></p>
<p>Добавочные файлы config.yml</p>
<pre><code class="language-plaintext">bolt-path: /opt/scrutiny/influxdb/influxd.bolt
engine-path: /opt/scrutiny/influxdb/engine
http-bind-address: ":8086"
reporting-disabled: true
</code></pre>
<p>Уведомление через Gotify scrutiny.yml</p>
<pre><code class="language-plaintext">version: 1
web:
listen:
port: 8080
host: 0.0.0.0
basepath: ''
database:
location: /opt/scrutiny/config/scrutiny.db
src:
frontend:
path: /opt/scrutiny/web
influxdb:
host: 0.0.0.0
port: 8086
retention_policy: true
log:
file: '' #absolute or relative paths allowed, eg. web.log
level: INFO
notify:
urls:
# - "telegram://token@telegram?channels=channel-1[,channel-2,...]"
- "gotify://prodik.ddns.net:8880/token"
</code></pre>