воскресенье, 18 сентября 2016 г.

simple mikrotik scripts

==== clean lease of android ==== 

  :foreach i in=[/ip dhcp-server lease find host-name~"android"] do={/ip dhcp-server lease remove $i}

==== drop bad coonections (NAT SIP) ====

  :foreach i in=[/ip firewall connection find assured=no && src-address~"192.168.0.24"] do={
  /ip firewall connection remove $i
  }

mikrotik script FTP Backup


  # ftp configuration
  :local ftphost "192.168.99.88"
  :local ftpuser "noc"
  :local ftppassword "Pa$$w0rd"
  :local ftppath "./backup/"
 
  # months array
  :local months ("nul","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
 
  # get time
  :local ts [/system clock get time]
  :set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
 
  # get Date
  :local ds [/system clock get date]
  # convert name of month to number
  :local month [ :pick $ds 0 3 ];
  :local mm [ :find $months $month];
  # set $ds to format YYYY-MM-DD
  :set ds ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])
 
  # file name for system backup - file name will be servername-date-time.backup
  :local fname1 ("/EDAY-".[/system identity get name]."-".$ds."-".$ts.".backup")
  # file name for config export - file name will be servername-date-time.rsc
  :local fname2 ("/EDAY-".[/system identity get name]."-".$ds."-".$ts.".rsc")
 
  # backup the data
  /system backup save name=$fname1
  /export file=$fname2
 
  # upload the user manager backup
  /tool fetch address="$ftphost" src-path=$fname1 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname1" upload=yes
  /tool fetch address="$ftphost" src-path=$fname2 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname2" upload=yes
  :delay 15
  # find file name EDAY
  :foreach i in=[/file find] do={ :if ([:typeof [:find [/file get $i name] "EDAY-"]]!="nil") do={/file remove $i}; }



понедельник, 13 июня 2016 г.

Учим пользоватся iostat

Все параметры снимаются через iostat. О любом можно почитать в man pages


Пример стандартного вывода программы:

  Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
  sda               0,00     0,00    0,00    0,12     0,03    12,38   197,81     0,00    5,36  179,66    3,42   3,63   0,05
  sdb               0,03     3,00   16,70    7,83    99,67  1466,95   127,72     1,49   60,79    8,25  172,82   6,63  16,27
  sdc               0,02     2,99    3,85    7,84    26,38  1466,95   255,49     1,20  102,30   11,14  147,15   6,18   7,23
  sdd               0,00     0,00    9,23   10,21  1136,19   769,72   196,15     0,06    3,07    4,73    1,57   1,89   3,67

Формулы:

  • avgrq-sz = (rsec + wsec) / (r + w)
  • await = qutim + svctim
  • utilization = ( (read requests + write requests) * service time in ms / 1000 ms ) * 100% или %util = ( r + w ) * svctim /10


судя по оф ману параметр на svctm опиратся к сожалению нельзя(

Отзывчивость устройства

Время за которое в среднем обрабатывается запрос на ввод-вывод включая ожидание в очереди, причем наиболее характерно именно ожидание, ибо оно зависит от загрузки, а не собственно размера запроса. Чем выше это время, тем медленее отзыв системы на запрос приложения.


  • await (await) - Среднее время ожидания обработки одного запроса (миллисекунды). Время нахождение и на обработку в очереди - всключено.
  • read await (r_await) - Среднее время (в миллисекундах) обработки запроса на чтение. Время нахождение и на обработку в очереди - всключено.
  • write await (w_await) - Среднее время (в миллисекундах) обработки запроса на запись. Время нахождение и на обработку в очереди - всключено.


Вывод:
await - должно стремится к минимуму, так же можно посмотреть как устройство отзывается на запись и на чтение (r_await и w_await).
Зависит от утилизации диска.


Состояние очереди

Позволяет оценить характер нагрузки и степень загруженности устройства.


  • average queue size (avgqu-sz) -  средняя длина очереди запросов в драйвере диска.
  • average requests size (avgrq-sz) - средний размер запроса (в секторах).


Вывод:
avgqu-sz - должна стремится к нулю если стабильно больше 1 то очевидно диск не справляется.
avgrq-sz - говорит лишь о харрактере нагрузки.


Операции слияния в очереди

Количество запросов чтения/записи (в секунду) объединенных при постановке в очередь на выполнение.
Число запросов, которые приложения запросили выполнить,а система смогла их объединить в блоки в среднем по avgrq-sz байт, для экономии.


  • write requests merge per second (wrqm/s) - IOPs на запись в очереди
  • read requests merge per second (rrqm/s)- IOPs на чтение в очереди


Вывод:
Принципы использования диска.
Random Access - когда чтение поверхности случайно, для него харрактерено: r/s,w/s начнут стремиться к rrqm/s и wrqm/s, и avgrq-sz падать. Естественно при таком сценаррии, диск HDD будет тормозить.
Sequential Access - когда чтение последовательно, для него харрактерно rrqm/s и wrqm/s стремится к 0, avgrq-sz растет. При таком сценарии, HDD диск будет работать с максимальным КПД.


Текущие значения чтения/записи на устройство

Текущая скорость чтения/записи на устройство в килобайтах


  • read from device per second (rkB/s) - Колличество киллобайт прочитанных с устройства в секунду.
  • written to the device per second (wkB/s) - Колличество киллобайт записанных на устройство в секунду.

Вывод:
Тут особо нечего сказать, естественно надо понимать чем вызван скачек.


Утилизация блочного устройства

Утилизация диска и значение IOPS - важный параметр загруженности диска, можно оценить характер нагрузки, по чему он проседает.


  • utilization (%util) - утилизация винта общая нагрузка на устройство.
  • write operations per second (w/s) - IOPs на запись.
  • read operations per second (r/s) - IOPs на чтение.


Вывод:
При значениях utilization близких к 100% система «встает», в том числе все приложения. Процессора уходят в iowait, а процессы, желающие ввода-вывода — в Disk Sleep.
Как следствие рост await, все плохо.


вторник, 17 февраля 2015 г.

Loganalyzer + MySQL + rsyslog + debian wheezy

debian 7.7

apt-get update
apt-get upgrade
apt-get install mysql-server
apt-get install rsyslog-mysql libapache2-mod-php5 php5-mysql php5-mysqlnd php5 php5-gd

mysql -u root -p
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
        ID int unsigned not null auto_increment primary key,
        CustomerID bigint,
        ReceivedAt datetime NULL,
        DeviceReportedTime datetime NULL,
        Facility smallint NULL,
        Priority smallint NULL,
        FromHost varchar(60) NULL,
        Message text,
        NTSeverity int NULL,
        Importance int NULL,
        EventSource varchar(60),
        EventUser varchar(60) NULL,
        EventCategory int NULL,
        EventID int NULL,
        EventBinaryData text NULL,
        MaxAvailable int NULL,
        CurrUsage int NULL,
        MinUsage int NULL,
        MaxUsage int NULL,
        InfoUnitID int NULL ,
        SysLogTag varchar(60),
        EventLogType varchar(60),
        GenericFileName VarChar(60),
        SystemID int NULL
);
CREATE TABLE SystemEventsProperties
(
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
);
GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'MYSQLPASSWORD';
FLUSH PRIVILEGES;
exit

