statping: github.com/hunterlong/statping/types/services Index | Files

package services

import "github.com/hunterlong/statping/types/services"

Index

Package Files

checkins.go database.go failures.go hits.go methods.go notifier.go routine.go samples.go struct.go yaml.go

func AddNotifier Uses

func AddNotifier(n ServiceNotifier)

func All Uses

func All() map[int64]*Service

func AllNotifiers Uses

func AllNotifiers() map[string]ServiceNotifier

func CheckServices Uses

func CheckServices()

checkServices will start the checking go routine for each service

func CheckinProcess Uses

func CheckinProcess(s *Service)

CheckinProcess runs the checkin routine for each checkin attached to service

func FindNotifier Uses

func FindNotifier(method string) *notifications.Notification

func LoadServicesYaml Uses

func LoadServicesYaml() (*yamlFile, error)

LoadServicesYaml will attempt to load the 'services.yml' file for Service Auto Creation on startup.

func Samples Uses

func Samples() error

func SelectAllServices Uses

func SelectAllServices(start bool) (map[int64]*Service, error)

SelectAllServices returns a slice of *core.Service to be store on []*core.Services should only be called once on startup.

func ServiceCheckQueue Uses

func ServiceCheckQueue(s *Service, record bool)

CheckQueue is the main go routine for checking a service

func Services Uses

func Services() map[int64]*Service

func SetDB Uses

func SetDB(database database.Database)

type ByTime Uses

type ByTime []ser

func (ByTime) Len Uses

func (a ByTime) Len() int

func (ByTime) Less Uses

func (a ByTime) Less(i, j int) bool

func (ByTime) Swap Uses

func (a ByTime) Swap(i, j int)

type Service Uses

