diff --git a/docs/collectors/proxvmservices.md b/docs/collectors/proxvmservices.md index 41a07ad..35c821a 100644 --- a/docs/collectors/proxvmservices.md +++ b/docs/collectors/proxvmservices.md @@ -55,15 +55,17 @@ ### etcd 1. **Процессы**: проверка `etcd` -2. **Порты**: 2379 (client), 2380 (peer) -3. **Версия**: через `etcdctl version` -4. **Конфигурация**: парсинг файлов `/etc/etcd/etcd.conf`, systemd unit -5. **Кластер**: команды `etcdctl member list`, `etcdctl endpoint status`, `etcdctl endpoint health` +2. **Docker**: проверка контейнеров `etcd`, образов `etcd` +3. **Порты**: 2379 (client), 2380 (peer) +4. **Версия**: через `etcdctl version` +5. **Конфигурация**: парсинг файлов `/etc/etcd/etcd.conf`, systemd unit +6. **Кластер**: команды `etcdctl member list`, `etcdctl endpoint status`, `etcdctl endpoint health` ### Kubernetes 1. **Процессы**: проверка `kubelet`, `kube-apiserver` -2. **Порты**: 6443 (API server), 10250 (kubelet) -3. **Версия**: через `kubectl version --client --short` +2. **Docker**: проверка контейнеров `kubelet`, образов `k8s.gcr.io/kubelet` +3. **Порты**: 6443 (API server), 10250 (kubelet) +4. **Версия**: через `kubectl version --client --short` ### ClickHouse 1. **Процессы**: проверка `clickhouse-server` @@ -88,9 +90,10 @@ ### Kafka 1. **Процессы**: проверка `kafka.Kafka` -2. **Порты**: 9092 (broker) -3. **Версия**: через конфигурационные файлы -4. **Кластер**: команда `kafka-topics --bootstrap-server localhost:9092 --list` +2. **Docker**: проверка контейнеров `kafka`, образов `confluentinc/cp-kafka` +3. **Порты**: 9092 (broker) +4. **Версия**: через конфигурационные файлы +5. **Кластер**: команда `kafka-topics --bootstrap-server localhost:9092 --list` ### MongoDB 1. **Процессы**: проверка `mongod` @@ -103,9 +106,10 @@ #### DragonflyDB 1. **Процессы**: проверка `dragonfly` -2. **Порты**: 6379 (client), 6380 (admin) -3. **Версия**: через `dragonfly --version` -4. **Кластер**: команда `dragonfly cluster nodes` +2. **Docker**: проверка контейнеров `dragonfly`, образов `docker.dragonflydb.io/dragonflydb/dragonfly` +3. **Порты**: 6379 (client), 6380 (admin) +4. **Версия**: через `dragonfly --version` +5. **Кластер**: команда `dragonfly cluster nodes` #### Elasticsearch 1. **Процессы**: проверка `elasticsearch`, `java.*elasticsearch` @@ -116,27 +120,31 @@ #### Greenplum 1. **Процессы**: проверка `postgres.*greenplum`, `gpdb` -2. **Порты**: 5432 (PostgreSQL), 28080 (GPAdmin) -3. **Версия**: через `psql --version` -4. **Кластер**: команда `gpstate -s` +2. **Docker**: проверка контейнеров `greenplum`, образов `greenplum/greenplum` +3. **Порты**: 5432 (PostgreSQL), 28080 (GPAdmin) +4. **Версия**: через `psql --version` +5. **Кластер**: команда `gpstate -s` #### MinIO 1. **Процессы**: проверка `minio` -2. **Порты**: 9000 (API), 9001 (Console) -3. **Версия**: через `minio --version` -4. **Кластер**: команда `mc admin info local` +2. **Docker**: проверка контейнеров `minio`, образов `minio/minio` +3. **Порты**: 9000 (API), 9001 (Console) +4. **Версия**: через `minio --version` +5. **Кластер**: команда `mc admin info local` #### Redpanda 1. **Процессы**: проверка `redpanda` -2. **Порты**: 9092 (Kafka API), 9644 (Admin API) -3. **Версия**: через `rpk version` -4. **Кластер**: команда `rpk cluster info` +2. **Docker**: проверка контейнеров `redpanda`, образов `redpandadata/redpanda` +3. **Порты**: 9092 (Kafka API), 9644 (Admin API) +4. **Версия**: через `rpk version` +5. **Кластер**: команда `rpk cluster info` #### NATS 1. **Процессы**: проверка `nats-server` -2. **Порты**: 4222 (client), 8222 (monitoring) -3. **Версия**: через `nats-server --version` -4. **Кластер**: команда `nats server list` +2. **Docker**: проверка контейнеров `nats`, образов `nats` +3. **Порты**: 4222 (client), 8222 (monitoring) +4. **Версия**: через `nats-server --version` +5. **Кластер**: команда `nats server list` #### Zookeeper 1. **Процессы**: проверка `zookeeper`, `java.*zookeeper` @@ -148,8 +156,9 @@ #### BIND9 1. **Процессы**: проверка `named`, `bind9` -2. **Порты**: 53 (DNS), 953 (control) -3. **Версия**: через `named -v` +2. **Docker**: проверка контейнеров `bind9`, образов `internetwache/bind9` +3. **Порты**: 53 (DNS), 953 (control) +4. **Версия**: через `named -v` #### Grafana 1. **Процессы**: проверка `grafana-server`, `grafana` @@ -165,48 +174,57 @@ #### Loki 1. **Процессы**: проверка `loki` -2. **Порты**: 3100 (HTTP) -3. **Версия**: через `loki --version` +2. **Docker**: проверка контейнеров `loki`, образов `grafana/loki` +3. **Порты**: 3100 (HTTP) +4. **Версия**: через `loki --version` #### Harbor 1. **Процессы**: проверка `harbor`, `nginx.*harbor` -2. **Порты**: 80 (HTTP), 443 (HTTPS), 8080 (API) -3. **Версия**: через HTTP API `/api/v2.0/systeminfo` +2. **Docker**: проверка контейнеров `harbor`, образов `goharbor/harbor-core` +3. **Порты**: 80 (HTTP), 443 (HTTPS), 8080 (API) +4. **Версия**: через HTTP API `/api/v2.0/systeminfo` #### Jenkins 1. **Процессы**: проверка `jenkins`, `java.*jenkins` -2. **Порты**: 8080 (HTTP), 50000 (agent) -3. **Версия**: через HTTP API `/api/json` +2. **Docker**: проверка контейнеров `jenkins`, образов `jenkins/jenkins` +3. **Порты**: 8080 (HTTP), 50000 (agent) +4. **Версия**: через HTTP API `/api/json` #### Keycloak 1. **Процессы**: проверка `keycloak`, `java.*keycloak` -2. **Порты**: 8080 (HTTP), 8443 (HTTPS) -3. **Версия**: через HTTP API `/auth/admin/info` или `/admin/info` +2. **Docker**: проверка контейнеров `keycloak`, образов `quay.io/keycloak/keycloak` +3. **Порты**: 8080 (HTTP), 8443 (HTTPS) +4. **Версия**: через HTTP API `/auth/admin/info` или `/admin/info` #### Neo4j 1. **Процессы**: проверка `neo4j`, `java.*neo4j` -2. **Порты**: 7474 (HTTP), 7687 (Bolt) -3. **Версия**: через HTTP API `/db/data/` +2. **Docker**: проверка контейнеров `neo4j`, образов `neo4j/neo4j` +3. **Порты**: 7474 (HTTP), 7687 (Bolt) +4. **Версия**: через HTTP API `/db/data/` #### Sentry 1. **Процессы**: проверка `sentry`, `python.*sentry` -2. **Порты**: 9000 (HTTP), 9001 (WebSocket) -3. **Версия**: через HTTP API `/api/0/` +2. **Docker**: проверка контейнеров `sentry`, образов `sentry` +3. **Порты**: 9000 (HTTP), 9001 (WebSocket) +4. **Версия**: через HTTP API `/api/0/` #### Apache Superset 1. **Процессы**: проверка `superset`, `python.*superset` -2. **Порты**: 8088 (HTTP) -3. **Версия**: через HTTP API `/api/v1/version` +2. **Docker**: проверка контейнеров `superset`, образов `apache/superset` +3. **Порты**: 8088 (HTTP) +4. **Версия**: через HTTP API `/api/v1/version` #### InfluxDB 1. **Процессы**: проверка `influxd` -2. **Порты**: 8086 (HTTP) -3. **Версия**: через `influxd version` +2. **Docker**: проверка контейнеров `influxdb`, образов `influxdb` +3. **Порты**: 8086 (HTTP) +4. **Версия**: через `influxd version` #### VictoriaMetrics 1. **Процессы**: проверка `victoria-metrics`, `vmagent` -2. **Порты**: 8428 (HTTP), 8429 (HTTPS) -3. **Версия**: через `victoria-metrics --version` +2. **Docker**: проверка контейнеров `victoria-metrics`, образов `victoriametrics/victoria-metrics` +3. **Порты**: 8428 (HTTP), 8429 (HTTPS) +4. **Версия**: через `victoria-metrics --version` ### Остальные сервисы - Все остальные сервисы перечислены выше в соответствующих разделах @@ -397,6 +415,10 @@ psql -t -c "SELECT client_addr, state FROM pg_stat_replication;" # Проверка процессов pgrep -f etcd +# Проверка Docker-контейнеров +docker ps --filter "name=etcd" +docker ps --filter "ancestor=etcd" + # Проверка портов ss -tln sport = :2379 ss -tln sport = :2380 @@ -412,6 +434,10 @@ etcdctl endpoint health # Проверка процессов pgrep -f clickhouse-server +# Проверка Docker-контейнеров +docker ps --filter "name=clickhouse" +docker ps --filter "ancestor=clickhouse/clickhouse-server" + # Проверка портов ss -tln sport = :8123 ss -tln sport = :9000 @@ -443,6 +469,10 @@ redis-cli cluster info # Проверка процессов pgrep -f rabbitmq-server +# Проверка Docker-контейнеров +docker ps --filter "name=rabbitmq" +docker ps --filter "ancestor=rabbitmq" + # Проверка портов ss -tln sport = :5672 ss -tln sport = :15672 @@ -457,6 +487,10 @@ rabbitmqctl list_nodes # Проверка процессов pgrep -f kafka.Kafka +# Проверка Docker-контейнеров +docker ps --filter "name=kafka" +docker ps --filter "ancestor=confluentinc/cp-kafka" + # Проверка портов ss -tln sport = :9092 @@ -470,6 +504,10 @@ kafka-broker-api-versions --bootstrap-server localhost:9092 # Проверка процессов pgrep -f mongod +# Проверка Docker-контейнеров +docker ps --filter "name=mongo" +docker ps --filter "ancestor=mongo" + # Проверка портов ss -tln sport = :27017 diff --git a/src/collectors/proxvmservices/proxvmservices_linux.go b/src/collectors/proxvmservices/proxvmservices_linux.go index 13c8415..6c01afa 100644 --- a/src/collectors/proxvmservices/proxvmservices_linux.go +++ b/src/collectors/proxvmservices/proxvmservices_linux.go @@ -934,8 +934,9 @@ func getMongoDBClusterNodes() []string { // detectEtcd обнаруживает etcd func detectEtcd() *ServiceInfo { - // Проверяем процессы - if !isProcessRunning("etcd") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("etcd") && + !isDockerContainerRunning("etcd") && !isDockerImageRunning("etcd") { return nil } @@ -1220,7 +1221,9 @@ func detectRabbitMQ() *ServiceInfo { } func detectKafka() *ServiceInfo { - if !isProcessRunning("kafka.Kafka") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("kafka.Kafka") && + !isDockerContainerRunning("kafka") && !isDockerImageRunning("confluentinc/cp-kafka") { return nil } @@ -1283,7 +1286,9 @@ func detectMongoDB() *ServiceInfo { } func detectKubernetes() *ServiceInfo { - if !isProcessRunning("kubelet") && !isProcessRunning("kube-apiserver") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("kubelet") && !isProcessRunning("kube-apiserver") && + !isDockerContainerRunning("kubelet") && !isDockerImageRunning("k8s.gcr.io/kubelet") { return nil } @@ -1315,7 +1320,9 @@ func detectKubernetes() *ServiceInfo { // detectBind9 обнаруживает BIND9 DNS сервер func detectBind9() *ServiceInfo { - if !isProcessRunning("named") && !isProcessRunning("bind9") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("named") && !isProcessRunning("bind9") && + !isDockerContainerRunning("bind9") && !isDockerImageRunning("internetwache/bind9") { return nil } @@ -1344,7 +1351,9 @@ func detectBind9() *ServiceInfo { // detectDragonflyDB обнаруживает DragonflyDB func detectDragonflyDB() *ServiceInfo { - if !isProcessRunning("dragonfly") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("dragonfly") && + !isDockerContainerRunning("dragonfly") && !isDockerImageRunning("docker.dragonflydb.io/dragonflydb/dragonfly") { return nil } @@ -1481,7 +1490,9 @@ func detectPrometheus() *ServiceInfo { // detectLoki обнаруживает Loki func detectLoki() *ServiceInfo { - if !isProcessRunning("loki") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("loki") && + !isDockerContainerRunning("loki") && !isDockerImageRunning("grafana/loki") { return nil } @@ -1510,7 +1521,9 @@ func detectLoki() *ServiceInfo { // detectGreenplum обнаруживает Greenplum func detectGreenplum() *ServiceInfo { - if !isProcessRunning("postgres.*greenplum") && !isProcessRunning("gpdb") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("postgres.*greenplum") && !isProcessRunning("gpdb") && + !isDockerContainerRunning("greenplum") && !isDockerImageRunning("greenplum/greenplum") { return nil } @@ -1546,7 +1559,9 @@ func detectGreenplum() *ServiceInfo { // detectHarbor обнаруживает Harbor func detectHarbor() *ServiceInfo { - if !isProcessRunning("harbor") && !isProcessRunning("nginx.*harbor") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("harbor") && !isProcessRunning("nginx.*harbor") && + !isDockerContainerRunning("harbor") && !isDockerImageRunning("goharbor/harbor-core") { return nil } @@ -1576,7 +1591,9 @@ func detectHarbor() *ServiceInfo { // detectJenkins обнаруживает Jenkins func detectJenkins() *ServiceInfo { - if !isProcessRunning("jenkins") && !isProcessRunning("java.*jenkins") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("jenkins") && !isProcessRunning("java.*jenkins") && + !isDockerContainerRunning("jenkins") && !isDockerImageRunning("jenkins/jenkins") { return nil } @@ -1606,7 +1623,9 @@ func detectJenkins() *ServiceInfo { // detectKeycloak обнаруживает Keycloak func detectKeycloak() *ServiceInfo { - if !isProcessRunning("keycloak") && !isProcessRunning("java.*keycloak") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("keycloak") && !isProcessRunning("java.*keycloak") && + !isDockerContainerRunning("keycloak") && !isDockerImageRunning("quay.io/keycloak/keycloak") { return nil } @@ -1640,7 +1659,9 @@ func detectKeycloak() *ServiceInfo { // detectMinio обнаруживает MinIO func detectMinio() *ServiceInfo { - if !isProcessRunning("minio") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("minio") && + !isDockerContainerRunning("minio") && !isDockerImageRunning("minio/minio") { return nil } @@ -1676,7 +1697,9 @@ func detectMinio() *ServiceInfo { // detectNeo4j обнаруживает Neo4j func detectNeo4j() *ServiceInfo { - if !isProcessRunning("neo4j") && !isProcessRunning("java.*neo4j") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("neo4j") && !isProcessRunning("java.*neo4j") && + !isDockerContainerRunning("neo4j") && !isDockerImageRunning("neo4j/neo4j") { return nil } @@ -1706,7 +1729,9 @@ func detectNeo4j() *ServiceInfo { // detectRedpanda обнаруживает Redpanda func detectRedpanda() *ServiceInfo { - if !isProcessRunning("redpanda") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("redpanda") && + !isDockerContainerRunning("redpanda") && !isDockerImageRunning("redpandadata/redpanda") { return nil } @@ -1742,7 +1767,9 @@ func detectRedpanda() *ServiceInfo { // detectSentry обнаруживает Sentry func detectSentry() *ServiceInfo { - if !isProcessRunning("sentry") && !isProcessRunning("python.*sentry") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("sentry") && !isProcessRunning("python.*sentry") && + !isDockerContainerRunning("sentry") && !isDockerImageRunning("sentry") { return nil } @@ -1772,7 +1799,9 @@ func detectSentry() *ServiceInfo { // detectSuperset обнаруживает Apache Superset func detectSuperset() *ServiceInfo { - if !isProcessRunning("superset") && !isProcessRunning("python.*superset") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("superset") && !isProcessRunning("python.*superset") && + !isDockerContainerRunning("superset") && !isDockerImageRunning("apache/superset") { return nil } @@ -1802,7 +1831,9 @@ func detectSuperset() *ServiceInfo { // detectNats обнаруживает NATS func detectNats() *ServiceInfo { - if !isProcessRunning("nats-server") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("nats-server") && + !isDockerContainerRunning("nats") && !isDockerImageRunning("nats") { return nil } @@ -1838,7 +1869,9 @@ func detectNats() *ServiceInfo { // detectInfluxDB обнаруживает InfluxDB func detectInfluxDB() *ServiceInfo { - if !isProcessRunning("influxd") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("influxd") && + !isDockerContainerRunning("influxdb") && !isDockerImageRunning("influxdb") { return nil } @@ -1867,7 +1900,9 @@ func detectInfluxDB() *ServiceInfo { // detectVictoriaMetrics обнаруживает VictoriaMetrics func detectVictoriaMetrics() *ServiceInfo { - if !isProcessRunning("victoria-metrics") && !isProcessRunning("vmagent") { + // Проверяем процессы и Docker-контейнеры + if !isProcessRunning("victoria-metrics") && !isProcessRunning("vmagent") && + !isDockerContainerRunning("victoria-metrics") && !isDockerImageRunning("victoriametrics/victoria-metrics") { return nil }