vim /etc/rsyslog.conf
добавить
$ModLoad ommysql
*.* :ommysql:127.0.0.1,Syslog,rsyslog,MYSQLPASSWORD
раскомментировать
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

vim /etc/rsyslog.d/send2server
добавить
*.* @hostname-или-fqdn-или-ip-адрес-сервера

service rsyslog restart
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.6.tar.gz
tar xzf loganalyzer-3.6.6.tar.gz
mkdir /var/www/loganalyzer
mv loganalyzer-3.6.6/src /var/www/loganalyzer
cd /var/www/loganalyzer/
touch config.php
chmod 666 config.php
cd /var/www/
chown www-data:www-data ./* -Rf

в браузере при заполнении соблюдая регистр.
http://IP/loganalyzer/intall.php














вторник, 20 января 2015 г.

mikrotik firmware format nand\upgrade over serial port

Операции с mikrotik через com порт на примере format nand

1) скачать с оф сайта необходимую прошивку и утилиту netinstall

2) подключится через COM порт.
115200bit/s, 8 data bits, 1 stop bit, no parity, flow control=none by default.
иногда
9600bit/s, 8 data bits, 1 stop bit, no parity, hardware (RTS/CTS) flow control by default.
Например через putty

3) перегрузить Mikrotik
во время включения нажать эникей, для входа в меню.
   d - boot delay
   k - boot key
   s - serial console
   n - silent boot
   o - boot device
   f - cpu frequency
   r - reset booter configuration
   e - format nand
   w - repartition nand
   y - active partition
   g - upgrade firmware
   i - board info
   p - boot protocol
   b - booter options
   t - do memory testing
допустим там сделали format nand (кнопочка e)

4) выбрать в меню
o - boot device пункт 
n - boot from NAND, if fail then Ethernet для того, чтоб когда он не нашел наш NAND, он обратился по Ethernet.
(по умолчанию так и стоит)

5) подключится патч-кордом в последний порт роутера
(он подписан как boot) 
назначить на сетевухе произвольный статический ip.
Например 10.10.10.10/24

6) Запускаем netinstall 
в меню "Packages", "From" указываем каталог с прошивкой (найдет сам).
Жмакаем на "Net booting" там "Boot server enabled" должен быль включен
указываем ip из того же сегмента, что прописали на сетевой карте, но не тот же самый
Например 10.10.10.11 
нажимаем "Ok"

7) Перезагружаем роутер.
После включения он должен определится в netinstall
выделяем жмем install.
По окончанию жмем reboot и получаем девственный роутер. 

четверг, 1 мая 2014 г.

mikrotik ssh authentication. authorized_keys

1) # ssh-keygen -t dsa
на рабочей машине создаем dsa ключики
2) # ftp 192.168.31.1
    # ftp> put .ssh/id_dsa.pub
переносим публичный ключ в files (чем угодно)
3) # /user ssh-keys import public-key-file=id_dsa.pub user=admin
импортируем и заходим по ssh с рабочей машины, без пароля.