bash, еще bash, еще много-много bash

29.10.18

База данных - Технологический журнал

Делюсь своим опытом параллельного разбора технологического журнала. По мотивам статьи https://infostart.ru/public/928184.

Оригинальная публикация была сделана еще год назад. Тогда пришлось вручную запускать 15 скриптов для разбора технологического журнала (около 60 Гб в первые дни). Перспектива делать это каждый день на протяжении двух недель меня не обрадовала. Поэтому решил поизучать мануалы по bash для написания управляющего скрипта. Приятным бонусом стала информация о том, что можно реализовать параллельный запуск. В итоге написал скрипт:

#!/bin/bash
#main.sh - one script to rule them all
#scr/* script_dir
#$1 tech_log_dir
#$2 result_dir

if [ "$1" = "" ] 
then 
echo 'set param tech_log_dir (1)'
exit
fi

tech_log_dir=$1

if [ "$2" = "" ] 
then 
result_dir=$(basename $1)
else
result_dir=$2
fi

if ! [ -d $result_dir ]
then
mkdir $result_dir
fi

for i in scr/*.sh; do $i $tech_log_dir $result_dir & done

Реализованы два варианта запуска:
$ bash main.sh /e/techlog - анализирует данные в каталоге /e/techlog, создает в каталоге скрипта подкаталог techlog и складывает в него результаты разбора
$ bash main.sh /e/techlog /f/result - анализирует данные в каталоге /e/techlog и складывает в /f/result результаты разбора

Рабочие скрипты складываются в подкаталог /scr каталога расположения основного скрипта.

Примеры адаптации скриптов с ИТС под передаваемые параметры и структуру каталогов технологического журнала:

#!/bin/bash
#scr/long_transactions.sh
cat $1/events/rphost*/*.log | \
perl -n -e 'if (/^\d\d:\d\d\.\d+/) {$event =~ s/.\n/<line>/g; print $event."\n"; $event = "";} $event .= $_; END{print $event};' | \
perl -pe 's/\xef\xbb\xbf//g' | \
grep -P "SDBL.*Func=(Commit|Rollback)Transaction.*Context" | \
perl -pe 's/^\d+:\d+.\d+-//g' | \
perl -pe 's/,SDBL,.*Context.*<line>[ \t]+/,Context=/g' | \
perl -pe 's/,SDBL,.*Context=/,Context=/g' | \
sed 's/<line>//g' | \
awk -F',Context=' '{sum[$2]+=$1; count[$2]+=1;} END {for(i in sum) {print sum[i] " " sum[i]/count[i] " " count[i] " " i}}' | \
sort -rnb | \
head -n 5 > $2/long_transactions.txt
#!/bin/bash
#scr/long_calls.sh
cat $1/events/rphost*/*.log | \
perl -n -e 'if (/^\d\d:\d\d\.\d+/) {$event =~ s/.\n/<line>/g; print $event."\n"; $event = "";} $event .= $_; END{print $event};' | \
perl -pe 's/\xef\xbb\xbf//g' | \
grep -P ",CALL,.*,Context=" | \
perl -pe 's/<line>//' | \
perl -pe 's/^\d+:\d+.\d+-//g' | \
perl -pe 's/,CALL,.*Context/,Context/g' | \
perl -pe 's/,Interface=.*OutBytes=\d+//g' | \
awk -F',Context=' '{sum[$2]+=$1; count[$2]+=1;} END {for(i in sum) {printf "%d %d %d %s\n",sum[i],sum[i]/count[i], count[i],i}}' | \
sort -rnb | \
head -n 5 > $2/long_calls.txt

Эффект от параллельного выполнения моих пятнадцати скриптов:

 

 

Вступайте в нашу телеграмм-группу Инфостарт

технологический журнал bash

См. также

Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

В логах содержится огромное количество полезной информации о том, как «живет» система: какие процессы в ней выполняются, и какие ошибки возникают. Расскажем о том, как выстроить централизованное хранение и обработку разрозненных логов, превратив их в полезный инструмент анализа и диагностики.

29.12.2025    6493    leongl    0    

18

Администрирование СУБД Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

Рассказываем, почему высоконагруженным бэкендам на 1С нужен регулярный мониторинг и что происходит, когда его нет: производительность и стабильность деградируют, а обращения пользователей копятся. Показываем, как построили легкую систему наблюдаемости для бэкендов корпоративных порталов. Она включает сбор метрик из технологического журнала, Apdex, журнала регистрации и динамики размеров таблиц с последующим анализом в связке ClickHouse и служебной информационной базы на 1С. Объясняем, какие отчеты и метрики быстрее всего помогают находить критичные проблемы производительности, и демонстрируем интерфейс расследования. Разбираем несколько кейсов оптимизации, найденных по итогам мониторинга, включая доработки функционала БСП «управление доступом» и «присоединенные файлы».

15.12.2025    4071    tystik    1    

8

Технологический журнал Системный администратор Программист 1С:Предприятие 8 Абонемент ($m)

Убираем лишние переносы строк в событии технологического журнала с помощью SIMD.

1 стартмани

24.11.2025    955    0    sdf1979    2    

2

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Бесплатно (free)

Мониторинг в ландшафте 1С помогает не только вовремя выявлять проблемы и повышать SLA, но и укреплять информационную безопасность. Разбираем источники данных, ограничения штатных инструментов и современные практики мониторинга на базе Prometheus, ClickHouse и Grafana. А также рассказываем о коробочном решении «Оркестратор 1С-систем» и планах его развития.

29.10.2025    2201    Sibars    0    

5

Технологический журнал Программист Россия Бесплатно (free)

Logcfg editor — это удобное веб-приложение, предназначенное для создания конфигурационного файла logcfg.xml для системы логирования в 1С:Предприятие. Приложение позволяет настраивать параметры логирования через интуитивно понятный интерфейс, избавляя от необходимости вручную редактировать XML-файлы.

25.08.2025    2863    Metrika42    3    

13

Технологический журнал Системный администратор Программист 1С:Предприятие 8 Абонемент ($m)

Утилита для конвертирования Технологического журнала из текстового формата в JSON.

1 стартмани

28.07.2025    3150    2    SerVer1C    2    

8

Технологический журнал Системный администратор Программист Бесплатно (free)

Чтобы организовать детальный произвольный анализ огромного количества логов технологического журнала, нужен удобный инструмент. Расскажем о том, как с помощью бесплатного решения OpenSearch настроить оповещения в Telegram и на почту об изменениях настроек на сервере 1С, а также дашборды, позволяющие мгновенно находить проблемные объекты и источники блокировок.

24.07.2025    8408    aidar_safin    2    

25

HighLoad оптимизация Рефакторинг и качество кода Технологический журнал Программист 1С:Предприятие 8 Россия Бесплатно (free)

Технологии бегут вперёд, но боль производительности 1С остаётся вечной: инфраструктура, код или настройки? Пока ИИ не научился чинить всё «на лету», мы автоматизировали ключевое — диагностику. Читайте статью — показываем, как превратить хаос диагностики в понятные графики и цифры. Спойлер: это работает даже если ваша 1С — «чёрный ящик» на старом железе.

19.03.2025    7196    Metrika42    9    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nnsidorov22 20.01.21 22:31 Сейчас в теме
Добрый день. Можете помочь разобрать следующий скрипт: perl -n -e 'if (/^\d\d:\d\d\.\d+/) {$event =~ s/.\n/<line>/g; print $event."\n"; $event = "";} $event .= $_; END{print $event};' ?
Я понимаю что идет преобразование многострочного текста к однострочному, но пошагово не понимаю логику скрипта. Для чего идет вот этот кусок скрипта: $event = ""? И почему в конце ещё раз выводится переменная: print $event?
stolplit; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация