powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Zabbix/Orabbix из PL/SQL?
21 сообщений из 21, страница 1 из 1
Zabbix/Orabbix из PL/SQL?
    #38788528
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, как мне зажечь из PL/SQL алерт в Zabbix/Orabbix?
Такое впечатление, что они не для этого :-) но вариантов нет, к сожалению.
Можно их как то через utl_tcp пнуть или только через консоль/чтобы они мониторили сами базу постоянно?
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #38788628
s_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно изучить исходники zabbix_sender. Или вызывать его из PL/SQL как команду ОС.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #38788723
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров Андрей,

Спрашивать про интерфейсы забикса стоит на их сайте.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #38788777
Фотография Alexey Zhidkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Протокол tcp, API на сайте имеется.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #38789739
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На будущее:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
create or replace function send2zabbix(aParam VarChar2,
                                       aValue VarChar2) return integer as
fConn   utl_tcp.connection;
fData   VarChar2(1000);
fResult VarChar2(1000);
fLen    Integer;
fIsOpen Integer := 0;
Begin
     Begin
          fConn := utl_tcp.open_connection(remote_host => '192.168.0.1',
                                           remote_port => 10051,
                                           charset     => 'CL8MSWIN1251');
     exception
          WHEN utl_tcp.network_error OR utl_tcp.transfer_timeout THEN
               RAISE_APPLICATION_ERROR (-20001, 'Zabbix connection error');
     end;
     fIsOpen := 1;
     fData := '{' || Chr(10) || '"request":"sender data",' || Chr(10) || '"data":[' || Chr(10) || '{' || Chr(10) || '"host":"test",' || Chr(10) || '"key":"' || aParam || '",' || Chr(10) || '"value":"' || aValue || '"}' || Chr(10) || ']}' || Chr(10) || Chr(13);
     fData := 'ZBXD' || Chr(1) || Chr(Length(fData)-1) || Chr(0) || Chr(0) || Chr(0) || Chr(0) || Chr(0) || Chr(0) || Chr(0) || fData;
     Begin
          fLen := utl_tcp.write_text(fConn, fData);
     EXCEPTION
          WHEN utl_tcp.network_error OR utl_tcp.transfer_timeout THEN
               RAISE_APPLICATION_ERROR (-20002, 'Zabbix port write error');
     END;
     begin
          fLen := utl_tcp.read_text(fConn, fResult, 1024);
     EXCEPTION
          WHEN utl_tcp.network_error OR utl_tcp.transfer_timeout THEN
               RAISE_APPLICATION_ERROR (-20003, 'Zabbix port read error');
     END;
     utl_tcp.close_connection(fConn);
     If fResult like 'ZBXD%' Then        
        return 1;
     else
        return 0;
     end if;
exception
    when others then
         If fIsOpen > 0 Then
            utl_tcp.close_connection(fConn);
         End if;
         return -1;
end;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Zabbix/Orabbix из PL/SQL?
    #39810176
sqlstarter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров Андрей,

Привет всем!

У zabbix изменился протокол https://www.zabbix.com/documentation/4.0/manual/appendix/protocols/header_datalen, но при попытке отправки сообщает, что сообщение превысило необходимый размер... Пробовал опускать заголовок, отправлять сообщение подходящего размера, результат пока печальный.

Реализация на pl/sql (Петров Андрей).
Может кто-то уже боролся с этим?
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810215
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlstarter
но при попытке отправки сообщает, что сообщение превысило необходимый размер... Кто сообщает? Полный текст ошибки приведите, пожалуйста.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810497
sqlstarter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jan2ary, Zabbix

" 8652:20190430:043409.656 Message from -=ip addr=- is missing header. Message ignored.
8649:20190430:091437.140 Message from -=ip addr=- is missing header. Message ignored.
8649:20190430:094743.982 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:094759.042 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:094935.824 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:095026.716 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8651:20190430:095108.618 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095238.682 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095339.710 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095827.092 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095831.241 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095835.066 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8649:20190430:095839.838 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:095926.142 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:100028.833 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:100054.095 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:100141.840 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:100210.888 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8649:20190430:105448.963 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:105511.942 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:105555.313 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8649:20190430:105637.895 Message from -=ip addr=- is longer than expected 102 bytes. Message ignored.
8651:20190430:105648.062 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:105655.640 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8649:20190430:105703.045 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8650:20190430:105711.998 Message from -=ip addr=- is longer than expected 96 bytes. Message ignored.
8648:20190430:110015.330 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8651:20190430:110025.006 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:110642.522 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8649:20190430:110903.859 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:111345.419 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8648:20190430:111351.952 Message from -=ip addr=- is longer than expected 101 bytes. Message ignored.
8649:20190430:111715.774 Message from -=ip addr=- is using unsupported protocol version "92". Message ignored.
8648:20190430:111724.755 Message from -=ip addr=- is using unsupported protocol version "92". Message ignored.
8648:20190430:112232.317 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8652:20190430:112709.555 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8649:20190430:112757.380 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8648:20190430:113147.739 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8650:20190430:113425.727 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8648:20190430:113500.201 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8651:20190430:113726.543 Message from -=ip addr=- is longer than expected 99 bytes. Message ignored.
8652:20190430:113749.296 Message from -=ip addr=- is longer than expected 100 bytes. Message ignored.
8652:20190430:113801.640 Message from -=ip addr=- is longer than expected 101 bytes. Message ignored."
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810540
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810560
sqlstarter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Кондыганов, спасибо.
Читал, этот форум, но увы нет...
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810580
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlstarter,

