LINUX.ORG.RU

Сообщения pinachet

 

Покритикуйте плагин

Коллеги, покритикуйте плиз плагин ( Он для сбора инфы с LXC контейнеров )

#!/usr/bin/perl
use strict;
use warnings;
use utf8;

#=============================================
# Icinga plugin For monitoring LXC
# Copyright 2018 Naim Shafiev
# Released under the GPLv3 license
# v0.95
#=============================================

use Getopt::Long qw(GetOptions);
Getopt::Long::Configure qw(gnu_getopt);
use FindBin qw($Bin);
use Data::Dumper;
use Sys::Syslog qw(:DEFAULT setlogsock);
use Fcntl qw(:DEFAULT :flock);


my $linux_host_cpu_usage = '/sys/fs/cgroup/cpu/cpuacct.usage';
my $linux_host_mem_usage = '/proc/meminfo';
my $linux_host_blkio_usage = '/sys/fs/cgroup/blkio/blkio.throttle.io_serviced';

my $warning;
my $critical;
my $perf;
my $type;
my $sleep_time;
my $out_to_plugin;

GetOptions(
    'warning|w=i' => \$warning,
    'critical|c=i' => \$critical,
    'type|t=s' => \$type,
    'perf|p' => \$perf,
    'sleep_time|s=i' => \$sleep_time,
) or die( "usage: $0 --perf -w warning -c critical -type (memory , io, cpu , network) " );


### lock
my ( $short_name ) = $0 =~ m|([^/]+)\.pl$|;
setlogsock('unix');
openlog( $short_name, 'pid', 'local0');
my $lockfile = "/tmp/".$short_name."_.lock";
open(my $LOCK, ">",$lockfile ) or die( "can't open lock file: $!" );
unless ( flock($LOCK, LOCK_EX|LOCK_NB)  ) { die( "$0 is already running - Aborting") } 
### /lock

unless ( $perf ){ $perf = 0 }
#print "$warning $critical $perf $url\n";

my @cmd_path = ( '/usr/bin', '/usr/local/bin', '.' );


my $lxc_stat;

my $cons_sum_memory;
my $cons_sum_cpu;
my $num_of_cpu;

my @out = `/usr/bin/sudo /usr/bin/lxc-ls --running -F NAME -f  `;
chomp(@out);
shift @out; # Remove COLUMN Name

