Установив новый дистрибутив RockyLinux 9 обнаружил проблемы при подключении к нему по SSH:
Ошибка – Couldn’t agree a key exchange algorithm …..
Я использую mtputty. Оказывается в качестве приложения SSH была старая версия PuTTY - 0.62.
Новую версию можно скачать отсюда:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Для использования в mtputty нужно выбрать бинарный файл:
Скаченным файлом заменить файл в директории mtputty: App/putty/PUTTY.EXE
среда, 5 октября 2022 г.
Ошибка при подключении к серверу по SSH - Couldn’t agree a key exchange algorithm
вторник, 28 июня 2022 г.
Rocky Linux 8. Prometheus. Опрос сетевых устройств по SNMP
Prometheus имеет в своей коллекции экспортер «snmp_exporter», который предназначен для сбора метрик с устройств, поддерживающих SNMP.
SNMP экспортер анализирует MIBS SNMP и создает конфигурационный файл, содержащий OID, которые сопоставляются с метриками Prometheus. Затем SNMP экспортер запрашивает SNMP-агенты сети по указанным OID и отображает результаты в виде счетчиков понятных Prometheus.
Ссылка для скачивания файлов проекта «snmp_exporter»:
https://github.com/prometheus/snmp_exporter/tree/master/generator
Экспортеру «snmp_exporter» для работы нужны MIBы с устройств.
Получить большую коллекцию MIB можно скачав базу проекта librenms: https://github.com/librenms/librenms
# cd /usr/src/
# git clone https://github.com/librenms/librenms.git
MIBы будут в директории /usr/src/librenms/mibs/
Скачиваем файлы проекта «snmp_exporter»
# git clone https://github.com/prometheus/snmp_exporter.git
Создание исполняемого файла экспортера «snmp_exporter» выполняется так:
# cd snmp_exporter
# go build
Произойдет сборка файла snmp_exporter, который нужно скопировать в директорию с исполняемыми файлами:
# cp snmp_exporter /usr/local/bin/snmp_exporter
Создаем пользователя для работы с экспортером и даем ему права на исполняемый файл
# useradd -M -r -s /bin/false snmp_exporter
# chown snmp_exporter:snmp_exporter /usr/local/bin/snmp_exporter
# mkdir /usr/local/bin/snmp_exporter_conf
Экспортер умеет опрашивать SNMP агент только по определенному набору SNMP параметров. При этом экспортер обращается к специально собранному файлу конфигурации для Prometheus.
То есть экспортеру «snmp_exporter» нужно четко и «по-свойски» рассказать, какие параметры SNMP опрашивать у SNMP-агента. Для и нужно создать специальный файл конфигурации. Специальный файл конфигурации создается специальным генератором, входящий в комплект скаченных файлов «snmp_exporter». Сборка генератора:
# cd generator
# yum install gcc gcc-c++ make net-snmp net-snmp-utils net-snmp-libs net-snmp-devel
# yum install go p7zip
# go build
После выполнения этой команды создается файл-утилита generator.
Эта утилита generator как раз и умеет генерить специальный файл конфигурации для экспортера «snmp_exporter» Prometheus.
Утилита в своей работе использует
- переменную окружения MIBDIRS, в которой указывается путь к MIB файлу опрашиваемых значений
- файл конфигурации generator.yml, который определяет, что нужно опрашивать у элемента. Данный файл нужно править вручную.
На всякий случай сделаем резервную копию generator.yml:
# cp generator.yml generator.yml_example
Теперь нужно отредактировать файл generator.yml
Если необходимо опрашивать порты у оборудования Cisco, то файл должен быть таким:
modules:
snmp2_public_cisco:
version: 2
max_repetitions: 60
retries: 1
timeout: 5s
auth:
community: public
walk:
- sysName
- 1.3.6.1.2.1.31.1.1.1.10
- 1.3.6.1.2.1.31.1.1.1.6
lookups:
- source_indexes: [ifIndex]
lookup: ifAlias
- source_indexes: [ifIndex]
lookup: ifDescr
- source_indexes: [ifIndex]
lookup: ifName
overrides:
ifType:
type: counter
Указываем переменной MIBDIRS место расположения MIB файлов, относительно текущего места
# export MIBDIRS=../../librenms/mibs:../../librenms/mibs/cisco
Затем запускаем генератор:
# ./generator generate
После выполнения команды генератор создается файл конфигурации экспортера snmp.yml на основе файла generator.yml.
При удачном раскладе вывод команд будет такой:
# ./generator generate
level=info ts=2022-06-28T12:47:27.245Z caller=net_snmp.go:161 msg="Loading MIBs" from=../../librenms/mibs:../../librenms/mibs/cisco
level=warn ts=2022-06-28T12:47:28.418Z caller=main.go:120 msg="NetSNMP reported parse error(s)" errors=3
level=info ts=2022-06-28T12:47:28.967Z caller=main.go:52 msg="Generating config for module" module=snmp2_public_cisco
level=info ts=2022-06-28T12:47:29.136Z caller=main.go:67 msg="Generated metrics" module=snmp2_public_cisco metrics=3
level=info ts=2022-06-28T12:47:29.138Z caller=main.go:92 msg="Config written" file=/usr/src/snmp_exporter/generator/snmp.yml
А при неудачном выполнении, например, такой:
# ./generator generate
level=info ts=2022-06-28T12:41:56.768Z caller=net_snmp.go:161 msg="Loading MIBs" from=../../librenms/mibs:../../librenms/mibs/cisco
level=warn ts=2022-06-28T12:41:57.930Z caller=main.go:120 msg="NetSNMP reported parse error(s)" errors=3
level=info ts=2022-06-28T12:41:58.434Z caller=main.go:52 msg="Generating config for module" module=snmp2_public_cisco
level=error ts=2022-06-28T12:41:58.627Z caller=main.go:130 msg="Error generating config netsnmp" err="cannot find oid '1.3.6.1.4.1.171.12.1.1.6.2' to walk"
После выполнения скрипта создается конфиг snmp.yml
# cp snmp.yml /usr/local/bin/snmp_exporter_conf/snmp.yml
Создаем юнит systemd для управления работой экспортера:
# nano /etc/systemd/system/snmp_exporter.service
[Unit]
Description=SNMP Exporter Service for Prometheus
After=network-online.target
[Service]
User=snmp_exporter
Group=snmp_exporter
Restart=on-failure
ExecStart=/usr/local/bin/snmp_exporter --config.file='/usr/local/bin/snmp_exporter_conf/snmp.yml'
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl start snmp_exporter
# systemctl enable snmp_exporter
Экспортер «snmp_exporter» при работе открывает порт 9116.
Проверка работы сервиса:
# netstat -ltupn | grep 9116
По этому порту будет происходить обращение сервиса Prometheus к экспортеру для того что бы забрать данные.
Добавление нового источника данных на сервере Prometheus
# nano /etc/prometheus/prometheus.yml
- job_name: 'snmp'
scrape_interval: 180s
static_configs:
- targets:
- 10.100.16.1
- 10.100.55.2
- 10.100.55.5
- 10.100.55.12
metrics_path: /snmp
params:
module: [snmp2_public_cisco]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.10.49.166:9116
В этой конфигурации 10.10.49.166:9116 – это IP и порт на котором работает snmp_exporter, перечень IP в разделе «- targets:» - это опрашиваемые IP адреса, а значение модуля module - «snmp2_public_cisco» - это модуль из конфигурационного файла generator.yml / snmp.yml
Рестартуем сервис:
# systemctl restart prometheus
В Grafana для отображения графиков собираемых метрик можно использовать конструкции данных, например:
irate(ifHCOutOctets{ifDescr="TenGigabitEthernet0/0/0", instance="10.200.255.12"}[10m])*8
irate(ifHCInOctets{ifDescr="TenGigabitEthernet0/0/0", instance="10.200.255.12"}[10m])*8
Вид графика:
понедельник, 27 июня 2022 г.
Rocky Linux 8. Prometheus и Clickhouse.
Для того что бы Prometheus мог собирать метрики с сервера Clickhouse существует отдельный экспортер, предназначенный для этого – «clickhouse_exporter».
Производим установку clickhouse_exporter на сервер, где размещен сервер clickhouse.
# cd /usr/src/
# git clone https://github.com/ClickHouse/clickhouse_exporter.git
# cd clickhouse_exporter/
# go build
Произойдет сборка исполняемого файла и появится файл clickhouse_exporter
Запуск экспортера выполняется командой
./clickhouse_exporter
Копируем файл clickhouse_exporter в директорию с исполняемыми файлами:
# cp clickhouse_exporter /usr/local/bin/clickhouse_exporter
Создаем пользователя clickhouse_exporter под которым будет работать сервис clickhouse_exporter.
# useradd -M -r -s /bin/false clickhouse_exporter
# chown clickhouse_exporter:clickhouse_exporter /usr/local/bin/clickhouse_exporter
Создаем unit systemd для автозапуска сервиса:
# nano /etc/systemd/system/clickhouse_exporter.service
[Unit]
Description=ClickHouse Exporter Service for Prometheus
After=network.target
[Service]
User=clickhouse_exporter
Group=clickhouse_exporter
Type=simple
ExecStart=/usr/local/bin/clickhouse_exporter
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Запускаем сервис:
# systemctl daemon-reload
# systemctl start clickhouse_exporter
# systemctl enable clickhouse_exporter
Сервис clickhouse_exporter работает на порту 9116.
Проверка работы сервиса:
# netstat -ltupn | grep 9116
По умолчанию экспортер обращается к базе Clikhouse по URL «http://localhost:8123/», а данные для Prometheus будут доступны на порту сервиса - 9116, по пути /metrics
Например, http://10.10.49.165:9116/metrics
Если требуются учетные данные для доступа к Clickhouse, то логин-пароль
задается через переменные окружения:
CLICKHOUSE_USER
CLICKHOUSE_PASSWORD
Теперь сервис Prometheus нужно научить обращаться к экспортерам Clickhouse.
Для этого на сервере Prometheus необходио внести правки к конфигурационный файл prometheus.yml
# nano /etc/prometheus/prometheus.yml
В раздел scrape_configs:
добавляем ссылки на метрики, которые генерируют node_exporter
- job_name: 'clickhouse_exporter_clients'Для применения изменений сервис prometheus нужно перезапустить:
scrape_interval: 5s
static_configs:
- targets: ['10.10.49.165:9116']
# systemctl restart prometheus
Для удобного просмотра метрик целесообразно использовать Grafana.
Dashboard Clikhouse имеет в коллекции Grafana ID - 882
В Grafana выбираем + -> Import, в поле "Import via grafana.com" вписываем 882, нажимаем Load
Затем выбираем источник Prometheus и нажимаем Import.
И можно наслаждаться красивыми графиками загрузки Clickhouse