Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. # Provide stream processing for Monasca log metrics.
  2.  
  3. input {
  4. kafka {
  5. zk_connect => "{% raw %}{{ monasca_zookeeper_servers }}{% endraw %}"
  6. topic_id => "{% raw %}{{ monasca_transformed_logs_topic }}{% endraw %}"
  7. group_id => "log-metric"
  8. consumer_id => "monasca_log_metrics"
  9. }
  10. }
  11.  
  12. filter {
  13. # Drop everything without a log_level
  14. if ![log][dimensions][log_level] {
  15. drop {
  16. }
  17. }
  18.  
  19. # Override log level for specific log metrics
  20. if 'infra.haproxy.http' in [log][dimensions][tag] {
  21. mutate {
  22. replace => { "[log][dimensions][log_level]" => "haproxy_tr" }
  23. }
  24. }
  25.  
  26. # Convert logs to metrics
  27. if [log][dimensions][log_level] in [ "error", "warning" ] {
  28. mutate {
  29. add_field => { "[metric][name]" => "log.%{[log][dimensions][log_level]}" }
  30. add_field => { "[metric][value]" => 1 }
  31. add_field => { "[metric][dimensions][programname]" => "%{[log][dimensions][programname]}" }
  32. add_field => { "[metric][dimensions][hostname]" => "%{[log][dimensions][Hostname]}" }
  33. }
  34. } else if "haproxy_tr" in [log][dimensions][log_level] {
  35. mutate {
  36. add_field => { "[metric][name]" => "haproxy_logs_time_to_request" }
  37. add_field => { "[metric][value]" => "%{[log][dimensions][tr]}" }
  38. add_field => { "[metric][dimensions][frontend_name]" => "%{[log][dimensions][frontend_name]}" }
  39. add_field => { "[metric][dimensions][status_code]" => "%{[log][dimensions][status_code]}" }
  40. add_field => { "[metric][dimensions][http_req]" => "%{[log][dimensions][http_req]}" }
  41. }
  42. } else {
  43. drop {
  44. }
  45. }
  46.  
  47. # Common operations to new metrics
  48. mutate {
  49. add_field => { "[metric][dimensions][service]" => "logmetrics" }
  50. convert => { "[metric][value]" => "float" }
  51. }
  52.  
  53. # Convert the timestamp of the event to milliseconds since epoch.
  54. ruby {
  55. code => "event['metric']['timestamp'] = event['@timestamp'].to_i * 1000"
  56. }
  57.  
  58. # Clean up any fields which aren't required from the new metric
  59. mutate {
  60. remove_field => ["[metric][meta]",
  61. "creation_time",
  62. "log",
  63. "@version",
  64. "@timestamp"]
  65. }
  66. }
  67.  
  68. output {
  69. kafka {
  70. bootstrap_servers => "{% raw %}{{ monasca_kafka_servers }}{% endraw %}"
  71. topic_id => "{% raw %}{{ monasca_metrics_topic }}{% endraw %}"
  72. client_id => "monasca_log_metrics"
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement