Hi, I’ve been trying to learn Loki/Alloy so I can monitor AD group membership changes, but I am now encountering some weird issues I can’t seem to grasp my head over.
This label seems to be the only thing that ever shows up, I’m not even sure how to add new filters/services here.
My Alloy successfully sends logs to my Grafana using OTLP but I just can’t seem to filter this thing…
This is my current config.alloy that seems to work and filter ‘Alloy’ events:
// ####################################
// Windows Server Metrics Configuration
// ####################################
prometheus.exporter.windows "default" {
enabled_collectors = ["cpu","cs","logical_disk","net","os","service","system", "memory", "scheduled_task", "tcp"]
}
// Configure a prometheus.scrape component to collect windows metrics.
prometheus.scrape "example" {
targets = prometheus.exporter.windows.default.targets
forward_to = [otelcol.receiver.prometheus.endpoint.receiver]
}
// ####################################
// Windows Server Logs Configuration
// ####################################
loki.source.windowsevent "application" {
eventlog_name = "Application"
use_incoming_timestamp = true
exclude_event_data = true
forward_to = [loki.process.windows_eventlog.receiver]
labels = {
job = "windows_eventlog",
instance = constants.hostname,
}
}
loki.source.windowsevent "security" {
eventlog_name = "Security"
use_incoming_timestamp = true
forward_to = [loki.process.windows_eventlog.receiver]
labels = {
job = "windows_eventlog",
instance = constants.hostname,
}
}
loki.source.windowsevent "system" {
eventlog_name = "System"
use_incoming_timestamp = true
forward_to = [loki.process.windows_eventlog.receiver]
labels = {
job = "windows_eventlog",
instance = constants.hostname,
}
}
loki.source.windowsevent "setup" {
eventlog_name = "Setup"
use_incoming_timestamp = true
forward_to = [loki.process.windows_eventlog.receiver]
labels = {
job = "windows_eventlog",
instance = constants.hostname,
}
}
loki.process "windows_eventlog" {
stage.template {
source = "message"
template = `{{- $message := .Value -}}
{{- if eq $message "" -}}empty_message
{{- else if eq $message nil -}}empty_message
{{- else -}}{{- $message -}}{{- end -}}`
}
stage.windowsevent {
source = "message"
overwrite_existing = true
}
stage.labels {
values = {
channel = "",
}
}
stage.drop {
source = "source"
value = "Alloy"
drop_counter_reason = "source_alloy"
}
stage.timestamp {
source = "timeCreated"
format = "2025-02-27T17:45:00.0000000Z"
}
forward_to = [otelcol.receiver.loki.endpoint.receiver]
}
// Prometheus receiver for scraping metrics from the prometheus exporter
otelcol.receiver.prometheus "endpoint" {
output {
metrics = [otelcol.exporter.otlphttp.endpoint.input]
}
}
// Loki receiver for scraping logs from the loki source
otelcol.receiver.loki "endpoint" {
output {
logs = [otelcol.exporter.otlphttp.endpoint.input]
}
}
// OpenTelemetry Collector receiver for scraping logs from the loki source
otelcol.exporter.otlphttp "endpoint" {
client {
endpoint = "http://10.20.31.14:4318"
tls {
insecure = true
insecure_skip_verify = true
}
}
}
I just want to monitor some specific event ids and have the ability to label them properly ![]()