type Service struct {
    Id                  int64           `gorm:"primary_key;column:id" json:"id" yaml:"id"`
    Name                string          `gorm:"column:name" json:"name" yaml:"name"`
    Domain              string          `gorm:"column:domain" json:"domain" yaml:"domain" private:"true" scope:"user,admin"`
    Expected            null.NullString `gorm:"column:expected" json:"expected" yaml:"expected" scope:"user,admin"`
    ExpectedStatus      int             `gorm:"default:200;column:expected_status" json:"expected_status" yaml:"expected_status" scope:"user,admin"`
    Interval            int             `gorm:"default:30;column:check_interval" json:"check_interval" yaml:"check_interval"`
    Type                string          `gorm:"column:check_type" json:"type" scope:"user,admin" yaml:"type"`
    Method              string          `gorm:"column:method" json:"method" scope:"user,admin" yaml:"method"`
    PostData            null.NullString `gorm:"column:post_data" json:"post_data" scope:"user,admin" yaml:"post_data"`
    Port                int             `gorm:"not null;column:port" json:"port" scope:"user,admin" yaml:"port"`
    Timeout             int             `gorm:"default:30;column:timeout" json:"timeout" scope:"user,admin" yaml:"timeout"`
    Order               int             `gorm:"default:0;column:order_id" json:"order_id" yaml:"order_id"`
    VerifySSL           null.NullBool   `gorm:"default:false;column:verify_ssl" json:"verify_ssl" scope:"user,admin" yaml:"verify_ssl"`
    Public              null.NullBool   `gorm:"default:true;column:public" json:"public" yaml:"public"`
    GroupId             int             `gorm:"default:0;column:group_id" json:"group_id" yaml:"group_id"`
    TLSCert             null.NullString `gorm:"column:tls_cert" json:"tls_cert" scope:"user,admin" yaml:"tls_cert"`
    TLSCertKey          null.NullString `gorm:"column:tls_cert_key" json:"tls_cert_key" scope:"user,admin" yaml:"tls_cert_key"`
    TLSCertRoot         null.NullString `gorm:"column:tls_cert_root" json:"tls_cert_root" scope:"user,admin" yaml:"tls_cert_root"`
    Headers             null.NullString `gorm:"column:headers" json:"headers" scope:"user,admin" yaml:"headers"`
    Permalink           null.NullString `gorm:"column:permalink;unique;" json:"permalink" yaml:"permalink"`
    Redirect            null.NullBool   `gorm:"default:false;column:redirect" json:"redirect" scope:"user,admin" yaml:"redirect"`
    CreatedAt           time.Time       `gorm:"column:created_at" json:"created_at" yaml:"-"`
    UpdatedAt           time.Time       `gorm:"column:updated_at" json:"updated_at" yaml:"-"`
    Online              bool            `gorm:"-" json:"online" yaml:"-"`
    Latency             int64           `gorm:"-" json:"latency" yaml:"-"`
    PingTime            int64           `gorm:"-" json:"ping_time" yaml:"-"`
    Online24Hours       float32         `gorm:"-" json:"online_24_hours" yaml:"-"`
    Online7Days         float32         `gorm:"-" json:"online_7_days" yaml:"-"`
    AvgResponse         int64           `gorm:"-" json:"avg_response" yaml:"-"`
    FailuresLast24Hours int             `gorm:"-" json:"failures_24_hours" yaml:"-"`
    Running             chan bool       `gorm:"-" json:"-" yaml:"-"`
    Checkpoint          time.Time       `gorm:"-" json:"-" yaml:"-"`
    SleepDuration       time.Duration   `gorm:"-" json:"-" yaml:"-"`
    LastResponse        string          `gorm:"-" json:"-" yaml:"-"`
    NotifyAfter         int64           `gorm:"column:notify_after" json:"notify_after" yaml:"notify_after" scope:"user,admin"`

    AllowNotifications null.NullBool       `gorm:"default:true;column:allow_notifications" json:"allow_notifications" yaml:"allow_notifications" scope:"user,admin"`
    UserNotified       bool                `gorm:"-" json:"-" yaml:"-"`                                                                                           // True if the User was already notified about a Downtime
    UpdateNotify       null.NullBool       `gorm:"default:true;column:notify_all_changes" json:"notify_all_changes" yaml:"notify_all_changes" scope:"user,admin"` // This Variable is a simple copy of `core.CoreApp.UpdateNotify.Bool`
    DownText           string              `gorm:"-" json:"-" yaml:"-"`                                                                                           // Contains the current generated Downtime Text
    SuccessNotified    bool                `gorm:"-" json:"-" yaml:"-"`                                                                                           // Is 'true' if the user has already be informed that the Services now again available
    LastStatusCode     int                 `gorm:"-" json:"status_code" yaml:"-"`
    Failures           []*failures.Failure `gorm:"-" json:"failures,omitempty" yaml:"-" scope:"user,admin"`
    AllCheckins        []*checkins.Checkin `gorm:"-" json:"checkins,omitempty" yaml:"-" scope:"user,admin"`
    LastLookupTime     int64               `gorm:"-" json:"-" yaml:"-"`
    LastLatency        int64               `gorm:"-" json:"-" yaml:"-"`
    LastCheck          time.Time           `gorm:"-" json:"-" yaml:"-"`
    LastOnline         time.Time           `gorm:"-" json:"last_success" yaml:"-"`
    LastOffline        time.Time           `gorm:"-" json:"last_error" yaml:"-"`
    Stats              *Stats              `gorm:"-" json:"stats,omitempty" yaml:"-"`

    SecondsOnline  int64 `gorm:"-" json:"-" yaml:"-"`
    SecondsOffline int64 `gorm:"-" json:"-" yaml:"-"`
    // contains filtered or unexported fields
}

Service is the main struct for Services

func AllInOrder Uses

func AllInOrder() []Service

func CheckGrpc Uses

func CheckGrpc(s *Service, record bool) (*Service, error)

CheckGrpc will check a gRPC service

func CheckHttp Uses

func CheckHttp(s *Service, record bool) (*Service, error)

checkHttp will check a HTTP service

func CheckIcmp Uses

func CheckIcmp(s *Service, record bool) (*Service, error)

checkIcmp will send a ICMP ping packet to the service

func CheckTcp Uses

func CheckTcp(s *Service, record bool) (*Service, error)

checkTcp will check a TCP service

func Find Uses

func Find(id int64) (*Service, error)

func (*Service) AfterCreate Uses

func (s *Service) AfterCreate() error

func (*Service) AllFailures Uses

func (s *Service) AllFailures() failures.Failurer

func (*Service) AllHits Uses

func (s *Service) AllHits() hits.Hitters

func (*Service) AvgTime Uses

func (s *Service) AvgTime() int64

AvgTime will return the average amount of time for a service to response back successfully

func (*Service) BeforeCreate Uses

func (s *Service) BeforeCreate() (err error)

BeforeCreate for Service will set CreatedAt to UTC

