core

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2016 License: GPL-3.0 Imports: 7 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultJobQueueBufSize ジョブキューのデフォルトサイズ
	DefaultJobQueueBufSize = 50

	// DefaultSakuraAPIReqQueueBufSize さくらのクラウドAPIキューのデフォルトサイズ
	DefaultSakuraAPIReqQueueBufSize = 10

	// DefaultMackerelAPIReqQueueBufSize MackerelAPIキューのデフォルトサイズ
	DefaultMackerelAPIReqQueueBufSize = 10

	// DefaultThrottledAPIReqQueueBufSize スロットリング対象APIキューのデフォルトサイズ
	DefaultThrottledAPIReqQueueBufSize = 0

	// DefaultAPICallInterval スロットリングAPI待機時間デフォルト値
	DefaultAPICallInterval = 500 * time.Millisecond

	// DefaultTimerJobInterval タイマージョブのデフォルト起動間隔
	DefaultTimerJobInterval = 2 * time.Minute

	// DefaultReconcileJobInterval エージェントとの統合処理のデフォルト起動間隔
	DefaultReconcileJobInterval = 3 * time.Minute

	// DefaultMetricsHistoryPeriod メトリクス収集時の過去分取得範囲デフォルト値
	DefaultMetricsHistoryPeriod = 15 * time.Minute

	// DefaultHealthCheckWebServerPort ヘルスチェック用Webサーバーのデフォルトポート
	DefaultHealthCheckWebServerPort = 39700

	// DefaultIgnoreTag sackerelでの連携対象外を示すマーカータグ名称
	DefaultIgnoreTag = "@mackerel-ignore"

	// DefaultAgentTag mackerel-agentを手動インストール
	DefaultAgentTag = "@mackerel-agent"
)
View Source
var (
	// MackerelHostStatusStandby "standby"ホストステータス
	MackerelHostStatusStandby = MackerelHostStatus("standby")

	// MackerelHostStatusWorking "working"ホストステータス
	MackerelHostStatusWorking = MackerelHostStatus("working")

	// MackerelHostStatusMaintenance "maintenance"ホストステータス
	MackerelHostStatusMaintenance = MackerelHostStatus("maintenance")

	// MackerelHostStatusPowerOff "poweroff"ホストステータス
	MackerelHostStatusPowerOff = MackerelHostStatus("poweroff")
)
View Source
var SakuraCloudDefaultZones = []string{"is1b", "tk1a"}

SakuraCloudDefaultZones さくらのクラウド対象ゾーンのデフォルト値

Functions

This section is empty.

Types

type CollectMetricsPayload

type CollectMetricsPayload struct {
	*SourcePayload
	Metrics              *SacloudMetrics
	MackerelMetricsParam []*mkr.HostMetricValue
}

CollectMetricsPayload メトリクス収集用ジョブで利用するペイロード

func NewCollectMetricsPayload

func NewCollectMetricsPayload(sourcePayload *SourcePayload) *CollectMetricsPayload

NewCollectMetricsPayload CollectMetricsPayloadを新規作成する

type CreateHostPayload

type CreateHostPayload struct {
	// SourcePayload ソースとなるサーバー/ホスト情報
	*SourcePayload

	// MackerelHostParam mackerelへのサーバー登録用パラメータ
	MackerelHostParam *mkr.CreateHostParam
}

CreateHostPayload Mackerel上でのホスト作成/更新を伴うジョブで利用するペイロード

func NewCreateHostPayload

func NewCreateHostPayload(source interface{}, zone string, resourceID int64, sourceType reflect.Type) *CreateHostPayload

NewCreateHostPayload CreateHostPayloadの新規作成

func (*CreateHostPayload) GetFindParam

func (p *CreateHostPayload) GetFindParam() *mkr.FindHostsParam

GetFindParam Mackerelからのホスト検索用パラメータを取得する

func (*CreateHostPayload) IsRoleUpdated

func (p *CreateHostPayload) IsRoleUpdated() (bool, error)

IsRoleUpdated ロール情報の更新が行われているか判定

func (*CreateHostPayload) IsStatusUpdated

func (p *CreateHostPayload) IsStatusUpdated() (bool, error)

IsStatusUpdated ホストステータスの更新が行われているか判定

