app.go 3.3 KB

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