Тема: observability
-
Непрерывное профилирование в продакшене: постоянно включённое сэмплирующее профилирование и на какие вопросы оно отвечает
Непрерывное профилирование систематически снимает профили CPU и памяти во времени и хранит их как размеченные серии, поэтому команда может спросить, какая функция потребила больше всего CPU по всему парку серверов вчера, или что изменилось между двумя версиями; сэмплирующие профилировщики делают это достаточно дёшево, чтобы держать их включёнными постоянно, а сами профили поставляют рантайм-эндпоинты вроде /debug/pprof/ в Go или eBPF-агенты.
-
Какая стратегия сэмплирования трейсов сохраняет видимость редких сбоев в сервисе с низким трафиком?
Открытый вопрос: рекомендации по сэмплированию пишутся для сервисов с тысячами трейсов в секунду, где даже один процент всё ещё остаётся репрезентативной выборкой; для сервиса с несколькими запросами в секунду — какая комбинация head sampling, tail sampling, ставок по маршрутам и сроков хранения позволяла сохранить тот единственный трейс со сбоем за неделю доступным ценой, которую команда сочла приемлемой?
-
Срочные оповещения по симптомам, а не по причинам
Оповещайте о том, что испытывают пользователи: доле ошибок, задержке, доступности, свежести данных. Привязывайте пороги к целям, направляйте уведомления по срочности, а каждое шумное оповещение либо исправляйте, либо удаляйте.
-
Which observability signals should a JVM or .NET service emit by default, and at what overhead?
Open question: both runtimes ship built-in telemetry (Flight Recorder and GC logging on the JVM; EventPipe counters and dotnet-trace on .NET) and both have OpenTelemetry auto-instrumentation, but there is little shared evidence on which of these should be always-on in production, what they cost, and which ones actually shortened incidents.
-
Log sampling for high-volume events: keep every error, sample the repetitive lines
Sampling drops a fraction of similar log events on purpose; the useful forms are one-in-N, burst-then-rate per period, per-level rules that leave warnings and errors untouched, and pipeline sampling keyed on a request ID so a whole request is kept or dropped together, with the applied rate written into the surviving events.
-
Verteiltes Tracing in Umrissen: Spans, Eltern-Kennungen und W3C Trace Context
Ein Trace ist ein Baum aus Spans, jeder mit Trace-Kennung, eigener Span-Kennung, Eltern-Span-Kennung, Zeitstempeln, Attributen und Status; der W3C-Header traceparent trägt Trace-Kennung, Eltern-Kennung und ein Sampled-Flag über Prozessgrenzen, und ein Dienst, der beide Header nur weiterreicht, hält Traces trotzdem zusammen.
-
journald forwarding and remote collection: ForwardToSyslog, systemd-journal-upload/-remote, and rate limits
journald can hand its entries to a local syslog daemon with ForwardToSyslog=, or ship them directly over HTTPS with systemd-journal-upload to a systemd-journal-remote listener that writes its own journal files. Both paths are subject to journald's own per-service rate limiting, which drops excess messages once a burst threshold is crossed and records only a count of what it dropped.
-
Проектирование операционной панели: один вопрос на блок, один экран на аудиторию
Начните с вопросов, на которые должен ответить специалист по реагированию; выделите каждому вопросу один блок, расположите блоки от общего к частному, согласуйте единицы и оси, замените копии шаблонными переменными, свяжите каждое оповещение с вызовом дежурного с нужной панелью и храните её определение под контролем версий.
-
Windows Event Forwarding: a source-initiated subscription, wecutil, and the EventLog Readers group
In a source-initiated WEF subscription, each source computer pulls its configuration from a collector via Group Policy and pushes matching events to it; wecutil manages the subscription on the collector, and forwarding the Security log needs the NETWORK SERVICE account added to the EventLog Readers group on every source.
-
Используйте корреляционные идентификаторы на протяжении задачи агента
Разделяйте идентичность задачи, отдельные попытки и контекст распределённой трассировки, чтобы отслеживать повторы без журналирования чувствительных данных запросов.
-
Alarme sinnvoll gestalten: wenige Meldungen, jede mit einem nächsten Schritt
Ein Alarm, der jemanden weckt, muss dringend, handlungsleitend und für Nutzer spürbar sein; alles andere ist ein Ticket. Symptome an der Nutzerkante alarmieren, Schwellen an Ziele und die Verbrauchsrate des Fehlerbudgets binden, eine Wartezeit gegen Flackern setzen, das Runbook verlinken und jeden Alarm ohne Handlung wöchentlich abschaffen oder nachjustieren.
-
Alert hygiene for host monitoring: rate over threshold, failed units, and duration windows
A page should mean a human must act now; a host disk approaching full should page on its fill rate, not a fixed percentage that a slow-growing partition can sit near for months, and a threshold crossed for an instant should not page at all. Google's SRE materials on paging discipline and multiwindow alerting give the reasoning; this article applies it to the host signals covered in this series.
-
Воспроизводимые журналы запусков агента: запись каждого вызова модели и инструмента
Запуск агента можно отладить, только если каждый запрос к модели, ответ, вызов инструмента и его результат записаны по порядку с идентификаторами и параметрами. Семантические соглашения OpenTelemetry GenAI задают имена полей, а воспроизводимый журнал позволяет повторить сбой без оплаты нового запуска.
-
Metric naming and label cardinality: units in the name, bounded values in the labels
Prometheus naming conventions put an application prefix, a base unit and a _total suffix for counters into the metric name and reserve labels for bounded dimensions; every distinct label combination is its own time series, so user IDs, raw URLs and error messages in labels multiply storage until the server degrades.
-
Forwarding syslog with rsyslog over TCP behind a disk-assisted queue
A drop-in file under /etc/rsyslog.d/ can forward every message to a central collector over TCP while a disk-assisted action queue buffers messages locally, so a collector outage or network blip does not drop logs. rsyslogd -N1 validates the syntax before the change is applied.
-
Correlation versus causation in incident and operations data
A correlation coefficient measures how two series move together; it says nothing about which one drives the other, whether a third factor such as traffic drives both, or whether the data were selected by the outcome. Plot first, condition on the obvious common causes, check timing, and confirm with an intervention such as a flag or canary before acting.
-
The RED method for request-driven services, with exemplars that link a slow bucket to a trace
Instrument every request-handling service identically with rate, errors and duration: one counter with route, method and status labels and one duration histogram; when tracing exists, attach exemplars (a trace ID with a recorded value) to the histogram so a slow bucket on the dashboard opens the trace that landed there.
-
Ротация логов и ограничения срока хранения
На каждом уровне — в приложении, среде выполнения контейнеров, прокси и системном журнале — нужно ограничивать объём и возраст логов. Срок хранения следует выбирать исходя из потребностей отладки и правовых требований, а не принципа «хранить всё».
-
Synthetic monitoring and uptime checks: probing from outside what users see
A synthetic check sends a scripted request from outside the system at a fixed interval and records whether the response was correct and how long it took; it is black-box monitoring in the SRE sense, catches failures that internal instrumentation cannot see (DNS, TLS, the load balancer, an expired domain), and must be probed from more than one place before it pages anyone.
-
Однократная настройка модуля logging в точке входа
Библиотеки получают логгеры и не настраивают обработчики; приложение один раз при запуске задаёт обработчики, уровни и форматы, чтобы управлять выводом из одного места и избегать дубликатов.
Машиночитаемо: JSON