type Job

type Job struct {
	Name       string
	WorkerFunc WorkerFunc
	Payload    interface{}
}

Job ジョブキューでのジョブ定義

func NewJob

func NewJob(name string, workerFunc WorkerFunc, payload interface{}) *Job

NewJob Jobの新規作成

func (*Job) GetName

func (w *Job) GetName() string

GetName ジョブ名取得

func (*Job) GetPayload

func (w *Job) GetPayload() interface{}

GetPayload ペイロード取得

func (*Job) Start

func (w *Job) Start(queue *Queue, option *Option)

Start ジョブ内のワーカー呼び出し

type JobAPI

type JobAPI interface {
	GetName() string
	GetPayload() interface{}
	Start(*Queue, *Option)
}

JobAPI ジョブキューでのジョブ(ワーカー呼び出し)を表すインターフェース

type JobRequestAPI

type JobRequestAPI interface {
	GetName() string
	GetPayload() interface{}
}

JobRequestAPI ジョブキューへのルーティング要求時パラメータ

type JobRouterFunc

type JobRouterFunc func(*Queue, *Option, JobRequestAPI)

JobRouterFunc ジョブキューでのルーティング処理用関数シグニチャ

type LogQueue

type LogQueue struct {
	Info  chan string
	Trace chan string
	Warn  chan error
	Error chan error
}

LogQueue ログ出力用キュー

type MackerelFindParamHolder

type MackerelFindParamHolder interface {
	GetFindParam() *mkr.FindHostsParam
}

MackerelFindParamHolder Mackerelからのホスト検索用パラメータを保持していることを表すインターフェース

type MackerelHostStatus

type MackerelHostStatus string

MackerelHostStatus Mackerel上でのホストステータスを表す

type MackerelOption

type MackerelOption struct {
	APIKey              string
	RequestQueueBufSize int
	TraceMode           bool
}

MackerelOption Mackerel用の動作オプション

func NewMackerelOption

func NewMackerelOption() *MackerelOption

NewMackerelOption MackerelOptionの新規作成

type Option

type Option struct {
	SakuraCloudOption           *SakuraCloudOption
	MackerelOption              *MackerelOption
	JobQueueBufSize             int
	ThrottledAPIReqQueueBufSize int
	TimerJobInterval            time.Duration
	ReconcileJobInterval        time.Duration
	MetricsHistoryPeriod        time.Duration
	APICallInterval             time.Duration
	HealthCheckWebServerPort    int
	DisableHealthCheck          bool
	SkipInit                    bool
	TraceLog                    bool
	InfoLog                     bool
	WarnLog                     bool
	ErrorLog                    bool
	IgnoreTag                   string
	AgentTag                    string
}

Option sackerel動作オプション

func NewOption

func NewOption() *Option

NewOption Optionの新規作成

func (*Option) QueueBufSizes

func (o *Option) QueueBufSizes() (int, int, int, int)

QueueBufSizes ジョブキューのサイズ取得

func (*Option) Validate

func (o *Option) Validate() []error

Validate オプション値の妥当性検証

type Queue

type Queue struct {
	Request          chan JobRequestAPI
	Internal         chan JobAPI
	SakuraRequest    chan JobAPI
	MackerelRequest  chan JobAPI
	ThrottledRequest chan JobAPI
	Logs             *LogQueue
	Quit             chan error
}

Queue ジョブキュー

func NewQueue

func NewQueue(workBufSize int, throttledReqBufSize int, sakuraReqBufSize int, mkrReqBufSize int) *Queue

NewQueue ジョブキューの新規作成

func (*Queue) PushError

func (q *Queue) PushError(err error)

PushError push error to error queue

func (*Queue) PushInfo

func (q *Queue) PushInfo(msg string)

PushInfo push message to info-log queue

func (*Queue) PushInternalWork

func (q *Queue) PushInternalWork(work JobAPI)

PushInternalWork push job to internal-job queue

func (*Queue) PushMackerelAPIWork

func (q *Queue) PushMackerelAPIWork(work JobAPI)

PushMackerelAPIWork push job to mackerelAPI-job queue

func (*Queue) PushRequest

func (q *Queue) PushRequest(requestName string, payload interface{})

PushRequest push new request to job-routing queue