func (*Service) CheckService Uses

func (s *Service) CheckService(record bool)

Check will run checkHttp for HTTP services and checkTcp for TCP services if record param is set to true, it will add a record into the database.

func (*Service) Checkins Uses

func (s *Service) Checkins() []*checkins.Checkin

func (*Service) Close Uses

func (s *Service) Close()

Close will stop the go routine that is checking if service is online or not

func (*Service) Create Uses

func (s *Service) Create() error

func (*Service) Delete Uses

func (s *Service) Delete() error

func (*Service) DeleteCheckins Uses

func (s *Service) DeleteCheckins() error

func (*Service) DeleteFailures Uses

func (s *Service) DeleteFailures() error

func (*Service) DeleteHits Uses

func (s *Service) DeleteHits() error

func (*Service) Downtime Uses

func (s *Service) Downtime() time.Duration

Downtime returns the amount of time of a offline service

func (*Service) DowntimeAgo Uses

func (s *Service) DowntimeAgo() string

func (*Service) DowntimeText Uses

func (s *Service) DowntimeText() string

func (*Service) Duration Uses

func (s *Service) Duration() time.Duration

func (*Service) FailuresColumnID Uses

func (s *Service) FailuresColumnID() (string, int64)

func (*Service) FailuresSince Uses

func (s *Service) FailuresSince(t time.Time) failures.Failurer

func (*Service) FirstHit Uses

func (s *Service) FirstHit() *hits.Hit

func (Service) Hash Uses

func (s Service) Hash() string

func (*Service) HitsColumnID Uses

func (s *Service) HitsColumnID() (string, int64)

func (*Service) HitsSince Uses

func (s *Service) HitsSince(t time.Time) hits.Hitters

func (*Service) IsRunning Uses

func (s *Service) IsRunning() bool

IsRunning returns true if the service go routine is running

func (*Service) LastHit Uses

func (s *Service) LastHit() *hits.Hit

func (*Service) LoadTLSCert Uses

func (s *Service) LoadTLSCert() (*tls.Config, error)

func (*Service) OnlineDaysPercent Uses

func (s *Service) OnlineDaysPercent(days int) float32

OnlineDaysPercent returns the service's uptime percent within last 24 hours

func (*Service) OnlineSince Uses

func (s *Service) OnlineSince(ago time.Time) float32

OnlineSince accepts a time since parameter to return the percent of a service's uptime.

func (*Service) Start Uses

func (s *Service) Start()

Start will create a channel for the service checking go routine

func (*Service) Update Uses

func (s *Service) Update() error

func (*Service) UpdateStats Uses

func (s *Service) UpdateStats() *Service

func (*Service) UptimeData Uses

func (s *Service) UptimeData(hits []*hits.Hit, fails []*failures.Failure) (*UptimeSeries, error)

Start will create a channel for the service checking go routine

type ServiceNotifier Uses

type ServiceNotifier interface {
    OnSuccess(*Service) error                    // OnSuccess is triggered when a service is successful
    OnFailure(*Service, *failures.Failure) error // OnFailure is triggered when a service is failing
    OnTest() (string, error)                     // OnTest is triggered for testing
    Select() *notifications.Notification         // OnTest is triggered for testing
}

func ReturnNotifier Uses

func ReturnNotifier(method string) ServiceNotifier

type ServiceOrder Uses

type ServiceOrder []Service

ServiceOrder will reorder the services based on 'order_id' (Order)

func (ServiceOrder) Len Uses

func (c ServiceOrder) Len() int

Sort interface for resroting the Services in order

func (ServiceOrder) Less Uses

func (c ServiceOrder) Less(i, j int) bool

func (ServiceOrder) Swap Uses

func (c ServiceOrder) Swap(i, j int)

type Stats Uses

type Stats struct {
    Failures int       `gorm:"-" json:"failures"`
    Hits     int       `gorm:"-" json:"hits"`
    FirstHit time.Time `gorm:"-" json:"first_hit"`
}

type UptimeSeries Uses

type UptimeSeries struct {
    Start    time.Time `json:"start"`
    End      time.Time `json:"end"`
    Uptime   int64     `json:"uptime"`
    Downtime int64     `json:"downtime"`
    Series   []series  `json:"series"`
}

Package services imports 28 packages (graph). Updated 2020-05-28. Refresh now. Tools for package owners.