Alloy- Monitor your OS - Grafana menggunakan Mint Browser (2)
Saya akan membantu memperbaiki skrip tersebut. Ada beberapa masalah yang mungkin terjadi:
Masalah yang Saya Identifikasi:
- Format konfigurasi Alloy (sebelumnya Grafana Agent) kemungkinan versi lama
- Parameter PowerShell mungkin tidak sesuai
- Struktur konfigurasi yang tidak valid
Versi Perbaikan:
1. PERBAIKAN SCRIPT CMD:
@echo off
cd "%TEMP%"
echo Downloading installation script...
powershell -Command "& {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
Invoke-WebRequest -Uri 'https://storage.googleapis.com/cloud-onboarding/alloy/scripts/install-windows.ps1' -OutFile 'install-windows.ps1'
}"
if not exist "install-windows.ps1" (
echo Failed to download script
pause
exit /b 1
)
echo Running installation script...
powershell -ExecutionPolicy Bypass -File "install-windows.ps1" ^
-GCLOUD_HOSTED_METRICS_URL "https://prometheus-prod-52-prod-ap-southeast-2.grafana.net/api/prom/push" ^
-GCLOUD_HOSTED_METRICS_ID "2911325" ^
-GCLOUD_SCRAPE_INTERVAL "60s" ^
-GCLOUD_HOSTED_LOGS_URL "https://logs-prod-032.grafana.net/loki/api/v1/push" ^
-GCLOUD_HOSTED_LOGS_ID "1451339" ^
-GCLOUD_RW_API_KEY "glc_eyJvIjoiMTYzOTY4OSIsIm4iOiJkZWxsMTUzIiwiayI6IjlmOUMzeFA5Tk1FaDk0dzBHMjF1MVhmVCIsIm0iOnsiciI6InByb2QtYXAtc291dGhlYXN0LTIifX0="
echo Installation completed. Press any key to continue...
pause > nul
2. KONFIGURASI ALLOY YANG DIPERBAIKI (simpan sebagai config.alloy):
// Config for Windows monitoring with Alloy
// Prometheus Metrics Section
// Define constants
const "HOSTNAME" = env("COMPUTERNAME")
prometheus.exporter.windows "windows_exporter" {
enabled_collectors = [
"cpu",
"cs",
"logical_disk",
"net",
"os",
"service",
"system",
"time",
"memory",
"thermalzone",
"tcp",
]
// Optional: Disable specific collectors to reduce noise
// disabled_collectors = ["textfile"]
}
discovery.relabel "windows_targets" {
targets = prometheus.exporter.windows.windows_exporter.targets
rule {
target_label = "job"
replacement = "windows"
}
rule {
target_label = "instance"
replacement = const.HOSTNAME
}
rule {
target_label = "os"
replacement = "windows"
}
}
prometheus.scrape "scrape_windows" {
targets = discovery.relabel.windows_targets.output
job_name = "windows"
scrape_interval = "60s"
forward_to = [prometheus.remote_write.metrics_service.receiver]
}
prometheus.remote_write "metrics_service" {
endpoint {
url = "https://prometheus-prod-52-prod-ap-southeast-2.grafana.net/api/prom/push"
basic_auth {
username = "2911325"
password = "glc_eyJvIjoiMTYzOTY4OSIsIm4iOiJkZWxsMTUzIiwiayI6IjlmOUMzeFA5Tk1FaDk0dzBHMjF1MVhmVCIsIm0iOnsiciI6InByb2QtYXAtc291dGheastLTIifX0="
}
}
// Optional: Filter metrics to reduce volume
write_relabel_config {
source_labels = ["__name__"]
regex = "windows_cpu_.*|windows_memory_.*|windows_disk_.*|windows_net_.*|windows_os_.*|windows_system_.*|windows_service_.*|up"
action = "keep"
}
}
// Loki Logs Section
loki.source.windows_eventlog "application_logs" {
event_log_name = "Application"
locale = 1033 // English
poll_interval = "10s"
labels = {
job = "windows",
instance = const.HOSTNAME,
log_type = "application",
}
forward_to = [loki.process.application_logs_processor.receiver]
}
loki.process "application_logs_processor" {
forward_to = [loki.write.logs_service.receiver]
// Extract JSON fields if present
stage.json {
expressions = {
level = "levelText",
source = "source",
event_id = "eventID",
message = "message",
}
}
// Set labels from extracted fields
stage.labels {
values = {
level = "level",
source = "source",
}
}
// Optional: Filter only important logs
stage.match {
selector = "{log_type=\"application\"}"
action = "keep"
values = {
level = ["Error", "Warning", "Critical"],
}
}
}
loki.source.windows_eventlog "system_logs" {
event_log_name = "System"
locale = 1033
poll_interval = "10s"
labels = {
job = "windows",
instance = const.HOSTNAME,
log_type = "system",
}
forward_to = [loki.process.system_logs_processor.receiver]
}
loki.process "system_logs_processor" {
forward_to = [loki.write.logs_service.receiver]
stage.json {
expressions = {
level = "levelText",
source = "source",
event_id = "eventID",
}
}
stage.labels {
values = {
level = "level",
}
}
}
loki.write "logs_service" {
endpoint {
url = "https://logs-prod-032.grafana.net/loki/api/v1/push"
basic_auth {
username = "1451339"
password = "glc_eyJvIjoiMTYzOTY4OSIsIm4iOiJkZWxsMTUzIiwiayI6IjlmOUMzeFA5Tk1FaDk0dzBHMjF1MVhmVCIsIm0iOnsiciI6InByb2QtYXAtc291dGheastLTIifX0="
}
}
}
// Optional: Add self-monitoring
prometheus.scrape "self_scrape" {
targets = [
{
__address__ = "127.0.0.1:12345",
instance = const.HOSTNAME,
},
]
job_name = "alloy"
forward_to = [prometheus.remote_write.metrics_service.receiver]
}
3. SCRIPT ALTERNATIF (Jika Alloy Bermasalah):
Jika Alloy tetap error, coba gunakan Grafana Agent versi lebih stabil:
# Simpan sebagai install-grafana-agent.ps1 dan jalankan sebagai Administrator
# Parameters
$MetricsURL = "https://prometheus-prod-52-prod-ap-southeast-2.grafana.net/api/prom/push"
$MetricsID = "2911325"
$LogsURL = "https://logs-prod-032.grafana.net/loki/api/v1/push"
$LogsID = "1451339"
$APIKey = "glc_eyJvIjoiMTYzOTY4OSIsIm4iOiJkZWxsMTUzIiwiayI6IjlmOUMzeFA5Tk1FaDk0dzBHMjF1MVhmVCIsIm0iOnsiciI6InByb2QtYXAtc291dGheastLTIifX0="
# Download Grafana Agent
$agentUrl = "https://github.com/grafana/agent/releases/download/v0.40.1/grafana-agent-installer.exe"
$installerPath = "$env:TEMP\grafana-agent-installer.exe"
Write-Host "Downloading Grafana Agent..." -ForegroundColor Green
Invoke-WebRequest -Uri $agentUrl -OutFile $installerPath
# Install Agent
Write-Host "Installing Grafana Agent..." -ForegroundColor Green
Start-Process -FilePath $installerPath -ArgumentList "/S" -Wait
# Create config
$configPath = "C:\Program Files\Grafana Agent\agent-config.yaml"
@"
metrics:
wal_directory: "C:\Program Files\Grafana Agent\data"
global:
scrape_interval: 60s
configs:
- name: windows
remote_write:
- url: $MetricsURL
basic_auth:
username: $MetricsID
password: $APIKey
scrape_configs:
- job_name: 'windows'
static_configs:
- targets: ['localhost:9182']
labels:
instance: '$env:COMPUTERNAME'
job: 'windows'
logs:
positions_directory: "C:\Program Files\Grafana Agent\positions"
configs:
- name: windows-logs
clients:
- url: $LogsURL
basic_auth:
username: $LogsID
password: $APIKey
scrape_configs:
- job_name: windows-eventlog
windows_events:
bookmark_path: "C:\Program Files\Grafana Agent\bookmarks.xml"
eventlog_name: "Application"
labels:
job: 'windows'
instance: '$env:COMPUTERNAME'
relabel_configs:
- source_labels: ['computer']
target_label: 'host'
"@ | Out-File -FilePath $configPath -Encoding UTF8
# Install Windows Exporter (jika belum ada)
$exporterUrl = "https://github.com/prometheus-community/windows_exporter/releases/download/v0.25.1/windows_exporter-0.25.1-amd64.exe"
$exporterPath = "$env:TEMP\windows_exporter.exe"
Write-Host "Downloading Windows Exporter..." -ForegroundColor Green
Invoke-WebRequest -Uri $exporterUrl -OutFile $exporterPath
# Install Windows Exporter as service
Write-Host "Installing Windows Exporter service..." -ForegroundColor Green
& $exporterPath --web.listen-address=":9182" --collectors.enabled="cpu,cs,logical_disk,net,os,service,system,time,memory" --install
# Start services
Write-Host "Starting services..." -ForegroundColor Green
Start-Service "Grafana Agent"
Start-Service "windows_exporter"
Write-Host "Installation completed!" -ForegroundColor Green
Write-Host "Grafana Agent is now running and sending metrics/logs to Grafana Cloud" -ForegroundColor Yellow
Cara Penggunaan:
Opsi 1 (Alloy yang Diperbaiki):
- Simpan script CMD di atas sebagai
install.cmd - Simpan konfigurasi Alloy sebagai
config.alloy - Jalankan
install.cmdsebagai Administrator
Opsi 2 (Grafana Agent Legacy):
- Simpan script PowerShell sebagai
install-agent.ps1 - Buka PowerShell sebagai Administrator
- Jalankan:
Set-ExecutionPolicy Bypass -Scope Process -Force - Jalankan:
.\install-agent.ps1
Troubleshooting Tips:
- Cek apakah service berjalan:
sc query "Alloy"
# atau
sc query "Grafana Agent"
- Cek log error:
# Cek Event Viewer
eventvwr.msc
# Lihat di: Windows Logs > Application
- Test koneksi ke Grafana:
# Test metrics endpoint
Invoke-WebRequest -Uri "https://prometheus-prod-52-prod-ap-southeast-2.grafana.net/api/prom/push" -Method Head
# Test logs endpoint
Invoke-WebRequest -Uri "https://logs-prod-032.grafana.net/loki/api/v1/push" -Method Head
Error apa yang spesifik Anda terima? Beri tahu saya error message-nya agar bisa diperbaiki lebih tepat.