Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.
Для кого-то вроде меня, кто любит дикую жизнь, в начале зимы я даже нашел потайное место для пикника. В сегодняшнем обществе, чтобы найти такое спокойное существование, я приложил большие усилия.
В ночь ранней зимы не было даже шороха насекомых, а звездное небо было высоко и далеко. Свернувшись калачиком у костра, я думаю о Прометее. В греческой мифологии он научил людей пользоваться огнем, полностью попрощавшись с эпохой питья крови.
Еще в 2012 году был также фильм под названием «Прометей», который был приквелом к «Очень странным делам», и его грандиозная обстановка впечатляла.
Перед этим бесконечным временем, пространством и неизвестным царством я немного программист, я действительно не так хорош, как пердун. Те, кто сильнее меня, работают усерднее меня, например, ставят флаг, чтобы выучить python.潘总
, он едва ли сможет считаться пуком.
Прометей по-английски этоprometheus
, как видно из насмешливого названия, это импортный продукт. Prometheus — это версия с открытым исходным кодом внутренней системы мониторинга и сигнализации Google, которая сейчас очень популярна.
Система мониторинга является общей проблемой, и xjjdog также специально обобщал ее ранее.«Так много компонентов мониторинга, всегда найдется подходящий для вас», эта длинная статья представляет систему мониторинга из нескольких измерений, и prometheus ориентирован наmetric
Виды мониторинга данных.
Сегодня мы хотим сосредоточиться на Прометее. Агрессивный, с позицией господства над миром. Эта статья предназначена в основном для того, чтобы заинтересовать вас и предоставляет множество практических файлов конфигурации. Наговорив столько глупостей, приступим.
1. Введение
Когда вы используете некоторые компоненты отображения, похожие на grafana, вы можете обнаружить базовое хранилище данных и использовать Prometheus, и эти две вещи, очевидно, не связаны. Наслаждаясь высочайшей красотой графаны, вы должны признать реальность: текущая система мониторинга разделена на очень специфические и небольшие модули, что позволяет вам делать изысканный выбор на основе опыта и привычек.
Экосистема Prometheus состоит из нескольких компонентов, некоторые из которых являются необязательными. Большинство компонентов Prometheus написаны на Go, что упрощает их компиляцию и развертывание. Многие статьи в Интернете малопонятны и трудны для понимания, и здесь xjjdog использует человеческие слова для их описания.
Примечание: постучите по доске, где ★ является ключевой точкой, которую необходимо проверить. Вы не можете использовать его, если не научитесь
★1)Prometheus Server
: В основном отвечает за данные采集
а также存储
, который предоставляет PromQL查询语言
служба поддержки. Обратите внимание, что это также магазин!
2) Client SDK: поддерживает очень многоязычные библиотеки классов, чем больше, тем лучше.
3)Push Gateway
: Основной способ для Prometheus получить данные мониторинга拉取
режиме, но всегда есть какие-то переходные элементы мониторинга, такую информацию не вытащить. Таким образом, этот компонент должен поддерживать некоторые кратковременные события и буферизовать эту информацию.
4)PromDash
: Используйте Rails для разработки визуальной панели инструментов для визуализации данных индикатора.
★5)Exporter
: Компоненты сбора данных, то есть некоторые агенты. Отвечает за сбор данных с цели и преобразование их в формат, поддерживаемый Prometheus.
★6)Alertmanager
: Менеджер тревог для отправки в правильную логическую группу. Распространенными способами получения являются: электронная почта, pagerduty, OpsGenie, веб-перехватчик и т. д.
7)prometheus_cli
: инструмент командной строки
8) Другие вспомогательные инструменты: различные инструменты экспорта, которые могут поддерживать преобразование данных хранилища Prometheus в форматы хранения данных, необходимые для HAProxy, StatsD, Graphite и других инструментов.
После долгого обсуждения я все еще не могу избежать трех основных компонентов: сбора, обработки и отображения. Прочитав приведенное выше введение, вы сможете понять эту официальную картину. Смотрите на большие коробки и не обращайте внимания на детали.
Давайте извлечем некоторые из более специальных моментов.
1) Способ получения значения мониторинга - это режим извлечения.
2) У него есть база данных временных рядов, в которой хранятся данные, и язык запросов гибкий, но не SQL
3) Существует три метода агрегации данных: SDK, агент и промежуточный шлюз.
4) Можно использовать графану вместо собственного уродливого интерфейса
5) Тревожная сигнализация с мелкозернистой конфигурацией, унифицированное управление
2. Установка и настройка
После понимания вышеперечисленных компонентов установка и настройка станут намного проще. Сначала скачайте Prometheus, а затем разархивируйте его.
cd /opt
wget -c https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz
tar zxvf prometheus-2.14.0.linux-amd64.tar.gz
2.1, настроить сервер
Отредактируйте файл конфигурации в каталоге установкиprometheus.yml
, мы объясняем более важные части. Много раз нам нужно отслеживать множество компонентов, таких как состояние системы, канал, кафка, jvm и т. д. Если разместить все файлы конфигурации здесь, это будет вонючим и длинным, поэтому обычно используется файл подконфигурации. . Обратите внимание, что файл конфигурации разделен на две части: верхняя часть — это правило срабатывания, а нижняя — имя хоста, обратите внимание на разницу.
Каждый отслеживаемый компонент должен самостоятельно развернуть экспортер, а затем открыть интерфейс http.
alerting:
alertmanagers:
- static_configs:
- targets: ["10.81.28.227:9093"]
# 分文件配置,我们以sys系统参数为例说明
rule_files:
- "sys_monit.yml"
- "kafka_monit.yml"
# 抓取配置
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
group: "监控服务端"
- job_name: 'system'
#通过文件去动态发现配置
file_sd_configs:
- refresh_interval: 1m
files:
- sys.yml #配置文件路径
- job_name: 'kafka'
file_sd_configs:
- refresh_interval: 1m
files:
- kafka.yml
Давайте взглянем на один из файлов подконфигурацииsys.yml
, который определяет группу машин для мониторинга. То есть где искать данные.
[
{
"labels": {
"job": "shop001.web.pub.pro.ali.dc",
"instance": "system"
},
"targets": [
"10.174.88.9:9100"
]
}
]
Затем запускаем Прометей:
nohup ./prometheus &
2.2, конфигурация сигнализации
alertmanager нужно качать отдельно, что действительно удивительно в схеме мозга.
https://github.com/prometheus/alertmanager/releases
Конфигурационный файл сигнализации разделен на две части, одна из которых размещена в вышеуказанномprometheus.yml
Модуль rule_files в файле используется для указания правил сопоставления, другая часть помещается в файл alertmanager.yml для указания местонахождения сигнала тревоги.
Например, если я хочу отправить сигнал тревоги на пресловутый дидинг, я могу написать это так.
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 10m
receiver: 'pro'
routes:
- receiver: 'canal'
match:
alertname: 'canal 延迟'
receivers:
- name: 'sys'
webhook_configs:
- url: 'http://10.81.28.227:8060/dingtalk/pro/send'
- name: 'canal'
webhook_configs:
- url: 'http://10.81.28.227:8060/dingtalk/canal/send'
Затем взгляните на раздел правил, например sys_monit.yml, и вы увидите, как работает этот процесс.
roups:
- name: netstat_tcp_time_wait
rules:
- alert: 主机连接数 time_wait
expr: netstat_tcp_time_wait > 60000
for: 5m
labels:
status: warning
annotations:
summary: "{{$labels.job}}"
description: "{{ $labels.instance }} time_wait > 60k(当前值:{{ $value}})"
Если у вас установлена панель мониторинга, вы должны увидеть эту информацию. Однако каждый раз при изменении порога требуется перезапуск сервера, что не очень хорошо. Кроме того, глубоко вложенная информация yml довольно беспорядочна, когда есть много конфигураций. Как видно из приведенных выше файлов конфигурации, при разборе этих файлов конфигурации используется простой метод-заполнитель. Перед созданием аварийного сигнала необходимо знать название и значение каждого элемента мониторинга.
3. Другие интеграции
Telegraf — относительно простой в использовании агент для сбора данных. Обычно он сообщает данные мониторинга через push-уведомление, но, добавив несколько строк конфигурации, push-уведомление можно превратить в получение (открывая выделенный интерфейс). Основные файлы конфигурации следующие:
[[outputs.prometheus_client]]
listen = "0.0.0.0:9100"
Ниже приведен рендеринг мониторинга хоста Grafana. Поскольку его внешний вид выше, чем у прометея, обычно используется графана.
Но встроенный пользовательский интерфейс не бесполезен, например, следующая страница для просмотра состояния машины всей системы.
Интерфейс для отладки операторов запросов и т. д.
Кроме того, prometheus можно легко подключить к следующим системам:
- спрингбут. видеть
Особенно Aliyun.com/articles/27…
2) Доступ к каналу. Добавить в canal.properties
canal.metrics.pull.port=11112
Примечание: версия канала должна быть версией канала 1.1.x или выше.
End
Система мониторинга, основная сложность - экология. Prometheus быстро развивался в последние годы, и в него было интегрировано множество компонентов, что является для нас большим благом. Однако его файл конфигурации все еще немного сложен, особенно при управлении большой группой компьютеров, файл конфигурации необходимо часто менять, и автоматическое обнаружение невозможно.
Поэтому, когда prometheus обычно используется, он будет взаимодействовать со многими внутренними системами, писать множество сценариев оболочки, автоматически изменять эти конфигурации для перезапуска и пытаться максимально автоматизировать.
Задействовано слишком много файлов конфигурации, и конфигурация относительно сложна. Я положил эту информацию на склад. При необходимости обратитесь к нему самостоятельно.
https://github.com/xjjdog/prometheus-cnf-pro
Список: 1. Конфигурация Prometheus, конфигурация правил (11) 2. конфигурация диспетчера предупреждений (1) 3. Телеграф (2) 4. Графана (5)
Об авторе:Мисс сестра вкус(xjjdog), публичная учетная запись, которая не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус. Мой личный WeChat xjjdog0, добро пожаловать в друзья для дальнейшего общения.