Ответы пользователя по тегу Linux
  • Zenoss - как перенести данные на другой сервер?

    @leclecovich
    Вкратце, процесс переноса можно разбить на 3 этапа. Первый - это дерево Organizers-Devices. Из коробки есть утилиты zenbackup, экспортирующая в xml. Но не известно, как это пройдет между разными версиями. Если объектов немного, то можно ручками через zendmd, или, даже, автоматизировать этот процесс.
    Вторая часть - это RRD-файлы с метриками из /opt/zenoss/perf. Их можно либо скопировать, либо также перегнать через xml с помощью rrdtool.
    Третья часть - ивенты, хранятся в MySQL. Какого-то проверенного решения я не встречал, возможно придется менеджить вручную.
    Ответ написан
    Комментировать
  • Contitnious Integration: как осуществить нагрузочное тестирование C++ демона?

    @leclecovich
    Затея однозначно неплохая, имеет место быть. По поводу сбора метрик - копните в сторону collectd. Эта утилита предоставляет как сервер, на котором будут агрегироваться метрики, так и клиент (демон), который их будет отсылать. Имхо, гораздо удобнее, чем пользоваться "большими" аналогами вроде Zenoss или Zabbix.
    Что касается хранения метрик, то здесь best practises - это использование RRD. С помощью rrdtool можно либо построить графики и на выхлопе будет растровое изображение, либо сделать экспорт в xml, который можно скормить Jenkins, для этого есть плагин.
    Ответ написан
  • Как реализовать экранирование слешей для ex?

    @leclecovich
    Для подобного пользовался sed, но суть та же. Для седа выражение будет выглядеть так:
    's/'"$FIND"'/'"$REPLACE"'/g'
    И, подмечено правильно, слеши надо экранировать, т.е.
    FIND='\/usr\/local'
    Ответ написан
    5 комментариев
  • Как лучше передать Callback в объект?

    @leclecovich
    Для своих нужд сделал следующим образом: добавил интерфейс ICallable с единственным методом onlyOneMethod(). В метод, который производит вызов callback-метода, в качестве аргументов передаю указатель на класс, реализующий ICallable, а также указатель на реализуемый метод интерфейса. Выглядит это примерно так:

    void invokeCallback(void (ICallable::* pMethodPointer)(), ICallable *pInstance)
    {
    (pCalleeInstance->*pMethodPointer)();
    }
    

    Вызов invokeCallback выглядит так:

    ICallable *pImpl = new CallableImplementationClass();
    invokeCallback(&ICallable::onlyOneMethod, pImpl);
    

    В результате, имеем возможность callback-вызова метода экземплярного класса.
    Ответ написан