app.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package containers
  2. import (
  3. "bytes"
  4. "regexp"
  5. )
  6. var (
  7. phpCmd = regexp.MustCompile(`.*php\d*\.?\d*$`)
  8. pythonCmd = regexp.MustCompile(`.*python\d*\.?\d*$`)
  9. nodejsCmd = regexp.MustCompile(`.*node(js)?\d*\.?\d*$`)
  10. )
  11. func guessApplicationType(cmdline []byte) string {
  12. parts := bytes.Split(cmdline, []byte{0})
  13. cmd := bytes.TrimSuffix(bytes.Fields(parts[0])[0], []byte{':'})
  14. switch {
  15. case bytes.HasSuffix(cmd, []byte("memcached")):
  16. return "memcached"
  17. case bytes.HasSuffix(cmd, []byte("envoy")):
  18. return "envoy"
  19. case bytes.Contains(cmdline, []byte("org.elasticsearch.bootstrap")):
  20. return "elasticsearch"
  21. case bytes.Contains(cmdline, []byte("kafka.Kafka")) || bytes.Contains(cmdline, []byte("io.confluent.support.metrics.SupportedKafka")):
  22. return "kafka"
  23. case bytes.HasSuffix(cmd, []byte("mongod")):
  24. return "mongodb"
  25. case bytes.HasSuffix(cmd, []byte("mongos")):
  26. return "mongos"
  27. case bytes.HasSuffix(cmd, []byte("mysqld")):
  28. return "mysql"
  29. case bytes.Contains(cmdline, []byte("org.apache.zookeeper.server.quorum.QuorumPeerMain")):
  30. return "zookeeper"
  31. case bytes.HasSuffix(cmd, []byte("redis-server")):
  32. return "redis"
  33. case bytes.HasSuffix(cmd, []byte("redis-sentinel")):
  34. return "redis-sentinel"
  35. case bytes.HasSuffix(cmd, []byte("keydb-server")):
  36. return "keydb"
  37. case bytes.HasSuffix(cmd, []byte("beam.smp")) && bytes.Contains(cmdline, []byte("rabbit")):
  38. return "rabbitmq"
  39. case bytes.HasSuffix(cmd, []byte("beam.smp")) && bytes.Contains(cmdline, []byte("couch")):
  40. return "couchbase"
  41. case bytes.HasSuffix(cmd, []byte("pgbouncer")):
  42. return "pgbouncer"
  43. case bytes.HasSuffix(cmd, []byte("postgres")):
  44. return "postgres"
  45. case bytes.HasSuffix(cmd, []byte("haproxy")):
  46. return "haproxy"
  47. case bytes.HasSuffix(cmd, []byte("nginx")):
  48. return "nginx"
  49. case bytes.HasSuffix(cmd, []byte("kubelet")):
  50. return "kubelet"
  51. case bytes.HasSuffix(cmd, []byte("kube-apiserver")):
  52. return "kube-apiserver"
  53. case bytes.HasSuffix(cmd, []byte("kube-controller-manager")):
  54. return "kube-controller-manager"
  55. case bytes.HasSuffix(cmd, []byte("kube-scheduler")):
  56. return "kube-scheduler"
  57. case bytes.HasSuffix(cmd, []byte("k3s")):
  58. return "k3s"
  59. case bytes.HasSuffix(cmd, []byte("etcd")):
  60. return "etcd"
  61. case bytes.HasSuffix(cmd, []byte("dockerd")):
  62. return "dockerd"
  63. case bytes.HasSuffix(cmd, []byte("consul")):
  64. return "consul"
  65. case bytes.Contains(cmdline, []byte("org.apache.cassandra.service.CassandraDaemon")):
  66. return "cassandra"
  67. case bytes.HasSuffix(cmd, []byte("clickhouse-server")):
  68. return "clickhouse"
  69. case bytes.HasSuffix(cmd, []byte("traefik")):
  70. return "traefik"
  71. case bytes.HasSuffix(cmd, []byte("asd")):
  72. return "aerospike"
  73. case bytes.HasSuffix(cmd, []byte("httpd")):
  74. return "httpd"
  75. case bytes.HasSuffix(cmd, []byte("influxd")):
  76. return "influxdb"
  77. case bytes.Contains(cmdline, []byte("org.apache.catalina.startup.Bootstrap")):
  78. return "tomcat"
  79. case bytes.HasSuffix(cmd, []byte("vault")):
  80. return "vault"
  81. case bytes.HasSuffix(cmd, []byte("proxysql")):
  82. return "proxysql"
  83. case bytes.HasSuffix(cmd, []byte("cockroach")):
  84. return "cockroach"
  85. case bytes.HasSuffix(cmd, []byte("prometheus")):
  86. return "prometheus"
  87. case bytes.HasSuffix(cmd, []byte("ceph-mon")) ||
  88. bytes.HasSuffix(cmd, []byte("ceph-mgr")) ||
  89. bytes.HasSuffix(cmd, []byte("ceph-osd")) ||
  90. bytes.HasSuffix(cmd, []byte("cephcsi")):
  91. return "ceph"
  92. case bytes.HasSuffix(cmd, []byte("rook")):
  93. return "rook"
  94. case bytes.HasSuffix(cmd, []byte("nats-server")):
  95. return "nats"
  96. case bytes.HasSuffix(cmd, []byte("java")):
  97. return "java"
  98. case phpCmd.Match(cmd):
  99. return "php"
  100. case pythonCmd.Match(cmd):
  101. return "python"
  102. case nodejsCmd.Match(cmd):
  103. return "nodejs"
  104. }
  105. return ""
  106. }