for (@out) { s/ //g } 

$out_to_plugin =  "OK VM | "; 

open(my $status_file , "<", '/proc/cpuinfo');
while (<$status_file>) {
    if (m/processor/) {
        $num_of_cpu++;
    }
}

open($status_file , "<", $linux_host_cpu_usage );
while (<$status_file>) {
        chomp;
        $lxc_stat->{'main_HOST'}->{cputicks} = $_ / $num_of_cpu ;
        $out_to_plugin .= "main_HOST_whole_cputicks=" . $_ / $num_of_cpu .'c ';
    }


open($status_file , "<", $linux_host_mem_usage );
while (<$status_file>) {
    chomp;
    if ( m/MemTotal:\s+(\d+)/){
        $lxc_stat->{'main_HOST'}->{memory} = $1*1024;        
    }

}

open($status_file , "<", $linux_host_blkio_usage );
while (<$status_file>) {
       chomp;
       if ($_ =~ /Total (\d+)/ and $_!~/:/) {
           s/Total //; 
           $lxc_stat->{'main_HOST'}->{blkio} = $_;
           $out_to_plugin .= "main_HOST_whole_blkio=$_".'c ';
       }
}
#get info from each running container
foreach my $name (@out) {
        my @lxc_out = `/usr/bin/sudo  /usr/bin/lxc-info -S -H -n $name `;
        chomp @lxc_out;
        #my $link_name_br;
        for (@lxc_out) {
            if ($_ =~ /Link:/) {
                my $link_name = (split /:/)[1];
                $link_name =~ s/ //g;
                my @ip_show_out = `/sbin/ip link show`;

                for (@ip_show_out) {
                    if (m /.+$link_name.+(br-\S+)/) {
                        $lxc_stat->{$name}->{'link_name'} = $1;
                    }
                }                         
            }
            
            if ($_ =~ /TX bytes:/) {
                my ($cut,$tx) = split /:/;
                $tx =~ s/ //g;
                $lxc_stat->{$name}->{tx} = $tx;
                $out_to_plugin .= $name.'_'.$lxc_stat->{$name}->{'link_name'}."_tx=$tx".'c '; 
            }
            
            if ($_ =~ /RX bytes:/) {
                my ($cut,$rx) = split /:/;
                $rx =~ s/ //g;
                $lxc_stat->{$name}->{'rx'} = $rx;
                $out_to_plugin .= $name.'_'.$lxc_stat->{$name}->{'link_name'}."_rx=$rx".'c '; 

            }
            
            if ( $_ =~ /CPU.+?(\d+)/) {
                $lxc_stat->{$name}->{cputicks} = $1 / $num_of_cpu;
                $out_to_plugin .= $name."_cputicks=".$1 / $num_of_cpu .'c ';
                $cons_sum_cpu += $1; 
            }

            if ( $_ =~ /Memory.+?(\d+)/) {
                $lxc_stat->{$name}->{memory} = $1;
                $out_to_plugin .= $name."_memory=$1".'b ';
                $cons_sum_memory += $1;
            }
            
        }
        

        open($status_file , "<", "/sys/fs/cgroup/blkio/lxc/$name/blkio.throttle.io_serviced") or die "$@ cannot open CGROUP file for IOP/S";
        while (<$status_file>) {
            chomp;
       
            if ($_ =~ /Total/ and $_!~/:/) {
                s/Total //;
                $lxc_stat->{$name}->{blkio} = $_;
                $out_to_plugin .= $name."_blkio=$_".'c ';
            }
        }    
    
}
close ($status_file);    

$out_to_plugin .= "main_HOST_memory_left=". ( $lxc_stat->{'main_HOST'}->{memory} - $cons_sum_memory ) .'b ';
#$out_to_plugin .= "main_HOST_cpuTotal_available_time_per_second=". (  $num_of_cpu * 1000000000  ).' ';

print "$out_to_plugin \n" ;


exit 0;

 , ,

pinachet
()

mixmonitor пишет пустые файлы

Столкнулся с такой же проблемой(багом) что и здесь https://issues.asterisk.org/jira/browse/ASTERISK-20156

Не могу понять решена ли эта проблема или нет и в какой версии( просто последний коммент в теме был давно )

Asterisk 13.12.1

 

pinachet
()

Подсчет в % загрузки blkio и CPU ticks

Разобравшись как получать данные с io/cpu/network/memory { тема LXC } ,возникли следующие вопросы:

  • Как подсчитать сколько cpu tick под linux ( умножить тактовую частоту на количество ядер ) максимум можно получить ?
  • Как определить хотя бы приблизительно ( для случая последовательной записи и рандомной записи) максимум сколько этот винт или массив можеть выдать ?

 

pinachet
()

Не могу вывести значения на график

Коллеги, не могу найти никак отобразить данные c Performance data на график посредством скрипта своего скрипта pnp4nagios

Label	Value
m_cputicks	       3,771,245,560,152,326.00
db2_blkio	         5.36 TiB
p7_memory	        465.52 MiB
p7_vethG8R4W3_rx	5,989,678,343.00

Не понятно , откуда и какой переменной их можно отобразить в том же php скрипте ( $UNIT[1] ??) ?


<?php
$opt[1] = "--title \"Statistics for CPU usage $servicedesc on $hostname\" -l 0 ";

$def[1] = "DEF:total=$RRDFILE[1]:$DS[1]:AVERAGE ";
$def[1] .= "AREA:$ACT[1]#FFFFFF:\"$NAME[1]\t\" ";

$def[1] .= "DEF:used=$RRDFILE[2]:$DS[2]:AVERAGE ";
$def[1] .= "AREA:used#ff9999:\"$NAME[2]\t\" ";
$def[1] .= "GPRINT:used:LAST:\"%6.0lf ".$UNIT[2]." cur\" ";

pnp4nagios - 0.6.x icinga 2.x.x

 ,

pinachet
()

lint для mysql

Коллеги сущетсвует ли линтовщик ( что-то по типу аналог PVS-Studio ) для mysql SQL ?

 ,

pinachet
()

Вся база в оперативке

Коллеги, несколько лет назад на конфе LVEE админы с wargaming рассказывали про то, что они долго мучались с оптимизацией mysql и в конце просто накупили оперативы ( тогда овер 250 гигов) и всю базу начали хранить там, и соотвественно все проблемы убрались.

Можете подсказать success story и/или поделитесь ссылками на похожие вещи .

 ,

pinachet
()

Предложение по встречи , обмену контактов

Коллеги, есть ли кто живет в Лимассоле или вообще на греческом Кипре?

 ,

pinachet
()

Explain до его реального запроса

Сталкиваюсь часто с проблемой , что сторонние разрабы подготовливают зачастую не очень хорошие sql запросы SELECT .
Некоторые для проверки и оптимизации их(отсылаю им графический EXPLAIN [спасибо mysql workbench ] ) требует для своего EXPLAIN очень много времени , а без него не знаю структуру таблицы мне сложно им советовать .

Существует ли способ, хотя бы приблизительно получать результаты по смыслу такие же как и EXPLAIN без исполнение запроса? Есть ли аналог линта для них ?

СУБД Percona или последние mariadb

 ,

pinachet
()

Для Perl

Уважаемые emacs можете поделиться конфигом для Perl типо этого https://pastebin.com/raw/AGxmc2vi

cast @ReanGD

 ,

pinachet
()

LXC

Коллеги , а кто как мониторит по ресурсам( i/o , cpu,ram,net ) lxc контейнеры ?
Нужно , icinga/nagios отдавать с клиента ( хост на котором запущенно несколько контейнеров) выдавать по каждому основные метрики загрузки ( то есть по сути не ставить/не настраивать) в каждый контейнер ключ .

Нашел это https://www.claudiokuenzler.com/nagios-plugins/check_lxc.php , насколько оно нормальное , что можете посоветовать взамен этого плагина ?

 ,

pinachet
()

Посоветуйте ОНЛАЙН курс по DevOps

Коллеги, подскажите платный онлайн курс для advanced уровня админов по тематике DevOps . Спасибо

 

pinachet
()

Софт для склада и продаж

Друзья, ищу opensource софт (а лучше libre ) для организации примитивнейшего склада [ его я буду допиливать + сторонние люди будут переводить если надо на локальный язык ] . Хотелось бы :

  • Вносить , удалять и изменять товары
  • Видеть сколько осталось
  • Ну кто добавил и взял товар
  • Принт чеков(и стикеров) кому его доставить

 

pinachet
()

Знакомый электронщик ищет работу за еду/волонтерство

Знакомый , просил помочь ему со стартом карьеры . Интересуется встраиваемыми делами( arduino, soc и тд и тп) . Заканчивал по профилю МИРЭА. Сейчас занимается 1C , но хочет заниматься не этим .

Соответственно он готов работать за еду/волонтерить в Москве .

 ,

pinachet
()

LibreTaxi

Занимаясь темой Софт для такси , наткнулся на этим товарищей http://libretaxi.org/ , это телеграм бот + есть даже исходники ( хотя и у этих тоже вроде есть http://psdevelop.ru/index.php/sample-sites-2 ) .
У кого есть опыт работы с их сервисом и как оно вообще ?

 ,

pinachet
()

Софт для такси

Знакомый хочет сделать аналог uber, taxify ( https://www.youtube.com/watch?v=4d_G0NlJBlY ) в своём городе .
pПодскажите у кого можно этот софт купить или кто может бюджетно сделать ?

 

pinachet
()

Поделитесь современным конфигом

Коллеги, поделитесь статьей типа этой https://habrahabr.ru/post/303600/ и/или своим конфигом для emacs, чтобы была поддержка по типу такого плагина https://github.com/Camelcade/Perl5-IDEA .

 ,

pinachet
()

Не стартует

Друзья, попробал на последней fedora запустить последнию IDEA, но падает с ошибкой .


Startup Error: Unable to detect graphics environment

 ,

pinachet
()

Простая CMS

Коллеги, подскажите простую CMS ( гиганты типа wordpress , joomla думаю тут будут излишны) , которая :

  • Легко встраивалась в текущий сайт( статические html стр.)
  • Имела интерфейс для добавления новостей, вставлению youtube и т.д и тп.
  • Обновляемость
  • Пожелание : многоязычный интерфейс
  • Пожелание : возможность добавления в будущем модулей для организации интернет магазина

 

pinachet
()

Аналог сайта numbeo.com

Подскажите аналог сайта numbeo.com , чтобы было еще чем сравнить ?

 , стоимость жизни

pinachet
()

Перенос работающей системы на самоустановочный usb

Возникла задача бэкапа работающей системы ( работает на старом centos) , на флешку , да так ,чтобы не очень умный техник мог ее поставив ,автоматически накатить ее обратно( если винт или плата сгорела) [ что то по типу TrueImage].
Подскажите дистр или софт который это сможет сделать, желательно с работающей системы ?

 

pinachet
()

RSS подписка на новые темы