Ответ с данными на сервер Zabbix

125
30 сентября 2021, 17:30

Так должен выглядеть ответ в сторону Zabbix со сбором данных. У меня есть Key. Как мне написать код на C#?

<HEADER><DATALEN>{
   "request":"agent data",
   "data":[
       {
           "host":"<hostname>",
           "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]",
           "value":" 13039:20090907:184546.759 zabbix_agentd started. ZABBIX 1.6.6 (revision {7836}).",
           "lastlogsize":80,
           "clock":1252926015
       },
       {
           "host":"<hostname>",
           "key":"agent.version",
           "value":"1.6.6",
           "clock":1252926015
       }
   ],
   "clock":1252926016
}

Начал писать

private const int port = 1051;
private const string server = "10.225.ХХ.ХХХ";
static void Otvet()
{
    try
    {
        TcpClient client = new TcpClient();
        client.Connect(server, port);
        var req = @"{
        ""request"":""agent data""
        }";
        var b = Encoding.UTF8.GetBytes(req);
        byte[] header = new byte[] {
            (byte)90,
            (byte)66,
            (byte)88,
            (byte)68,
            (byte) 1,
            (byte)(b.Length & 0xFF),
            (byte)((b.Length >> 8) & 0xFF),
            (byte)((b.Length >> 16) & 0xFF),
            (byte)((b.Length >> 24) & 0xFF),
            0,0,0,0};
        byte[] packet = new byte[header.Length + b.Length];
        Array.Copy(header, 0, packet, 0, header.Length);
        Array.Copy(b, 0, packet, header.Length, b.Length);
        byte[] data = new byte[256];
        StringBuilder response = new StringBuilder();
        NetworkStream stream = client.GetStream();
        stream.Write(packet, 0, packet.Length);
        stream.Flush();
        do
        {
            int bytes = stream.Read(data, 0, data.Length);
            response.Append(Encoding.UTF8.GetString(data, 0, bytes));
        }
        while (stream.DataAvailable); // пока данные есть в потоке
        var res = response.ToString();
        res = res.Substring(13);
        // Закрываем потоки
        stream.Close();
        client.Close();
        var Welcome = JsonConvert.DeserializeObject<Welcome>(res);
        Console.WriteLine(response.ToString());
READ ALSO
Некорректная кодировка ответа с запроса

Некорректная кодировка ответа с запроса

Есть одна версия приложения (asp net 3) на 2 разных веб серверах1

98
Рассчитать расстояние до линии

Рассчитать расстояние до линии

Имеется множество точек, а именно тачей(точки где пользователь провел пальцем) и имеется LineRenderer, также с множеством точекКак рассчитать расстояние...

101
Форма не отправляется

Форма не отправляется

На странице есть форма, которую пользователь должен заполнить и отправить, письмо с информацией из формы должно придти мне на почтуjs скрипт:

91
Умножение в MySQL

Умножение в MySQL

Есть таблица apartments (квартиры), у которой есть поля total_area (общая площадь) и price (цена за 1 квадратный метр)

75