All Projects → gravitational → Satellite

gravitational / Satellite

Licence: apache-2.0
Simple and extensible monitoring agent / library for Kubernetes: https://gravitational.com/blog/monitoring_kubernetes_satellite/

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Satellite

Ward
Server dashboard
Stars: ✭ 1,026 (+460.66%)
Mutual labels:  monitoring, monitoring-tool
Snowflake
Graphical SFTP client and terminal emulator with helpful utilities
Stars: ✭ 1,676 (+815.85%)
Mutual labels:  monitoring, monitoring-tool
Procmon Parser
Parser to process monitor file formats
Stars: ✭ 49 (-73.22%)
Mutual labels:  monitoring, monitoring-tool
Spidermon
Scrapy Extension for monitoring spiders execution.
Stars: ✭ 309 (+68.85%)
Mutual labels:  monitoring, monitoring-tool
Efc2 Agent
efc2 agent
Stars: ✭ 136 (-25.68%)
Mutual labels:  monitoring, monitoring-tool
Monitoror
Unified monitoring wallboard — Light, ergonomic and reliable monitoring for anything.
Stars: ✭ 3,400 (+1757.92%)
Mutual labels:  monitoring, monitoring-tool
Callmon
CallMon is an experimental system call monitoring tool that works on Windows 10 versions 2004+ using PsAltSystemCallHandlers
Stars: ✭ 83 (-54.64%)
Mutual labels:  monitoring, monitoring-tool
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+1146.45%)
Mutual labels:  monitoring, monitoring-tool
Ws Monitoring
A simple & lightweight realtime monitoring web UI + server in Node.js
Stars: ✭ 130 (-28.96%)
Mutual labels:  monitoring, monitoring-tool
Nload
Real-time network traffic monitor
Stars: ✭ 121 (-33.88%)
Mutual labels:  monitoring, monitoring-tool
Hastic Server
Hastic data management server for analyzing patterns and anomalies from Grafana
Stars: ✭ 292 (+59.56%)
Mutual labels:  monitoring, monitoring-tool
Webfunny monitor
webfunny是一款轻量级的前端监控系统,webfunny也是一款前端性能监控系统,无埋点监控前端日志,实时分析前端健康状态。webfunny is a lightweight front-end monitoring system and webfunny is also a front-end performance monitoring system. It monitors front-end logs and analyzes front-end health status in real time.
Stars: ✭ 3,470 (+1796.17%)
Mutual labels:  monitoring, monitoring-tool
Static status
🚦Bash script to generate a static status page.
Stars: ✭ 286 (+56.28%)
Mutual labels:  monitoring, monitoring-tool
Chronos
📊 📊 📊 Monitors the health and web traffic of servers, microservices, and containers with real-time data monitoring and receive automated notifications over Slack or email.
Stars: ✭ 347 (+89.62%)
Mutual labels:  monitoring, monitoring-tool
Electriceye
Continuously monitor your AWS services for configurations that can lead to degradation of confidentiality, integrity or availability. All results will be sent to Security Hub for further aggregation and analysis.
Stars: ✭ 255 (+39.34%)
Mutual labels:  monitoring, monitoring-tool
Laravel Api Health
Monitor first and third-party services and get notified when something goes wrong!
Stars: ✭ 65 (-64.48%)
Mutual labels:  monitoring, monitoring-tool
Openitcockpit
openITCOCKPIT is an Open Source system monitoring tool built for different monitoring engines like Nagios, Naemon and Prometheus.
Stars: ✭ 108 (-40.98%)
Mutual labels:  monitoring, monitoring-tool
Legend
Legend builds and publishes Grafana dashboards for your services with prefilled metrics and alerts for your services.
Stars: ✭ 149 (-18.58%)
Mutual labels:  monitoring, monitoring-tool
Scouter Paper
scouter-paper is a web client software for scouter
Stars: ✭ 183 (+0%)
Mutual labels:  monitoring, monitoring-tool
Alertmanager2es
Receives HTTP webhook notifications from AlertManager and inserts them into an Elasticsearch index for searching and analysis
Stars: ✭ 173 (-5.46%)
Mutual labels:  monitoring

Satellite

Satellite is an agent collecting health information in a Kubernetes cluster. It is both a library and an application. As a library, satellite can be used as a basis for a custom monitoring solution.

