config.alloy 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /* Grafana Alloy Configuration Examples
  2. * ---
  3. * LINK: For more details, visit https://github.com/grafana/alloy-scenarios
  4. */
  5. // SECTION: TARGETS
  6. loki.write "default" {
  7. endpoint {
  8. url = "http://loki:3100/loki/api/v1/push"
  9. }
  10. external_labels = {}
  11. }
  12. prometheus.remote_write "default" {
  13. endpoint {
  14. url = "http://prometheus:9090/api/v1/write"
  15. }
  16. }
  17. // !SECTION
  18. // SECTION: SYSTEM LOGS & JOURNAL
  19. loki.source.journal "journal" {
  20. max_age = "24h0m0s"
  21. relabel_rules = discovery.relabel.journal.rules
  22. forward_to = [loki.write.default.receiver]
  23. labels = {component = string.format("%s-journal", constants.hostname)}
  24. // NOTE: This is important to fix https://github.com/grafana/alloy/issues/924
  25. path = "/var/log/journal"
  26. }
  27. local.file_match "system" {
  28. path_targets = [{
  29. __address__ = "localhost",
  30. __path__ = "/var/log/{syslog,messages,*.log}",
  31. instance = constants.hostname,
  32. job = string.format("%s-logs", constants.hostname),
  33. }]
  34. }
  35. discovery.relabel "journal" {
  36. targets = []
  37. rule {
  38. source_labels = ["__journal__systemd_unit"]
  39. target_label = "unit"
  40. }
  41. rule {
  42. source_labels = ["__journal__boot_id"]
  43. target_label = "boot_id"
  44. }
  45. rule {
  46. source_labels = ["__journal__transport"]
  47. target_label = "transport"
  48. }
  49. rule {
  50. source_labels = ["__journal_priority_keyword"]
  51. target_label = "level"
  52. }
  53. }
  54. loki.source.file "system" {
  55. targets = local.file_match.system.targets
  56. forward_to = [loki.write.default.receiver]
  57. }
  58. // !SECTION
  59. // SECTION: SYSTEM METRICS
  60. discovery.relabel "metrics" {
  61. targets = prometheus.exporter.unix.metrics.targets
  62. rule {
  63. target_label = "instance"
  64. replacement = constants.hostname
  65. }
  66. rule {
  67. target_label = "job"
  68. replacement = string.format("%s-metrics", constants.hostname)
  69. }
  70. }
  71. prometheus.exporter.unix "metrics" {
  72. disable_collectors = ["ipvs", "btrfs", "infiniband", "xfs", "zfs"]
  73. enable_collectors = ["meminfo"]
  74. filesystem {
  75. fs_types_exclude = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|tmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"
  76. mount_points_exclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/)"
  77. mount_timeout = "5s"
  78. }
  79. netclass {
  80. ignored_devices = "^(veth.*|cali.*|[a-f0-9]{15})$"
  81. }
  82. netdev {
  83. device_exclude = "^(veth.*|cali.*|[a-f0-9]{15})$"
  84. }
  85. }
  86. prometheus.scrape "metrics" {
  87. scrape_interval = "15s"
  88. targets = discovery.relabel.metrics.output
  89. forward_to = [prometheus.remote_write.default.receiver]
  90. }
  91. // !SECTION
  92. // SECTION: DOCKER METRICS
  93. prometheus.exporter.cadvisor "dockermetrics" {
  94. docker_host = "unix:///var/run/docker.sock"
  95. storage_duration = "5m"
  96. }
  97. prometheus.scrape "dockermetrics" {
  98. targets = prometheus.exporter.cadvisor.dockermetrics.targets
  99. forward_to = [ prometheus.remote_write.default.receiver ]
  100. scrape_interval = "10s"
  101. }
  102. //!SECTION
  103. // SECTION: DOCKER LOGS
  104. discovery.docker "dockerlogs" {
  105. host = "unix:///var/run/docker.sock"
  106. }
  107. discovery.relabel "dockerlogs" {
  108. targets = []
  109. rule {
  110. source_labels = ["__meta_docker_container_name"]
  111. regex = "/(.*)"
  112. target_label = "service_name"
  113. }
  114. }
  115. loki.source.docker "default" {
  116. host = "unix:///var/run/docker.sock"
  117. targets = discovery.docker.dockerlogs.targets
  118. labels = {"platform" = "docker"}
  119. relabel_rules = discovery.relabel.dockerlogs.rules
  120. forward_to = [loki.write.default.receiver]
  121. }
  122. // !SECTION