/// <summary> /// Initializes a new instance of the <see cref="AgentRunner"/> class. /// </summary> public AgentRunner() { Logger.Info("Starting agent"); bool firstRun = true; if (File.Exists(configFile)) { firstRun = false; dynamic root = JsonConvert.DeserializeObject(File.ReadAllText(configFile)); Logger.Info("Configuring agent"); Config.Setup(root, false); } else { Logger.Info("Configuring agent for first run"); Config.Setup(new JObject(), true); } Thread executionThread = new Thread(new ThreadStart(delegate { if (firstRun) { Bootstrap bootStrap = new Bootstrap(); bootStrap.Configure(); } Monit.GetInstance().Start(); Monit.GetInstance().StartServices(); Handler.Start(); } )); executionThread.Name = "Execution Thread"; executionThread.IsBackground = true; executionThread.Start(); }
/// <summary> /// Gets the instance. /// </summary> /// <returns></returns> public static Monit GetInstance(string jobDefinitionDirectory) { if (instance == null) { lock (locker) { if (!string.IsNullOrEmpty(jobDefinitionDirectory)) { jobDefDirectory = jobDefinitionDirectory; } if (instance == null) { instance = new Monit(); } } } return(instance); }
////def heartbeat_payload //// job_state = Bosh::Agent::Monit.service_group_state //// monit_vitals = Bosh::Agent::Monit.get_vitals //// # TODO(?): move DiskUtil out of Message namespace //// disk_usage = Bosh::Agent::Message::DiskUtil.get_usage //// job_name = @state["job"] ? @state["job"]["name"] : nil //// index = @state["index"] //// vitals = monit_vitals.merge("disk" => disk_usage) //// Yajl::Encoder.encode("job" => job_name, //// "index" => index, //// "job_state" => job_state, //// "vitals" => vitals, //// "ntp" => Bosh::Agent::NTP.offset) ////end private static string GetHearbeatPayload() { HeartbeatMessage heartBeatMessage = new HeartbeatMessage(); Vitals systemVitals = Monit.GetInstance().GetVitals; heartBeatMessage.Job = Config.State.Job != null ? Config.State.Job.Name : null; dynamic stateHash = Config.State.ToHash(); if (stateHash["index"] != null) { heartBeatMessage.Index = Convert.ToInt32(stateHash["index"].Value); } heartBeatMessage.JobState = Monit.GetInstance().GetServiceGroupState; heartBeatMessage.Vitals = systemVitals; heartBeatMessage.NtpMsg = Ntp.GetNtpOffset(); string result = JsonConvert.SerializeObject(heartBeatMessage); return(result); }
/// <summary> /// Gets the instance. /// </summary> /// <returns></returns> public static Monit GetInstance(string jobDefinitionDirectory) { if (instance == null) { lock (locker) { if (!string.IsNullOrEmpty(jobDefinitionDirectory)) { jobDefDirectory = jobDefinitionDirectory; } if (instance == null) { instance = new Monit(); } } } return instance; }