Prometheus busca busca ser una nueva generación dentro de las herramientas de código abierto de monitorización. Una aproximación diferente y sin herencias del pasado.
В течение многих лет многие системы мониторинга были связаны с Nagios своей архитектурой и философией или непосредственно вилкой (CheckMk, Centreon, OpsView, Icinga, Naemon, Shinken, Vigilo NMS, NetXMS, OP5 и другие).
Программное обеспечение Prometheus, sin embargo, es fiel al espíritu “Open”: si quieres utilizarla, tendrás que juntar varias partes diferentes.
De alguna manera, como Nagios, podemos decir que es una especie de Ikea de la monitorización: podrás hacer con ella muchísimas cosas, pero necesitarás juntar tú mismo las piezas y dedicarle mucho tiempo.
Архитектура мониторинга Прометея
Prometheus, написанный на языке программирования go, имеет архитектуру, основанную на интеграции технологий, свободных от третьих лиц:
В отличие от других более известных систем, которые также имеют много плагинов и элементов для представления карт, Prometheus нуждается в третьих частях для, например, визуализации данных (Grafana) или выполнения уведомлений (Pagerduty).
Все эти элементы высокого уровня могут быть заменены другими изделиями, но Prometheus – это часть экосистемы, а не уникальный инструмент. Поэтому у него есть экспортеры и ключевые элементы, которые в конечном итоге являются другими проектами Opensource:
- HAProxy
- StatsD
- Графит
- Grafana
- Pagerduty
- OpsGenie
- и долгое время и т.д.
Прометей и серия данных
Si te suena RRD estás pensando en lo correcto.
Prometheus представляет собой структуру для повторного сбора данных о неопределенной структуре (clave valor), а также механизм мониторинга. Это позволяет определить синтаксис для оценки и хранить его только в случае наступления события, связанного с изменением.
Prometheus не хранит данные в базе данных SQL.
Как и Graphite, которая реализует нечто подобное, как и другие системы других поколений, которые хранят числовые серии в файлах RRD, Prometheus хранит каждую серию данных в отдельном файле.
Если вам нужна какая-то программа для сбора информации в базе данных временных рядов (на инглише “база данных временных рядов”), то вы должны посмотреть OpenTSBD, InfluxDB или Graphite.
Как использовать “Прометей
А лучше сказать, почему нельзя использовать “Прометей”.
Ellos mismos lo dicen en su web: si vas a utilizar esta herramienta para recoger logs, NO LO HAGAS, te proponen ELK en su lugar.
Если вы хотите использовать Prometheus для мониторинга приложений, сервисов и удаленного оборудования с помощью SNMP, вы можете сделать это и создать прекрасные графики с помощью Grafana, но прежде…
Конфигурация в Prometheus
Тода ла конфигурация программного обеспечения Prometheus реализуется в файлах текста YAML, с уна синтаксис bastante compleja. Кроме того, каждый экспортер, используемый на предприятии, имеет свой собственный файл независимой конфигурации.
Перед внесением изменений в конфигурацию необходимо повторно обратиться в сервисную службу, чтобы убедиться в том, что все изменения учтены.
Информации на Прометее
Por defecto, Prometheus monitoring не имеет ни одного вида информации.
Вы должны запрограммировать их сами, используя свой API для извлечения данных.
Так и есть, существуют несколько независимых проектов для достижения этой цели.
Приборная панель и визуальные экраны
Чтобы создать приборную панель в Prometheus, необходимо интегрировать ее с Grafana.
Существует документация о том, как это сделать, поскольку Grafana и Prometheus сосуществуют дружно.
Escalabilidad en Prometheus
Если в Prometheus необходимо обрабатывать больше источников данных, всегда можно добавить больше серверов.
Каждый слуга получает свою собственную карту работы, поскольку каждый слуга Prometheus является независимым и может функционировать, даже если его товарищи будут убиты.
В этом случае необходимо “разделить” сервисы по функциональным областям, чтобы можно было их различать, например: “сервис A, сервис B”. Для того, чтобы каждая служба была независимой.
Не похоже, чтобы это был способ “эскалации”, поскольку не существует ни способа синхронизации, ни восстановления данных, не существует ни альта-диспонибилидад, ни единой структуры доступа к информации в различных независимых сервисах.
Pero tal y como advertimos al principio, esto no es una solución “cerrada” sino un framework para diseñar tu propia solución final.
Это так, что нет никаких сомнений в том, что Prometheus способен поглощать много информации, в другом масштабе, чем другие более известные программы.
Мониторинг систем с помощью Prometheus: экспортеры и сборщики
De alguna forma, cada “manera” diferente de obtener información con esta herramienta, necesita una pieza de software que ellos denominan “exporter”.
Нет дежа де быть бинарио с собственным архивом конфигурации YAML, который должен быть жестикулирован независимым образом (с собственным демоном, файлом конфигурации и т.д.).
Sería el equivalente de un “plugin” en Nagios.
Так, например, Prometheus имеет экспортеры для SNMP(snmp_exporter), мониторинга журналов (grok_exporter) и т.д.
Пример конфигурации экспортера snmp как сервиса:
Чтобы получить информацию о хосте, мы можем установить “node_exporter”, который работает как обычный агент, похожий на Nagios.
Эти “node_exporter” собирают метрики различных типов, которые называются “colectores”.
Por defecto, Prometheus trae activados decenas de estos colectores. Puedes consultarlos todos navegando hasta el anexo 1: colectores activos.
Кроме того, существует множество “экспортеров” или плагинов для получения информации о различных аппаратных и программных системах.
Если количество экспортеров является релевантным (около 200), оно не соответствует количеству плагинов, доступных для Nagios (более 2000).
Aquí te hemos incluido un ejemplo de exporter de Oracle.
Заключение
Технология Prometheus для современного мониторинга гораздо более гибкая, чем у других более древних программ. Благодаря своей философии, мы можем интегрировать его в гибридные системы с большей легкостью.
При этом не хватает информации, информационных панелей и централизованной системы управления конфигурациями.
Es decir, una interfaz que permita observar y monitorizar información agrupada en servicios / hosts.
Поскольку Prometheus – это экосистема обработки данных, а не система мониторинга использования ИТ.
Его потенциал в обработке данных очень высок, но использование этих данных в повседневной работе требует очень сложного управления, так как для этого требуется много файлов конфигурации, много внешних команд, распространяемых вручную.
Anexo 1: Colectores activos en Prometheus
Это те коллекционеры, которым Prometheus передает активистов сериала:
Estos “node_exporter” собирает метрики различных типов, в том числе “colectores”, это те коллекторы серии, которые активированы:
arp | Раскрывает статистику ARP из /proc/net/arp. |
bcache | Открывает статистику bcache из /sys/fs/bcache/. |
склеивание | Отображает количество настроенных и активных ведомых интерфейсов Linux bonding. |
btrfs | Раскрывает статистику btrfs |
boottime | Показывает время загрузки системы, полученное от kern.boottime sysctl. |
conntrack | Показывает статистику conntrack (ничего не делает, если отсутствует /proc/sys/net/netfilter/). |
процессор | Раскрывает статистику процессора |
cpufreq | Раскрывает статистику частоты процессора |
diskstats | Раскрывает статистику дискового ввода-вывода. |
dmi | Раскрытие информации об интерфейсе управления рабочим столом (DMI) из /sys/class/dmi/id/ |
edac | Выдает статистику обнаружения и исправления ошибок. |
энтропия | Выявляет доступную энтропию. |
exec | Раскрывает статистику выполнения. |
волоконно-оптический канал | Выдает информацию и статистику о волоконном канале из /sys/class/fc_host/. |
filefd | Раскрывает статистику дескрипторов файлов из /proc/sys/fs/file-nr. |
файловая система | Раскрывает статистику файловой системы, например, используемое дисковое пространство. |
hwmon | Открыть данные мониторинга оборудования и датчиков из /sys/class/hwmon/. |
infiniband | Предоставляет сетевую статистику, специфичную для конфигураций InfiniBand и Intel OmniPath. |
ipvs | Раскрывает статус IPVS из /proc/net/ip_vs и статистику из /proc/net/ip_vs_stats. |
loadavg | Выявляет среднюю нагрузку. |
mdadm | Выводит статистику об устройствах в /proc/mdstat (ничего не делает, если нет /proc/mdstat). |
meminfo | Раскрывает статистику памяти. |
netclass | Раскрывает информацию о сетевом интерфейсе из /sys/class/net/ |
netdev | Раскрывает статистику сетевого интерфейса, например, переданные байты. |
netstat | Открывает сетевую статистику из /proc/net/netstat. Это та же информация, что и netstat -s. |
nfs | Раскрывает статистику клиентов NFS из /proc/net/rpc/nfs. Это та же информация, что и nfsstat -c. |
nfsd | Раскрывает статистику сервера ядра NFS из /proc/net/rpc/nfsd. Это та же информация, что и nfsstat -s. |
nvme | Раскрытие информации о NVMe из /sys/class/nvme/ |
os | Выявление информации о выпуске ОС из /etc/os-release или /usr/lib/os-release |
powerupplyclass | Раскрытие статистики по источникам питания из /sys/class/power_supply |
давление | Выдает статистику по срыву давления из /proc/pressure/. |
rapl | Открывает различные статистические данные из /sys/class/powercap. |
schedstat | Открывает статистику планировщика задач из /proc/schedstat. |
sockstat | Выдает различные статистические данные из /proc/net/sockstat. |
софтнет | Выдает статистику из /proc/net/softnet_stat. |
статистика | Открывает различные статистические данные из /proc/stat. Это включает время загрузки, форки и прерывания. |
тапестаты | Раскрывает статистику из /sys/class/scsi_tape. |
текстовый файл | Раскрывает статистику, считанную с локального диска. Флаг –collector.textfile.directory должен быть установлен. |
тепловой | Выдает тепловую статистику, как pmset -g therm. |
тепловая_зона | Открывает статистику тепловых зон и охлаждающих устройств из /sys/class/thermal. |
время | Отображает текущее системное время. |
timex | Раскрывает выбранные статистики системных вызовов adjtimex(2). |
udp_queues | Раскрывает UDP суммарную длину rx_queue и tx_queue из /proc/net/udp и /proc/net/udp6. |
uname | Раскрывает системную информацию, предоставляемую системным вызовом uname. |
vmstat | Выдает статистику из /proc/vmstat. |
xfs | Предоставляет статистику времени выполнения XFS. |
zfs | Раскрывает статистику производительности ZFS. |
Anexo 2: Ejemplo de exporter de Oracle
Это один из примеров типа информации, которую предоставляет экспортер Oracle, который работает через конфигурацию одного файла и ряд переменных, определяющих кредитные карты и SID:
- oracledb_exporter_last_scrape_duration_seconds
- oracledb_exporter_last_scrape_error
- oracledb_exporter_scrapes_total
- oracledb_up
- oracledb_activity_execute_count
- oracledb_activity_parse_count_total
- oracledb_activity_user_commits
- oracledb_activity_user_rollbacks
- oracledb_sessions_activity
- oracledb_wait_time_application
- oracledb_wait_time_commit
- oracledb_wait_time_concurrency
- oracledb_wait_time_configuration
- oracledb_wait_time_network
- oracledb_wait_time_other
- oracledb_wait_time_scheduler
- oracledb_wait_time_system_io
- oracledb_wait_time_user_io
- oracledb_tablespace_bytes
- oracledb_tablespace_max_bytes
- oracledb_tablespace_free
- oracledb_tablespace_used_percent
- oracledb_process_count
- oracledb_resource_current_utilization
- oracledb_resource_limit_value
Для того чтобы дать представление о том, как можно настроить экспортер, приведем пример с одним файлом конфигурации экспортера JMX:
---
startDelaySeconds: 0
hostPort: 127.0.0.1:1234
username:
password:
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
whitelistObjectNames: ["org.apache.cassandra.metrics:*"]
blacklistObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"]
rules:
- pattern: 'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'
name: cassandra_$1_$2
value: $3
valueFactor: 0.001
labels: {}
help: "Cassandra metric $1 $2"
cache: false
type: GAUGE
attrNameSnakeCase: false
Pandora FMS’s editorial team is made up of a group of writers and IT professionals with one thing in common: their passion for computer system monitoring. Pandora FMS’s editorial team is made up of a group of writers and IT professionals with one thing in common: their passion for computer system monitoring.