////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 NTP offset from a specified time server. /// </summary> /// <param name="timeServer">The time server.</param> /// <returns></returns> public static Ntp GetNtpOffset(string timeserver) { if (string.IsNullOrEmpty(timeserver)) { throw new ArgumentNullException("timeserver"); } Logger.Debug("Retrieving NTP information from {0}", timeserver); int retryCount = 5; Ntp currentNtp = new Ntp(); while (retryCount > 0) { try { NtpClient ntpClient = new NtpClient(timeserver); ntpClient.Connect(false); currentNtp.offset = ntpClient.LocalClockOffset; currentNtp.currentTime = DateTime.Now; break; } catch (SocketException se) { Logger.Error("Error while retrieving ntp information: {0}", se.ToString()); currentNtp.message = se.Message; retryCount--; Thread.Sleep(1000); } catch (Exception ex) { Logger.Error("Error while retrieving ntp information: {0}", ex.ToString()); currentNtp.message = ex.Message; break; } } return(currentNtp); }
/// <summary> /// Gets the NTP offset from a specified time server. /// </summary> /// <param name="timeServer">The time server.</param> /// <returns></returns> public static Ntp GetNtpOffset(string timeserver) { if (string.IsNullOrEmpty(timeserver)) { throw new ArgumentNullException("timeserver"); } Logger.Debug("Retrieving NTP information from {0}", timeserver); int retryCount = 5; Ntp currentNtp = new Ntp(); while (retryCount > 0) { try { NtpClient ntpClient = new NtpClient(timeserver); ntpClient.Connect(false); currentNtp.offset = ntpClient.LocalClockOffset; currentNtp.currentTime = DateTime.Now; break; } catch (SocketException se) { Logger.Error("Error while retrieving ntp information: {0}", se.ToString()); currentNtp.message = se.Message; retryCount--; Thread.Sleep(1000); } catch (Exception ex) { Logger.Error("Error while retrieving ntp information: {0}", ex.ToString()); currentNtp.message = ex.Message; break; } } return currentNtp; }