uos-exporter高级配置自定义指标、告警规则和Grafana可视化【免费下载链接】uos-exporteruos-exporter collects metrics from os项目地址: https://gitcode.com/openeuler/uos-exporter前往项目官网免费下载https://ar.openeuler.org/ar/uos-exporter 是 openEuler 社区推出的专业系统监控指标采集工具能够从操作系统层面收集丰富的性能数据并通过 Prometheus 格式暴露。本文将深入介绍如何通过高级配置实现自定义指标采集、智能告警规则设置和专业的 Grafana 可视化仪表板。为什么需要高级配置uos-exporter 默认提供了全面的系统监控能力但在实际生产环境中我们经常需要定制化指标监控特定的应用程序或业务逻辑智能告警根据业务需求设置精准的告警阈值专业可视化创建直观的业务监控仪表板性能优化调整采集频率和资源使用一、自定义指标配置指南 ✨1.1 了解配置文件结构每个 uos-exporter 组件都有独立的配置文件位于对应目录的config/文件夹中。以 node_system_exporter 为例# node_system_exporter/config/export.yaml address: 0.0.0.0 port: 9120 metricsPath: /metrics log: level: info log_path: /var/log/uos-exporter/node_system_exporter.log1.2 自定义采集频率通过修改 exporter 的启动参数可以调整指标采集频率# 设置采集间隔为30秒 ./node_system_exporter --collector.cpu --collector.meminfo --collector.diskstats --collector.netdev --collector.loadavg --collector.filesystem --collector.time --collector.uname --collector.stat --collector.textfile --collector.vmstat --collector.buddyinfo --collector.ksmd --collector.numa --collector.interrupts --collector.softirqs --collector.conntrack --collector.edac --collector.powersupplyclass --collector.rapl --collector.hwmon --collector.infiniband --collector.ipvs --collector.perf --collector.processes --collector.qdisc --collector.schedstat --collector.sockstat --collector.thermal_zone --collector.timex --collector.udp_queues --collector.vmstat --collector.xfs --collector.zfs --collector.systemd --collector.tcpstat --collector.wifi --collector.netstat --collector.entropy --collector.filefd --collector.meminfo_numa --collector.mountstats --collector.nfs --collector.nfsd --collector.pressure --collector.rapl --collector.schedstat --collector.sockstat --collector.thermal_zone --collector.timex --collector.udp_queues --collector.vmstat --collector.xfs --collector.zfs --collector.systemd --collector.tcpstat --collector.wifi --collector.netstat --collector.entropy --collector.filefd --collector.meminfo_numa --collector.mountstats --collector.nfs --collector.nfsd --collector.pressure1.3 使用 bpftrace_exporter 实现动态监控bpftrace_exporter 允许你使用 eBPF 技术监控内核级事件配置非常灵活# bpftrace_exporter/config/bpftrace-exporter.yaml address: 0.0.0.0 port: 9069 metricsPath: /metrics log: level: debug log_path: /var/log/uos-exporter/bpftrace_exporter.log bpftrace_path: /usr/bin/bpftrace script_path: /usr/share/bpftrace/tools/runqlat.bt var_defs: usecs:hist自定义 bpftrace 脚本示例# 监控系统调用延迟 #!/usr/bin/bpftrace tracepoint:syscalls:sys_enter_* { start[tid] nsecs; } tracepoint:syscalls:sys_exit_* { $delta nsecs - start[tid]; usecs[comm] hist($delta / 1000); }1.4 添加自定义文本文件指标uos-exporter 支持通过 textfile collector 添加自定义指标# 创建自定义指标文件 cat /var/lib/node_exporter/textfile_collector/custom_metrics.prom EOF # HELP custom_app_requests_total Total number of application requests # TYPE custom_app_requests_total counter custom_app_requests_total{appmyapp} 1234 # HELP custom_app_response_time_seconds Application response time # TYPE custom_app_response_time_seconds gauge custom_app_response_time_seconds{appmyapp} 0.23 EOF二、智能告警规则配置 2.1 Prometheus 告警规则基础创建告警规则文件alerts.ymlgroups: - name: uos-exporter-alerts rules: # CPU 使用率告警 - alert: HighCPUUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 5m labels: severity: warning annotations: summary: CPU使用率过高 description: 实例 {{ $labels.instance }} 的CPU使用率超过80%持续5分钟当前值: {{ $value }}% # 内存使用率告警 - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 85 for: 5m labels: severity: warning annotations: summary: 内存使用率过高 description: 实例 {{ $labels.instance }} 的内存使用率超过85%持续5分钟当前值: {{ $value }}% # 磁盘空间告警 - alert: LowDiskSpace expr: (node_filesystem_avail_bytes{mountpoint/} / node_filesystem_size_bytes{mountpoint/} * 100) 10 for: 10m labels: severity: critical annotations: summary: 磁盘空间不足 description: 根分区磁盘可用空间低于10%当前可用: {{ $value }}%2.2 业务级告警规则针对特定业务场景的告警配置# 应用服务监控告警 - alert: ApplicationDown expr: up{jobmyapp-service} 0 for: 1m labels: severity: critical annotations: summary: 应用服务不可用 description: 应用服务 {{ $labels.instance }} 已下线 # 响应时间告警 - alert: HighResponseTime expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) 1 for: 2m labels: severity: warning annotations: summary: 应用响应时间过高 description: 95%分位响应时间超过1秒当前值: {{ $value }}秒 # 错误率告警 - alert: HighErrorRate expr: rate(http_requests_total{status~5..}[5m]) / rate(http_requests_total[5m]) * 100 5 for: 5m labels: severity: warning annotations: summary: HTTP错误率过高 description: 5xx错误率超过5%当前值: {{ $value }}%2.3 告警通知配置配置 Alertmanager 实现多渠道通知# alertmanager.yml global: smtp_smarthost: smtp.example.com:587 smtp_from: alertmanagerexample.com smtp_auth_username: username smtp_auth_password: password route: group_by: [alertname, cluster, service] group_wait: 30s group_interval: 5m repeat_interval: 4h receiver: team-email routes: - match: severity: critical receiver: team-pager - match: severity: warning receiver: team-slack receivers: - name: team-email email_configs: - to: teamexample.com - name: team-pager webhook_configs: - url: http://pagerduty.example.com/webhook - name: team-slack slack_configs: - api_url: https://hooks.slack.com/services/XXX/YYY/ZZZ channel: #alerts三、Grafana 可视化仪表板设计 3.1 系统资源监控仪表板创建全面的系统资源监控视图{ dashboard: { title: uos-exporter 系统监控, panels: [ { title: CPU使用率, targets: [{ expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode\idle\}[1m])) * 100), legendFormat: {{instance}} }], type: graph, yaxes: [{format: percent}] }, { title: 内存使用情况, targets: [ {expr: node_memory_MemTotal_bytes, legendFormat: 总内存}, {expr: node_memory_MemFree_bytes, legendFormat: 空闲内存}, {expr: node_memory_Buffers_bytes, legendFormat: 缓冲}, {expr: node_memory_Cached_bytes, legendFormat: 缓存} ], type: graph, yaxes: [{format: bytes}] }, { title: 磁盘IO, targets: [{ expr: rate(node_disk_read_bytes_total[1m]), legendFormat: {{device}} 读 }], type: graph, yaxes: [{format: Bps}] } ] } }3.2 业务监控仪表板针对特定业务场景的监控仪表板{ panels: [ { title: 应用请求量, targets: [{ expr: rate(custom_app_requests_total[5m]), legendFormat: {{app}} }], type: stat, fieldConfig: { defaults: { unit: reqps } } }, { title: 应用响应时间分布, targets: [{ expr: histogram_quantile(0.95, rate(custom_app_response_time_seconds_bucket[5m])), legendFormat: P95 }], type: graph, yaxes: [{format: s}] }, { title: 服务健康状态, targets: [{ expr: up, legendFormat: {{instance}} }], type: heatmap, fieldConfig: { defaults: { color: { mode: thresholds, steps: [ {color: red, value: null}, {color: green, value: 1} ] } } } } ] }3.3 告警状态面板实时告警状态监控{ panels: [ { title: 告警状态概览, type: alertlist, options: { show: current, limit: 50, stateFilter: [alerting, pending], dashboardFilter: , tagsFilter: , folderId: null } }, { title: 告警趋势, targets: [{ expr: sum(ALERTS{alertstate\firing\}) by (alertname), legendFormat: {{alertname}} }], type: graph, yaxes: [{min: 0}] } ] }四、高级配置最佳实践 4.1 性能优化建议指标采集优化# 减少不必要指标的采集 --no-collector.arp --no-collector.bcache --no-collector.conntrack内存使用优化# 调整 Prometheus 配置 storage: tsdb: retention: 15d chunkEncoding: xor网络优化# 使用压缩传输 remote_write: - url: http://prometheus:9090/api/v1/write write_relabel_configs: - source_labels: [__name__] regex: .* action: keep4.2 安全配置TLS 加密配置tls_server_config: cert_file: /path/to/cert.pem key_file: /path/to/key.pem认证配置basic_auth_users: prometheus: $2y$10$hashedpassword网络访问控制web: http_listen_address: 127.0.0.1 http_listen_port: 90904.3 监控数据保留策略# Prometheus 配置 rule_files: - alerts.yml scrape_configs: - job_name: uos-exporter static_configs: - targets: [localhost:9120] scrape_interval: 30s scrape_timeout: 10s storage: tsdb: retention: 30d min-block-duration: 2h max-block-duration: 24h五、故障排除与调试 5.1 常见问题解决指标无法采集# 检查 exporter 状态 curl http://localhost:9120/metrics # 查看日志 journalctl -u uos-exporter -fPrometheus 无法抓取# 检查网络连通性 telnet exporter-host 9120 # 检查防火墙规则 firewall-cmd --list-all内存使用过高# 调整 Prometheus 内存限制 --storage.tsdb.retention.size500GB --storage.tsdb.retention.time30d5.2 调试工具# 使用 promtool 检查指标 promtool check metrics (curl -s http://localhost:9120/metrics) # 使用 curl 测试端点 curl -s http://localhost:9120/metrics | grep -E (HELP|TYPE) # 使用 jq 分析 JSON 输出 curl -s http://localhost:9120/api/v1/query?queryup | jq .六、实际应用案例 6.1 电商系统监控配置# 电商系统专用监控配置 scrape_configs: - job_name: ecommerce-system static_configs: - targets: - web01:9120 - web02:9120 - db01:9120 - cache01:9120 metrics_path: /metrics params: collect[]: - cpu - meminfo - diskstats - netdev - filesystem6.2 微服务架构监控# 微服务监控配置 scrape_configs: - job_name: microservices kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.)总结 uos-exporter 提供了强大的系统监控能力通过合理的高级配置可以实现✅全面监控覆盖从基础设施到应用层的全方位监控✅智能告警基于业务逻辑的精准告警规则✅专业可视化直观的业务监控仪表板✅性能优化根据实际需求调整资源使用✅安全保障完善的访问控制和数据保护通过本文介绍的高级配置技巧您可以充分发挥 uos-exporter 的监控潜力构建稳定、高效、智能的监控系统。记住好的监控系统不仅能够发现问题更能帮助您预防问题提升系统的整体可靠性提示所有配置文件示例都基于实际项目结构您可以在对应目录中找到完整的配置模板和实现代码。【免费下载链接】uos-exporteruos-exporter collects metrics from os项目地址: https://gitcode.com/openeuler/uos-exporter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考