func (*Queue) PushSakuraAPIWork

func (q *Queue) PushSakuraAPIWork(work JobAPI)

PushSakuraAPIWork push job to sakuraAPI-job queue

func (*Queue) PushThrottledAPIWork

func (q *Queue) PushThrottledAPIWork(work JobAPI)

PushThrottledAPIWork push job to throttledAPI-job queue

func (*Queue) PushTrace

func (q *Queue) PushTrace(msg string)

PushTrace push message to trace-log queue

func (*Queue) PushWarn

func (q *Queue) PushWarn(err error)

PushWarn push message to warn-log queue

func (*Queue) Stop

func (q *Queue) Stop()

Stop push stop request to queue

func (*Queue) StopByError

func (q *Queue) StopByError(err error)

StopByError push stop request wth error to queue

type ReconcileHostsPayload added in v0.0.2

type ReconcileHostsPayload struct {
	// FromSackerelHost sackerelが登録したホスト
	FromSackerelHost *mkr.Host
	// FromAgentHost mackerel-agentが登録したホスト
	FromAgentHost *mkr.Host
}

ReconcileHostsPayload ホストリコンサイル用ジョブで利用するペイロード

func (*ReconcileHostsPayload) GetSacloudServerInfo added in v0.0.2

func (p *ReconcileHostsPayload) GetSacloudServerInfo() (string, int64, error)

GetSacloudServerInfo 対象Mackerelホストからさくらのクラウドリソース情報を取得する

type SacloudMetrics

type SacloudMetrics struct {
	CPU       []*sacloud.MonitorValues
	Disk      []*sacloud.MonitorValues
	Interface []*sacloud.MonitorValues
	Database  []*sacloud.MonitorValues
}

SacloudMetrics さくらのクラウドから収集するメトリクスを格納する構造体

type SakuraCloudOption

type SakuraCloudOption struct {
	AccessToken         string
	AccessTokenSecret   string
	Zone                []string
	IgnoreTags          []string
	TraceMode           bool
	ReuqestQueueBufSize int
}

SakuraCloudOption さくらのクラウド用の動作オプション

func NewSakuraCloudOption

func NewSakuraCloudOption() *SakuraCloudOption

NewSakuraCloudOption SakuraCloudOptionの新規作成

type SourcePayload

type SourcePayload struct {
	SacloudSource      interface{}
	SacloudZone        string
	SacloudResourceID  int64
	SourceType         reflect.Type
	MackerelID         string
	MackerelHost       *mkr.Host
	MackerelHostStatus MackerelHostStatus
}

SourcePayload 連携元データを内包するペイロード

func NewSourcePayload

func NewSourcePayload(source interface{}, zone string, resourceID int64, sourceType reflect.Type) *SourcePayload

NewSourcePayload SourcePayloadの新規作成

func (*SourcePayload) GenerateMackerelName

func (p *SourcePayload) GenerateMackerelName() string

GenerateMackerelName さくらのクラウド上のリソース定義を元にMackerel上でのホスト名を生成する

func (*SourcePayload) GetSourcePayload

func (p *SourcePayload) GetSourcePayload() *SourcePayload

GetSourcePayload ペイロードの取得

type SourcePayloadHolder

type SourcePayloadHolder interface {
	GetSourcePayload() *SourcePayload
}

SourcePayloadHolder SourcePayloadを保持していることを表すインターフェース

type TimerJob

type TimerJob struct {
	*Job
	TickerDuration time.Duration
}

TimerJob タイマー起動されるジョブ

func NewTimerJob

func NewTimerJob(name string, workerFunc WorkerFunc, tickerDuration time.Duration) *TimerJob

NewTimerJob タイマー起動されるジョブの作成

func (*TimerJob) GetTickerDuration

func (j *TimerJob) GetTickerDuration() time.Duration

GetTickerDuration タイマー起動間隔の取得

type TimerJobAPI

type TimerJobAPI interface {
	JobAPI
	GetTickerDuration() time.Duration
}

TimerJobAPI タイマー起動されるジョブを表すインターフェイス

type WorkerFunc

type WorkerFunc func(*Queue, *Option, JobAPI)

WorkerFunc ジョブキューでのワーカーが保有する処理用関数シグニチャ

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL