Exemplo n.º 1
0
        ////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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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;
        }