При утере пароля admin от web-интерфейса Grafana, можно воспользоваться следующим способом его восстановления.
Данные о пользователях Grafana по умолчанию храняться в базе данных SQLLite, расположенной в файле /var/lib/grafana/grafana.db
Установим приложение для работы с SQLLite:
# yum install sqlite
Подключаемся к базе данных:
# sqlite3 /var/lib/grafana/grafana.db
Выполняем волшебную команду, которая установит для пользователя «admin», пароль «admin»:
sqlite> update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';
Выходим из sqllite, нажимая CTRL+D
Теперь обращаемся к web-интерфейсу Grafana http://<IPадрес>:3000/
Вводим admin / admin и попадаем в форму задания нового пароля пользователю admin
Вводом новый пароль, вводим его еще раз и нажимам «Submit».
Все, пароль пользователя admin восстановлен.
вторник, 29 августа 2023 г.
понедельник, 28 августа 2023 г.
Grafana Loki. Установка в RockyLinux 9. Базовая настройка.
Выполним установку grafana loki из исходных кодов. Перед установкой необходимо поставить базовые инструменты: git и wget.
# yum install git wget
Для сборки Grafana из исходных кодов необходимо установить Golang. На странице https://go.dev/dl/ получаем ссылку на архив кодов для Linux
В моем случае это будет https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
# cd /usr/src/
# wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
# tar -v -C /usr/local -xzf go*.tar.gz
Редактируем файл /etc/profile для того что бы добавить указание системе смотреть путь до среды Go.
# nano /etc/profile
В самый конец файла добавляем
export PATH=$PATH:/usr/local/go/bin
Сохраняем изменения в файле.
Теперь из консоли выполним ту же команду, что бы путь до среды Go появился в системе немедленно
# export PATH=$PATH:/usr/local/go/bin
Теперь к go можно обращаться без использования пути. Проверим, установленную версию go:
# go version
go version go1.21.0 linux/amd64
Загружаем исходные данные проекта Grafana Loki и выполняем сборку программы из исходного кода:
# git clone https://github.com/grafana/loki
# cd loki/
# go build ./cmd/loki
В результате этого действия в текущей директории сформируется исполняемый файл «loki».
Этот файл перенесем на постоянное место – к другим исполняемым файлам
# mv loki /usr/local/bin/
Далее необходимо создать конфигурационный файл Loki
# mkdir /etc/loki
# touch /etc/loki/loki-local-config.yaml
# nano /etc/loki/loki-local-config.yaml
# mkdir /data_loki
# yum install git wget
Для сборки Grafana из исходных кодов необходимо установить Golang. На странице https://go.dev/dl/ получаем ссылку на архив кодов для Linux
В моем случае это будет https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
# cd /usr/src/
# wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
# tar -v -C /usr/local -xzf go*.tar.gz
Редактируем файл /etc/profile для того что бы добавить указание системе смотреть путь до среды Go.
# nano /etc/profile
В самый конец файла добавляем
export PATH=$PATH:/usr/local/go/bin
Сохраняем изменения в файле.
Теперь из консоли выполним ту же команду, что бы путь до среды Go появился в системе немедленно
# export PATH=$PATH:/usr/local/go/bin
Теперь к go можно обращаться без использования пути. Проверим, установленную версию go:
# go version
go version go1.21.0 linux/amd64
Загружаем исходные данные проекта Grafana Loki и выполняем сборку программы из исходного кода:
# git clone https://github.com/grafana/loki
# cd loki/
# go build ./cmd/loki
В результате этого действия в текущей директории сформируется исполняемый файл «loki».
Этот файл перенесем на постоянное место – к другим исполняемым файлам
# mv loki /usr/local/bin/
Далее необходимо создать конфигурационный файл Loki
# mkdir /etc/loki
# touch /etc/loki/loki-local-config.yaml
# nano /etc/loki/loki-local-config.yaml
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /data_loki/loki
storage:
filesystem:
chunks_directory: /data_loki/loki/chunks
rules_directory: /data_loki/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
#Запрет Loki отправлять отчеты в штаб-квартиру Grafana
analytics:
reporting_enabled: false
/data_loki - Это директория, в которой будут содержаться данные сервиса loki
Создадим эту директорию: # mkdir /data_loki
Grafana Loki запускается по умолчанию на порту 3100. Данный порт нужно открыть в firewalld.
# firewall-cmd --permanent --add-port=3100/tcp
# firewall-cmd --reload
Выполняем первый запуск сервиса Loki:
# /usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml
При первом запуске будут созданы директории для хранения данных сервиса Loki - в /data_loki. Если в выводе нет никаких ошибок, значит все идет хорошо.
Теперь не останавливая сервис заглядываем по URL
http://<IPадрес>:3100/metrics
Мы видим метрики сервиса Loki, значит все работает правильно.
В консоли сервере останавливаем Loki, выполняя CTRL+C
# firewall-cmd --permanent --add-port=3100/tcp
# firewall-cmd --reload
Выполняем первый запуск сервиса Loki:
# /usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml
При первом запуске будут созданы директории для хранения данных сервиса Loki - в /data_loki. Если в выводе нет никаких ошибок, значит все идет хорошо.
Теперь не останавливая сервис заглядываем по URL
http://<IPадрес>:3100/metrics
Мы видим метрики сервиса Loki, значит все работает правильно.
В консоли сервере останавливаем Loki, выполняя CTRL+C
Что бы сервис запускался автоматически необходимо создать пользователя «loki» и юнит systemd:
# useradd --no-create-home --shell /bin/false loki
# chown loki:loki /usr/local/bin/loki
# chown -R loki:loki /etc/loki
# chown -R loki:loki /data_loki
Создаем юнит:
# nano /etc/systemd/system/loki.service
Содержимое файла:
[Unit]
Description=Grafana Loki Service
After=network.target
[Service]
User=loki
Group=loki
Type=simple
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезапускаем демон systemd и стартуем сервис:
# systemctl daemon-reload
# systemctl start loki
# systemctl enable loki
Проверка работы сервиса:
# systemctl status loki
# useradd --no-create-home --shell /bin/false loki
# chown loki:loki /usr/local/bin/loki
# chown -R loki:loki /etc/loki
# chown -R loki:loki /data_loki
Создаем юнит:
# nano /etc/systemd/system/loki.service
Содержимое файла:
[Unit]
Description=Grafana Loki Service
After=network.target
[Service]
User=loki
Group=loki
Type=simple
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/loki-local-config.yaml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезапускаем демон systemd и стартуем сервис:
# systemctl daemon-reload
# systemctl start loki
# systemctl enable loki
Проверка работы сервиса:
# systemctl status loki
Примечание:Если забыть дать права на директорию с данными сервиса Loki (/tmp/loki), то сервис не запуститься, будет выдана ошибка:Aug 27 13:57:25 SMA-VM-TESTKVS.net systemd[1]: loki.service: Scheduled restart job, restart counter is at 5.Aug 27 13:57:25 SMA-VM-TESTKVS.net systemd[1]: Stopped Grafana Loki Service.Aug 27 13:57:25 SMA-VM-TESTKVS.net systemd[1]: loki.service: Start request repeated too quickly.Aug 27 13:57:25 SMA-VM-TESTKVS.net systemd[1]: loki.service: Failed with result 'exit-code'.Aug 27 13:57:25 SMA-VM-TESTKVS.net systemd[1]: Failed to start Grafana Loki Service.
Изменение времени хранения логов.
В настройках по умолчанию в Grafana Loki все логи попавшие в базу Loki храняться вечно. Но это поведение можно изменить. Изменения выполняются в конфигурационном файле Loki, который обычно храниться тут: /etc/loki/loki-local-config.yaml
Для то что бы задействовать автоматическое удаление необходимо специальным образом активировать компонент Loki - Compactor. Compactor сжимает данные за сутки в базе Loki и может удалять старые данные.
Текущую конфигурацию Loki и compactor можно посмотреть тут:
http://10.10.49.166:3100/config
За удаление данных отвечает главная директива: retention_enabled. Значение true обяжет compactor проводить удаление старых данных.
Период хранения указывается в директиве retention_period, который записывается в разделе limits_config.
Данные удаляются сразу порциями, соответствующими периоду индексации в настройках хранилища.
По умолчанию - это одни сутки. (раздел schema_config, параметр period: 24h)
Для того что бы активировать удаление данных compactor вставим конфигурационный файл следующие строки:
# nano /etc/loki/loki-local-config.yaml
compactor:
working_directory: /data_loki/loki/compactor
shared_store: filesystem
compaction_interval: 10m
retention_enabled: true
retention_delete_delay: 2h
deletion_mode: filter-and-delete
retention_delete_worker_count: 150
delete_request_cancel_period: 2h
limits_config:
retention_period: 7d
Перезапускаем сервис Loki
# systemctl restart loki.service
Теперь логи старше 7 дней будут не доступны к выводу и будут удаляться компонентом Compactor.
Grafana Loki и ошибки запросов
При выполнении запросов к базе Loki через Grafana в логах могу появляться следующие ошибки:
1) err="context canceled"
2) msg="error processing requests from scheduler" err="rpc error: code = Canceled desc = context canceled"
Они говорят о том, что данные из базы не успевают загрузиться в web-интерфейс по какой-то причине. Вот ряд действий, которые помогут избежать подобных ошибок:
1) Необходимо увеличить timeout оболочки Grafana.
Это делается в настройках источника данных Loki
2) Необходимо изменить конфигурацию Loki в части таймаута ответа http сервера.
По умолчанию время таймаута составляет 30 секунд. Можно его увеличить до 300 секунд (5 минут).
server:
http_server_read_timeout: 300s
http_server_write_timeout: 300s
3) Необходимо изменить конфигурацию Loki в части ответа на запросы query. В глобальной конфигурации нужно в разделе limits_config установить параметр query_timeout равным 3 минуты:
limits_config:
query_timeout: 3m
После изменений конфигурации Loki, нужно перезапустить сервис Loki
# systemctl restart loki.service
суббота, 26 августа 2023 г.
Graylog. Сбор данных syslog
Сервис Graylog собирает данные через так называемые входы (inputs).
Подключаемся к web-интерфейсу graylog под стандартным логином «admin».
http://10.10.49.166:9000/
Тут 10.10.49.166 – IP адрес сервера Graylog
Перед использованием Graylog входы необходимо описать в web-интерфейсе.
Это делается в меню System–>Inputs.
Для описания входа, принимающего сообщения syslog выбираем в выпадающим списке «Select Input» - «Syslog UDP» и нажимаем «Launch new input».
В форме описания нового входа необходимо выбрать:
1) Node (узел) обрабатывающий данные сообщения
2) Title - указать заголовок входа, например "syslog"
3) Bind Address - IP адрес, который будет прослушивать сообщения syslog
Для задействования всех интерфейсов - пишем 0.0.0.0
4) Port - указывается прослушиваемый порт.
Graylog не рекомендует использованием портов для описания входов меньше чем 1024, поэтому вместо стандартного 514 порта для syslog пробуем использовать 5140.
Остальные параметры оставляем по умолчанию.
После внесения данных в форму нажимаем "Save".
Будет создан источник, обеспечивающий прием сообщений syslog.
Для проверки работы входа syslog выполняем из консоли сервера:
# echo "Hello world" | nc -w 1 -u localhost 5140
# echo "Hello SAKURA2.1" | nc -w 1 -u 10.10.49.166 5140
На странице описания входов нажимаем по кнопке "Show received messages".
Мы должны увидеть принятое сообщение "Hello world"
Для приема сообщений с других серверов, мы должны открыть порт 5140 на нашем сервере:
# firewall-cmd --permanent --add-port=5140/udp
# firewall-cmd --reload
На сервере, с которого будем отправлять информацию syslog (с демоном rsyslog), создаем конфигурацию, обеспечивающую передачу syslog сообщений на сервер:
# nano /etc/rsyslog.d/90-graylog.conf
Содержимое файла:
*.* @10.10.49.166:5140;RSYSLOG_SyslogProtocol23Format
После внесения изменений перезагружаем демон rsyslog
# systemctl restart rsyslog
Теперь сервер будет старательно отправлять данные syslog на сервер graylog.
Что бы посмотреть на сообщения, полученные в сервере Graylog. Необходимо перейти по ссылке «Search»:
Подключаемся к web-интерфейсу graylog под стандартным логином «admin».
http://10.10.49.166:9000/
Тут 10.10.49.166 – IP адрес сервера Graylog
Перед использованием Graylog входы необходимо описать в web-интерфейсе.
Это делается в меню System–>Inputs.
Для описания входа, принимающего сообщения syslog выбираем в выпадающим списке «Select Input» - «Syslog UDP» и нажимаем «Launch new input».
В форме описания нового входа необходимо выбрать:
1) Node (узел) обрабатывающий данные сообщения
2) Title - указать заголовок входа, например "syslog"
3) Bind Address - IP адрес, который будет прослушивать сообщения syslog
Для задействования всех интерфейсов - пишем 0.0.0.0
4) Port - указывается прослушиваемый порт.
Graylog не рекомендует использованием портов для описания входов меньше чем 1024, поэтому вместо стандартного 514 порта для syslog пробуем использовать 5140.
Остальные параметры оставляем по умолчанию.
После внесения данных в форму нажимаем "Save".
Будет создан источник, обеспечивающий прием сообщений syslog.
Для проверки работы входа syslog выполняем из консоли сервера:
# echo "Hello world" | nc -w 1 -u localhost 5140
# echo "Hello SAKURA2.1" | nc -w 1 -u 10.10.49.166 5140
На странице описания входов нажимаем по кнопке "Show received messages".
Мы должны увидеть принятое сообщение "Hello world"
Для приема сообщений с других серверов, мы должны открыть порт 5140 на нашем сервере:
# firewall-cmd --permanent --add-port=5140/udp
# firewall-cmd --reload
На сервере, с которого будем отправлять информацию syslog (с демоном rsyslog), создаем конфигурацию, обеспечивающую передачу syslog сообщений на сервер:
# nano /etc/rsyslog.d/90-graylog.conf
Содержимое файла:
*.* @10.10.49.166:5140;RSYSLOG_SyslogProtocol23Format
После внесения изменений перезагружаем демон rsyslog
# systemctl restart rsyslog
Теперь сервер будет старательно отправлять данные syslog на сервер graylog.
Что бы посмотреть на сообщения, полученные в сервере Graylog. Необходимо перейти по ссылке «Search»:
вторник, 15 августа 2023 г.
Обновление триггеров ZABBIX через импорт шаблонов
В Zabbix есть удобный инструмент обновления шаблонов через "Импорт", когда сначала подготавливается XML файл, а потом XML файл с данными загружается на сервер.
Импорт выполняется через меню «Настройки» —> «Шаблоны», кнопка «Импорт».
При загрузке XML файла, если изменились данные триггера, то будет создан новый триггер рядом со старым. Что бы этого этого избежать, после выбора загружаемого файла выставить галочку «Удалить отсутствующие - триггер»:
После нажатия кнопки «Импорт» будет предупреждение, где нужно нажать «Да»
После этого в Zabbix произойдет добавление новых триггеров и удаление старых.
Элементы данных узлов при этом обновятся нормально, без выставления дополнительных настроек.
Подписаться на:
Сообщения (Atom)