Покажите тогда, что уходит заббиксу, как выглядит сообщение.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810593
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlstarterЧиталНаивно полагаться на chr в передаче двоичных данных.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39810797
sqlstarter,

В описании по вашей ссылке увидел, что длинна сообщения кодируется четырьмя байтами и они идут в обратном порядке.
А в функции всё запихивается в первый char.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39811040
sqlstarter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jan2ary,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
....l.y.ZBXD.c.......{ 
"request":"sender data", 
"data":[ 
{ 
"host":"ibso123", 
"key":"DOC_QUEUE_RC_VAL", 
"value":"12"} 
]}
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39811132
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlstarter,

По ссылке есть сниппеты для отправки сообщения на других языках, попробуйте с ними поэкспериментировать, может какие идеи появятся.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39811277
Как вариант, можно на java написать хранимую процедуру и вызывать её из PL/SQL
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39811506
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кондыгановна java незнание plsql не означает знание джавы.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39812496
Примерно такая функция.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
CREATE OR REPLACE AND COMPILE  JAVA SOURCE NAMED "Send2Zabbix"
   AS
import java.io.*;
import java.net.*;

public class ZabbixSend{

public static String Send2Zabbix(String aParam, String aValue)
{
String error = null;
String data = null;
try{

String address = "192.168.0.1";
InetAddress ipAddress = InetAddress.getByName(address);

// открываем сокет и коннектимся к 192.168.0.1:10051
Socket s = new Socket(ipAddress, 10051);

// формируем данные
data = "{\n\"request\":\"sender data\",\n\"data\":[\n{\n";
data = data + "\"host\":\"test\",\n\"key\":\""+ aParam  + "\"\n";
data = data + "\"value\":\"" + aValue + "\"}\n]}\n\r";

//формируем заголовок
byte[] header = new byte[] {
    'Z', 'B', 'X', 'D', '\1',
    (byte)(data.length() & 0xFF),
    (byte)((data.length() >> 8) & 0xFF),
    (byte)((data.length() >> 16) & 0xFF),
    (byte)((data.length() >> 24) & 0xFF),
    '\0', '\0', '\0', '\0'};

//формируем пакет заголовок + данные 
byte[] packet = new byte[header.length + data.length()];
System.arraycopy(header, 0, packet, 0, header.length);
byte[] databytes = data.getBytes();
System.arraycopy(databytes, 0, packet, header.length, databytes.length);

//отправка пакета
s.getOutputStream().write(packet);

//Получение данных с сервера
BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                    s.getInputStream()));

        StringBuffer response = new StringBuffer(1024);
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            response.append(inputLine);

        in.close();

//закрываем соединение
s.close();
//Возвращаем результат
return response.toString();

}catch(Exception e){
error = e.toString();
return error;
}

}

};

--Создание Функции PL/SQL
CREATE OR REPLACE FUNCTION Send2Zabbix(aParam VARCHAR2, aValue VARCHAR2) RETURN VARCHAR2 AS
   LANGUAGE JAVA NAME 'ZabbixSend.Send2Zabbix (java.lang.String, java.lang.String) return java.lang.String';


--Назначение Гранта
begin
dbms_java.grant_permission( 'ORAUSER', 'SYS:java.net.SocketPermission', '192.168.0.1:10051', 'connect,resolve' );
end;

--Вызов функции
select Send2Zabbix('Param1','12') from dual;
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39812500
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КондыгановПримерно такая функция.Примерно та же ошибка.
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39812533
Запятую пропустил. Должно быть так.
Код: plsql
1.
2.
3.
4.
// формируем данные
data = "{\n\"request\":\"sender data\",\n\"data\":[\n{\n";
data = data + "\"host\":\"test\",\n\"key\":\""+ aParam  + "\",\n";
data = data + "\"value\":\"" + aValue + "\"\n}\n]\n}\n\r";
...
Рейтинг: 0 / 0
Zabbix/Orabbix из PL/SQL?
    #39813282
sqlstarter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Кондыганов,

Ранее проделал тоже самое, удачно отправлял, но админ говорит, не допустит ява пакет на базу, поэтому пробовал реализовать на pl/sql. Чутка позже вернусь к вопросу, сейчас занимаюсь большой-срочной задачей.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Zabbix/Orabbix из PL/SQL?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]