Задать вопрос
  • SQL запрос в БД заббикса?

    @Atraides Автор вопроса
    Валерий, В таблице hosts_groups с помощью фильтра WHERE hosts_groups.groupid ="$group_id" выбираются нужные хосты, далее с помощью таблицы hosts по полю hostid вычисляется имена хостов - hosts.name колонка, далее имея нужные hostid подключается следующая таблица items в которой по полю hostid также идет выборка, из полученного набора itemid выбирается 1 нужны элемент данных с фильтром items.name="ComplexVersion" , все в итоге мы получили item.itemid искомого элемента данных, теперь нужно запросить историю значений этого элемента данных в таблице history_text по полю item.itemid, и уже на выходе отфильтровать значения history_text.value по полю history_text.clock - самого последнего значения (в юникс тайм)
    hosts
    hosts_groups
    items
    history_text
  • SQL запрос в БД заббикса?

    @Atraides Автор вопроса

    DSBB001-DLBB088-pc1 11221 1552630476
    DSBB001-DLBB088-pc1 version_1.12.21 1547829876
    DSBB002-DLBB097-pc1 11219 1562075187
    DSBB002-DLBB097-pc1 version_1.12.19 1547831827
    DSBB004-DLBB003-pc1 11221 1562073266
    DSBB004-DLBB003-pc1 version_1.10.3 1545553585
    DSBB004-DLBB003-pc1 version_1.12.21 1547831668
    DSBB004-DLBB004-pc1 11221 1551416515
    DSBB004-DLBB004-pc1 1160 1562072516
  • SQL запрос в БД заббикса?

    @Atraides Автор вопроса
    Валерий перепробовал много разных вариантов , остановился бы вроде на правильном:
    SELECT hosts.name,history_text.value,max(history_text.clock)
    FROM hosts
    LEFT JOIN (items, hosts_groups, history_text) ON (items.hostid=hosts.hostid AND hosts_groups.hostid=hosts.hostid AND history_text.itemid=items.itemid)
    WHERE hosts_groups.groupid ="$group_id" AND items.name="ComplexVersion"
    GROUP BY hosts.name,hosts_groups.hostid,items.itemid,history_text.value

    Но результате я получаю поле clock действительно показывает последнии записи, но вот value значения совершенно не последние выводятся... уже не знаю куда копать и где искать ((( может это как связано с моей бд MariaDB стоит... Хелп люди
  • SQL запрос в БД заббикса?

    @Atraides Автор вопроса
    В идеале я на выходе хочу получить таблицу из 2х столбцов: имя хоста; последнее значение(из таблицы history)
    Ну а все эти промежуточные ID нужны для поиска и сопоставления нужного элемента данных.
  • SQL запрос в БД заббикса?

    @Atraides Автор вопроса
    Иван, благодарю за ответ : вроде бы получилось, только не совсем понятно все же группировку по какому столбцу делать ?
    SELECT hosts.name,hosts_groups.hostid,items.itemid,history_text.value,max(history_text.clock)
    FROM hosts
    inner JOIN hosts_groups ON (hosts.hostid=hosts_groups.hostid AND hosts_groups.groupid = "77")
    inner JOIN items ON (hosts.hostid=items.hostid AND items.name = "CertExpDate_complex")
    inner JOIN history_text ON history_text.itemid=items.itemid GROUP BY name
  • Передать значение ключа из массива PHP в bash скрипт?

    @Atraides Автор вопроса
    Drill
    Array
    (
        [event] => ONTASKUPDATE
        [data] => Array
            (
                [FIELDS_BEFORE] => Array
                    (
                        [ID] => 17267
                    )
    
                [FIELDS_AFTER] => Array
                    (
                        [ID] => 17267
                    )
    
                [IS_ACCESSIBLE_BEFORE] => undefined
                [IS_ACCESSIBLE_AFTER] => undefined
            )
    
        [ts] => 1535715542
        [auth] => Array
            (
                [domain] => xxxx.bitrix24.ru
                [client_endpoint] => https://xxxxx.bitrix24.ru/rest/
                [server_endpoint] => https://oauth.bitrix.info/rest/
                [member_id] => ec5fa65423d3c8f10cf8c2a6b9235318
                [application_token] => 31rfw93yax4enys7zyzjkqfah9qgv98h
            )

    Имя массива что в данном случае будет ? [NULL] ?
  • Передать значение ключа из массива PHP в bash скрипт?

    @Atraides Автор вопроса
    Да я увидел, пробовал уже варианты и с кавычками менять, и поле FIELDS подправил, не помогает, и даже вот так:
    $var=$_REQUEST["data"]["FIELDS_AFTER"]["ID"];
    
    $exec_str="/usr/share/zabbix/log/get.sh $var;
    exec($exec_str);

    почему то скрипт не вызывается на баше который
  • Передать значение ключа из массива PHP в bash скрипт?

    @Atraides Автор вопроса
    Да , пишит 1 на каждый запрос... вроде в самой директории, права правильно раздал: 5b87fc80697b5664315299.png
  • Передать значение ключа из массива PHP в bash скрипт?

    @Atraides Автор вопроса
    Так я вот напрямую не могу посмотреть что мне отдает php скрипт этот, его у меня дергает bitrix по срабатыванию определенного события, поэтому я и хочу записать полученный результат переменной var в файлик log. Но у меня var точно не может быть 1.. там прилетают 4х значные цифры.
  • Передать значение ключа из массива PHP в bash скрипт?

    @Atraides Автор вопроса
    Drill Спасибо за ответ, сделал вот так, для проверки добавил вывод переменной $var в лог файл, а в качестве баш скриптка сделал такой :
    <?php
    
    print_r($_REQUEST);
    writeToLog($_REQUEST);
    
    $var=$_REQUEST["data"]["FIELD_BEFORE"]["ID"];
    $cmd="/usr/share/zabbix/log/get.sh $var";
    $output=array();
    exec($cmd,$output,$return);
    
    function writeToLog($data, $title = '') {
     $log = print($var);
    // $log .= "\n------------------------\n";
     file_put_contents(getcwd() . '/log/hook.log', $log, FILE_APPEND);
     return true;
    }


    ]
    #!/bin/bash
    
    echo "this is $1" > list


    Но почему то в качестве var приходит 1 , хотя там совсем другие цифры идут в пост запросе.