sensu / sensu-go Goto Github PK
View Code? Open in Web Editor NEWSimple. Scalable. Multi-cloud monitoring.
Home Page: https://sensu.io
License: MIT License
Simple. Scalable. Multi-cloud monitoring.
Home Page: https://sensu.io
License: MIT License
The Sensu agent needs to accept Sensu events and telemetry data.
Initial ideas include:
depends on:
This issue serves the purpose of collecting/creating a list of our favourite UI technologies.
To add to the list, please comment on this issue.
We are fast approaching the time we MUST introduce some level of authentication and authorization (RBAC). RBAC applies to agent -> backend connections and every Sensu API query (e.g. CLI or dashboard).
We need to look at how others have implemented such capabilities, i.e. Hosted Chef platform.
Chef uses node environment and API resources as the basis for RBAC, we could do something similar with the addition of agent/check subscriptions. This would allow a Sensu backend cluster to be shared by several groups within an organization, allowing certain agents and users access to one or more environments and API resources.
Using log.println all over the place is pretty crumby. Also, etcd has its own logger. We should standardize on structured logging and get everything logging in the same way.
The current MessageBus interface should be replaced as such:
// MessageBus is the interface to the internal messaging system. It must be
// safe to be used by multiple goroutines.
type MessageBus interface {
daemon.Daemon
// Subscribe allows a consumer to subscribe to a topic,
// binding a read-only channel to the topic. Topic messages
// are delivered to the channel as simple byte arrays. Consumers should
// use type assertions to convert the incoming messages to a pointer to an
// appropriate value.
Subscribe(topic string, consumer string, channel chan<- interface{}) error
// Unsubscribe allows a consumer to unsubscribe from a topic,
// removing its read-only channel from the topic's bindings.
// The channel is not closed, as it may still having other
// topic bindings.
Unsubscribe(topic string, consumer string) error
// Publish sends a message to a topic. Publishers should be sure to pass by
// reference as this is intended to be used by multiple goroutines.
Publish(topic string, message interface{}) error
}```
sensu-backend
CLI/ENV argument/variable for peers.
The Sensu Go agent and backend services will support configuration via several means, by command arguments, environment variables, and a SINGLE configuration file. We have yet to declare what the configuration file format is.
Some possible formats:
Me must keep in mind "custom" nested configuration options (attributes).
One we settle on a configuration file format, the Sensu Go services must be updated to support it (if necessary).
The Sensu CLI needs to "modes" of operation:
Raw examples (ideas):
$sensu-cli ACTION THING
$sensu-cli create check -n foobar -i 60 -s webserver,api -c 'check-http.rb -u https://localhost/health'
$sensu-cli create check
What is the name of the check?
foobar
...
$cat some.json | sensu-cli import
The CLI tool will eventually need to handle authentication and authorization. For now we can no-op.
The Sensu agent needs to discover some facts about its system and publish them in keepalives (tags).
Facts to send:
Could use a library like:
This work will lay the foundations for the traditional Sensu pipeline configuration.
See #40 for example implementation.
We may need to refactor http_api.go
, splitting up/out the endpoints.
I want us to move to an Interface + Mock methodology for unit testing. So instead of having an in-memory fixture store that's incapable of easily simulating all interactions with a Store (i.e. simulating error cases is brittle and/or non-trivial), I'd like us to move back to the mock store that was there before + testify.mock behavior simulation in faked methods per test. (We can develop some reusable faked methods if this ends up being super copypasta).
The key being that the mock should simulate behavio
This issue serves the purpose of collecting/creating a list of our favourite user interfaces.
To add to the list, please comment on this issue.
Right now we have several backend processes, and they all sort of conform to the same interface that looks a little like:
type Daemon interface {
Start() error
Stop() error
Err() <-chan error
Status() bool
}
Make things actually adhere to this interface.
We currently do not actually run a command beyond sh -c ''
- https://github.com/sensu/sensu-go/blob/master/agent/check_handler.go#L28
Implement a Sensu logger package, e.g. logger/logger.go
.
The logger package is a proxy/gate for Logrus (https://github.com/sirupsen/logrus).
backend/checker.go
-> backend/schedulerd/schedulerd.go
pipelined and apid can be used for reference.
Expose cli arguments and ENV variables.
backend.go is getting out of control.
The Sensu Type Validate()
functions need to be improved, for example, they should use regular expressions to validate certain field string values (e.g. name).
The current Sensu Settings validators can be used as a reference. Sensu Go doesn't currently implement many features of Ruby Sensu and therefor doesn't have certain fields, they can be left out for the time being.
Sensu Settings check validator: https://github.com/sensu/sensu-settings/blob/master/lib/sensu/settings/validators/check.rb#L179
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.