Инструменты для мониторинга в Linux

Создано на основе публикации: https://habrahabr.ru/company/first/blog/310164/

dstat — показывает текущую нагрузку на сеть и жесткий диск

strace — показывает все системные вызовы выполняемые программой. Например:

strace php script.php

opensnoop, execsnoop, eBFP — показывает в реальном времени файлы открываемые программой. Например:

opensnoop -p 2016

— покажет открытые файлы процессом с PID 2016

netcat — позволяет из консоли выполнять сетевые запросы.

netstat — просмотр «занятых » сетевых портов

ngrep — просмотр сетевого трафика. Например:

ngrep -d any yandex

tcpdump — то-же просмотр сетевого трафика с более широкими возможностями.

wireshark — просмотр трафика с gui

perf — просмотр, чем занимается процессор. Например:

perf record php  -записываем что делает php
затем смотрим:
prefreport

 

MySQL операции с датами

Первое число текущего месяца:

DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY) AS 'month_create'

Первое число следующего месяца:

date_add(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY),interval 1 month) AS 'month_pay'

Последний день месяца следующего месяца:

date_add(date_add(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY),interval 2 month),interval -1 day) AS 'month_free'

Еще один будущий создатель Антивируса Савина и СавинОС..

Знакомьтесь! Это Савин Михаил.

meЮное дарование, которое просто взяло исходники «Учет ТМЦ в организации», и наплевав на то что ПО распространяется по лицензии GPL v3 (хотя думаю что по малости лет он просто не знает что это такое), затер копирайты создателей кода во всех файлах, и вставил свои.

Screenshot_3

Вот так, ни вставив ни строчки своего кода легко можно превратиться из сисадмина в матерого разработчика..

Да что стесняться в выражениях — назовем это своим именем — это просто ВОРОВСТВО.

Особенно понравилось из его бложика и страницы во вконтактике:

  • «Начальство думает, что платит деньги… пусть думает, что я работаю…«
  • «Мне плевать на всех. Я сисадминю как хочу!«

Работодатель (Argosy Technologies) интересно читают что там у их сисдамина на уме? 😉

Отправил ему письмо, с просьбой почитать что такое GPLv3, жду реакции..

Почта РФ. «Не всё еще потеряно»

Поздравляю! После смены ПО в отделениях связи, на Почте РФ теперь можно услышать следующее: «этого в новой программе нет, а если в старую переключатся — компьютер виснет. Так что идите в *опу!»

Установка monit на FreeBSD

monit — утилита, которая позволяет отслеживать запущен ли процесс. Если нет — она может его перезапустить.

1) Устанавливаем из пакетов:

pkg install sysutils/monit

2) Добавляем в автозагрузку:

в файл /etc/rc.conf добавляем строку monit_enable=»YES»

3) Создаем файл настроек на основе /usr/local/etc/monitrc.sample .Можно просто переименовать в /usr/local/etc/monitrc

Из того что нужно было мне:

set daemon 30 #интервал проверки в секундах
 set logfile /var/log/monit.log #куда пишем логи

Веб интерфейс, как лишняя «дыра» не нужен — комментируем

#set httpd port 2812 and
 # use address localhost
 # allow localhost
 # allow admin:monit
include /etc/monit.d/* #откуда берем настройки по мониторингу

4) В /etc/monit.d/ создаем файл, например monit.conf с отслеживаемыми сервисами. Например:

check process shellinaboxd with pidfile /var/run/shellinaboxd.pid
 start program = "/usr/local/etc/rc.d/shellinaboxd start"
 stop program = "/bin/sh -c 'kill `cat /var/run/shellinaboxd.pid`'"

Вот пример конфига который получился в конце концов у меня:

set mailserver
    mail.erfwerfwer.ru
    USERNAME "fser@erfwer.ru"
    PASSWORD "й423523452345"
set alert init@уцвцув.ru
set mail-format {from: цувцу@цувцувцу.ru}

check process mpd5 with pidfile /var/run/mpd5.pid
	start program = "/usr/local/etc/rc.d/mpd5 start"
	stop program = "/bin/sh -c 'kill `cat /var/run/mpd5.pid`'"
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert		
check process radiusd
	matching "radiusd"
	start program = "/usr/local/etc/rc.d/radiusd start"
	stop program = "/usr/bin/killall radiusd"
	if cpu usage > 95% for 10 cycles then restart
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert		
check process mysqld
	matching "mysqld"
	start program = "/usr/local/etc/rc.d/mysql-server start"
	stop program = "/usr/bin/killall mysqld"
	if cpu usage > 95% for 10 cycles then restart
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert		
check process db2dhcp
	matching "db2dhcp"
	start program = "/usr/local/etc/rc.d/db2dhcp.sh start"
	stop program = "/usr/bin/killall db2dhcp"
	if cpu usage > 95% for 10 cycles then restart
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert	
check process squid
	matching "squid"
	start program = "/usr/local/etc/rc.d/squid start"
	stop program = "/usr/bin/killall squid"
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert		
check process named
	matching "named"
	start program = "/usr/sbin/named -t /var/named -u bind"
	stop program = "/usr/bin/killall named"
	if cpu usage > 95% for 10 cycles then restart
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert		
check process httpd
	matching "httpd"
	start program = "/usr/local/etc/rc.d/apache22 start"
	stop program = "/usr/bin/killall apache22"
	if cpu usage > 95% for 10 cycles then restart
	if cpu > 60% for 2 cycles then alert
	if not exist then restart
	if not exist for 2 cycles then alert

Жизнь замечательных грибов