Installation

Satellite is included in Gravity. There are currently no binary distributions available.

How to use it

$ satellite help
usage: satellite [<flags>] <command> [<args> ...]

Cluster health monitoring agent

Flags:
  --help   Show help (also see --help-long and --help-man).
  --debug  Enable verbose mode

Commands:
  help [<command>...]
    Show help.

  agent [<flags>]
    Start monitoring agent

  status [<flags>]
    Query cluster status

  version
    Display version


$ satellite agent help
usage: satellite agent [<flags>]

Start monitoring agent

Flags:
  --help                         Show context-sensitive help (also try --help-long and --help-man).
  --debug                        Enable verbose mode
  --rpc-addr=127.0.0.1:7575      List of addresses to bind the RPC listener to (host:port), comma-separated
  --kube-addr="http://127.0.0.1:8080"
                                 Address of the kubernetes API server
  --kubelet-addr="http://127.0.0.1:10248"
                                 Address of the kubelet
  --docker-addr="/var/run/docker.sock"
                                 Path to the docker daemon socket
  --nettest-image="gcr.io/google_containers/nettest:1.8"
                                 Name of the image to use for networking test
  --name=NAME                    Agent name. Must be the same as the name of the local serf node
  --serf-rpc-addr="127.0.0.1:7373"
                                 RPC address of the local serf node
  --initial-cluster=INITIAL-CLUSTER
                                 Initial cluster configuration as a comma-separated list of peers
  --state-dir=STATE-DIR          Directory to store agent-specific state
  --tags=TAGS                    Define a tags as comma-separated list of key:value pairs
  --etcd-servers=http://127.0.0.1:2379
                                 List of etcd endpoints (http://host:port), comma separated
  --etcd-cafile=ETCD-CAFILE      SSL Certificate Authority file used to secure etcd communication
  --etcd-certfile=ETCD-CERTFILE  SSL certificate file used to secure etcd communication
  --etcd-keyfile=ETCD-KEYFILE    SSL key file used to secure etcd communication
  --influxdb-database=INFLUXDB-DATABASE
                                 Database to connect to
  --influxdb-user=INFLUXDB-USER  Username to use for connection
  --influxdb-password=INFLUXDB-PASSWORD
                                 Password to use for connection
  --influxdb-url=INFLUXDB-URL    URL of the InfluxDB endpoint

$ satellite agent --name=my-host --tags=role:master

$ satellite help status
usage: satellite status [<flags>]

Query cluster status

Flags:
  --help           Show context-sensitive help (also try --help-long and --help-man).
  --debug          Enable verbose mode
  --rpc-port=7575  Local agent RPC port
  --pretty         Pretty-print the output
  --local          Query the status of the local node

You can then query the status of the cluster or that of the local node by issuing a status query:

$ satellite status --pretty

resulting in:

{
   "status": "degraded",
   "nodes": [
      {
         "name": "example.domain",
         "member_status": {
            "name": "example.domain",
            "addr": "192.168.178.32:7946",
            "status": "alive",
            "tags": {
               "role": "node"
            }
         },
         "status": "degraded",
         "probes": [
            {
               "checker": "docker",
               "status": "running"
            },
            ...
         ]
      }
   ],
   "timestamp": "2016-03-03T12:19:44.757110373Z",
   "summary": "master node unavailable"
}

Out of the box, the agent requires at least a single master node (agent with role:master). The test will mark the cluster as degraded if no master is available.

Connect the agent to InfluxDB database monitoring:

$ satellite agent --tags=role:master \
	--state-dir=/var/run/satellite \
	--influxdb-database=monitoring \
	--influxdb-url=http://localhost:8086

Developing & Contributing

We follow a Code of Conduct. We also have contributing guidelines with information about filing bugs and submitting patches.

Building from source

  1. Install Go 1.13+
  2. Clone the repo: git clone https://github.com/gravitational/satellite.git
  3. Enter the repo and run make

Design

Satellites design goals are:

  • lightweight periodic testing
  • high availability and resilience to network partitions
  • no single point of failure
  • history of health data as a time series

The agents communicate over a gossip protocol implemented by serf.

The health status information is collected in the form of a time series and persisted to a sqlite backend. Additional backends are supported via an interface.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].