Главная страница | Добавить в избранное    
   

 

» Материалы за Июнь 2017 года

   
main1
pix
 

Cacti - снимаем статистику устройств по SNMP

Статьи  
pix pix pix
Необходимо снимать статистику с разных девайсов и представлять ее в наглядном виде? Тогда однозначно необходимо познакомиться с таким инструментом, как cacti. Позволяет с помощью протокола SNMP снимать статистику с устройств и потом, используя RRD-tool делать наглядные графики, будь то использование дискового пространства на файл-сервере, или загрузка интерфейсов комутатора.

cacti можно найти в портах. Что ж, это радует... Раньше cacti располагался в /usr/ports/net, но потом проект был перемещен в  /usr/ports/net-mgmt.

# cd /usr/ports/net-mgmt/cacti
# make install clean

Для самого cacti опции оставляю по дефолту. Но по ходу установки, подтягивается еще много разных вкусностей.

Cacti успешно установился. И как "правильный" порт, вывел список необходимых действий для дальнейшей настроки:

Cacti is now installed. If you intall it for the first time,
you may have to follow this steps to make it work correctly:

1. Create the MySQL database:
# mysqladmin --user=root create cacti
2. Create a mysql user/password for cacti:
(change user and/or password if required)
# echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'; FLUSH PRIVILEGES;" | mysql
3. Import the default cacti database:
# mysql cacti < /usr/local/share/cacti/cacti.sql
4. Edit /usr/local/share/cacti/include/config.php.
5. Add a line to your /etc/crontab file similar to:
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
6. Add alias in apache config for the cacti dir:
Alias /cacti "/usr/local/share/cacti/"
7. Be sure apache gives an access to the directory ('Allow from' keywords).
8. Open a cacti login page in your web browser and login with admin/admin.

Обновляем пути, и не спеша, потихоньку делаем, то что "просит" cacti. Начнем с того, что создадим БД и создадим пользователя MySQL с полными правами на созданную БД:

# rehash
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5 FreeBSD port: mysql-server-5
mysql> create database `cacti`;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'cacti'@'localhost' identified by 'cacti_db_password';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on `cacti`.* to 'cacti'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

 Импортируем дамп БД в MySQL:

# mysql -u cacti -p cacti < /usr/local/share/cacti/cacti.sql

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

# cat /usr/local/share/cacti/include/config.php

<?php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti_db_password";
$database_port = "3306";

?>

Добавляем в cron запуск поллера каждые 5 минут и перестартовываем cron:

# echo '# Cacti poller' >> /etc/crontab
# echo '*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1' >> /etc/crontab

Далее в адрессной строке браузера набиваем: http://ip_address_servera/cacti/

Если не допустили никаких ошибок, то в окне браузера откроется окошко начальной инсталяции cacti. Соглашаемся со всеми пунктами и по завершению установки попадаем на страницу авторизации. По умолчанию логин admin и пароль admin. После первой успешной авторизации будет предложено сменить пароль на какой-то другой. Установите пароль посложнее ;)

Далее рекомендую добавить себя как пользователя с полными правами, а стандартным пользователем admin не пользоваться. Пользователя guest можно вообще удалить. Для управления пользователями на закладке console в разделе Utilities выбираем пункт User Management. Чтобы добавить пользователя, в правом верхнем углу княпаем на линк Add. Далее - думаю разберетесь. Только не забудьте выставить себе полностью все права и установить галочку напротив пункта "Enabled" ;).

Также советую выставить для себя на закладке Graph Permissions политики по умолчанию. Если их переопределить с Deny на Allow, то это существенно меняет нам жизнь в лучшую сторону.

Перейдя на закладку graphs, то можно увидеть, что уже создано дефолтное дерево устройств и добавлен хост localhost. Однако графики пока не рисуются. Решить эту проблему можно настройкой SNMP на сервере.

Если вы были внимательны, то помните, что во время установки упоминался порт net-snmp. Вот его конфигурированием мы сейчас и займемся.

Первым делом создадим каталог, где будет храниться конфигурационный файл и сам файл конфигурации:

# mkdir /usr/local/etc/snmp
# touch /usr/local/etc/snmp/snmpd.conf

# echo '# SNMP' >> /etc/rc.conf
# echo 'snmpd_enable="YES"' >> /etc/rc.conf
# sh /usr/local/etc/rc.d/snmpd start
Starting snmpd.

Проверим работу:

# snmpwalk -c you_community_name -v 2c localhost

Если в ответ вывалится огромный список MIB-ов, значит все ok.

Теперь можно в cacti для localhost изменить community и добавить необходимые типы графиков. Через некоторое время эти графики можно будет лицезреть воочию на закладке graphs (не забываем, что статистика снимается раз в 5 минут, соответственно графики отрисовываются неспеша).

Советую также обратить внимание на логгирование. Тоесть - настроить ротацию логов. На одном из серверов недавно обнаружил, что лог-файл разросся до 18 гигабайт!

Итак, добавляем в /etc/newsyslog.conf такую строку:

/usr/local/share/cacti/log/cacti.log    644  3     *    $M1D0 JC

Перезапускать syslogd не нужно, поскольку /etc/newsyslog.conf проверяется по cron-у каждый час.

Еще следует отметить, что в интерфейсе придется порозбираться, поскольку возможностей много, соответственно и много всяких заморочек. Все таки, пример начальной конфигурации наведу. Предупреждаю сразу - скриншотов не будет, только текстовые название менюшек!

Итак, закладка "Console", меню "Management", пункт "Devices".

Выносим добавленный по дефолту "localhost" (проще добавить новый девайс, нежели править старый ;) ). Для этого необходимо поставить чекбокс напротив устройства, выбрать действие "Delete" и нажать кнопку "Go".

Теперь добавим даный сервер... Жмем в верхнем правом углу ссылку "Add" и заполняем поля.

  • Description: вписиваем сюда то, как должно отображаться устройство в дереве устройств. Я, обычно, вписываю DNS-имя сервера, например mail.domain.com.
  • Hostname: вписываем DNS-имя или IP-адрес этого хоста. Лично я предпочитаю IP-адреса. Поскольку мониторить будем локальный сервер, то вписываем IP локалхоста: 127.0.0.1.
  • Host Template: необходимо указать, к какому типу принадлежит даное устройство. В нашем случае - "Generic SNMP-enabled Host".
  • Disable Host: отмечаем, если необходимо отключить все проверки для данного хоста.
  • Downed Device Detection: указываем метод, по которому Cacti будет проверять, доступен ли хост. Я всегда выбираю "SNMP".
  • Ping Timeout Value: таймаут, который использует Cacti при мониторинге устройств. Оставляю по дефолту, поскольку выбран метод проверки SNMP.
  • Ping Retry Count: количество icmp-пакетов, которое отправит Cacti перед тем, как считать, что хост недоступен. Оставляю до дефолту, поскольку выбран метод проверки SNMP.
  • SNMP Version: SNMP-версия, которую использует удаленное устройство. В нашем случае - "Version 2".
  • SNMP Community: указываем наше SNMP-community (можно "подсмотреть в файле /usr/local/etc/snmp/snmpd.conf, параметр rocommunity).
  • SNMP Port: указываем порт, который используется для SNMP. Оставляем по дефолту - 161.
  • SNMP Timeout: время в милисекундах, сколько Cacti ожидает ответа. Оставляю по дефолту - 500.
  • Maximum OID's Per Get Request: максимальное количество OID-ов, которые будут передаваться в одном запросе. Оставляю по дефолту - 10.
  • Notes: здесь можно написать свои примечания.

Итак, поля заполнены необходимыми даными. Жмем кнопку "Create".

Устройство добавлено. Теперь добавим еще несколько "Data Queries", поскольку по умолчанию для "Generic SNMP-enabled Host" создается только "SNMP - Interface Statistics".

Добавим еще такие "Data Queries":

  • SNMP - Get Mounted Partitions - снимать статистику с разделов винчестера
  • SNMP - Get Processor Information - снимать статистику загрузки процессора

После добавления  "Data Queries" жмем кнопку "Save" и приступаем непосредственно с созданию графов. Жмем ссылку "Create Graphs for this Host".

Я отметил следующие графы:

SNMP - Get Mounted Partitions

  • Physical memory
  • Real memory
  • Swap space
  • /
  • /home
  • /tmp
  • /usr
  • /var

SNMP - Get Processor Information

  • 0

SNMP - Interface Statistics

  • ale0
  • em0

"Select a graph type" выставляю в значение "In/Out Bits (64-bits Counters)", поскольку net-snmp собран с поддержкой 64-битных счетчиков. Для некоторых устройств необходимо будет выставлять "In/Out Bits", если они не поддерживают 64-битные счетчики.

 Жмем "Create", и попадаем на страницу выбора цвета, которым будет отрисовыватся график загрузки процессора. Это уже дело вкуса... Определившись с цветом, еще раз жмем  "Create".

Теперь очередь за созданием дерева графов.

Путь следующий: закладка "Console", меню "Management", пункт "Graph Trees". Удаляем дефолтное дерево графов.

Теперь создадим свое новое... Лично я люблю сортировать по типам устройств, поэтому добавляю, например, такие:

  • Servers
  • Routers
  • Switches

Итак, для примера добавим дерево "Servers".

Жмем в верхнем правом углу ссылку "Add". Заполняем поля:

  • Name: Servers
  • Sorting Type: Alphabetic Ordering

Теперь можно добавить наш сервер в это дерево. В строке "Tree Items" жмем ссылку "Add" и заполняем поля:

  • Parent Item: root
  • Tree Item Type: Host
  • Host: в моем случае это mail.domain.com, а в вашем - соответственно ваш сервер.
  • Graph Grouping Style: Тип сортировки - Graph Template
  • Round Robin Archive: Hourly

Жмем кнопку "Create", и идем любоваться графиками на закладке "Graphs".

Для того, чтобы Cacti "понимал" кирилицу, необходимо при установке rrdtool отметить опцию "DEJAVU".

Если не отметили эту опцию, пересоберите rrdtool. Удаляем опции сборки:

# rm -R /var/db/ports/rrdtool

Удаляем и переустанавливаем rrdtool:

# cd /usr/ports/databases/rrdtool
#  make deinstall 
# make install clean 
# rehash



 
Автор: hellevil | 23-06-2017, 16:04 | Просмотров: 1 865 Подробнее
 
pix
 

Что такое атрибут файла?

Статьи  
pix pix pix

Что такое атрибут файла? Атрибут — это, в общем случае, некая метка (или флаг) которая сообщает операционной системе о существовании особых правил для работы с конкретным файлом. Лично для меня этой информации было недостаточно, так как она не отвечала на следующие вопросы:

  • Где хранятся атрибуты?
  • Как их увидеть или изменить?
  • Какие бывают атрибуты?
  • Как я могу применять их?

Хочу сразу отметить, что в подавляющем большинстве случаев вам вообще не придется с ними работать, но знать о том, что они есть нужно.

Где хранятся атрибуты файлов?

В процессе поиска ответа для себя мне пришлось разобраться с путаницей понятий, а так же с недостатком подробно разобранной информации на русском языке. От обоих этих недостатков я попытаюсь избавить свою заметку. Итак, место хранения атрибутов в частном случае зависит от реализации конкретной файловой системы. Я буду рассматривать в качестве примера файловую систему Ext4 в силу ее популярности в ОС Linux.

Как и во многих других файловых системах семейства UNIX\*Nix в Ext4 есть понятие inode (айнод). Изначальное название — index node — индексная точка/вершина (мне кажется, что это название лучше отображает суть). Inode — это специальная структура данных в файловой системе, которая хранит метаинформацию об объектах файловой системы — стандартных файлах, каталогах и т.д. Айноды хранятся в таблице айнодов, для которой файловая система выделяет необходимое количество блоков. (детальнее — смотри расположение блоков ext4). Под метаинформацией подразумевают отметки времени доступа, флаги, расширенные атрибуты, карты блоков данных и др. В официальной документации по ext4 те атрибуты, о которых идет речь в этой заметке, называются флагами (flags). Не путайте с расширенными атрибутами (extended attributes) — это несколько иная сущность, о которой я попытаюсь рассказать в следующей записи(это как раз та путаница). Так вот — атрибуты файла хранятся внутри айнода.

Чтоб более детально разобраться, что такое и из чего состоит айнод, какую информацию он хранит — настойчиво рекомендую прочитать Ext4 Disc Layout -официальная wiki Ext4 (для ленивых прямая ссылка на таблицу структуры inode )

Какие бывают атрибуты (флаги)?

Если обратится к man chattr то можно увидеть почти полный список атрибутов (флагов). Ниже я приведу список наиболее часто используемых атрибутов (флагов) и постараюсь вкратце описать зачем они могут понадобиться.

  • A — не обновлять время доступа к объекту. Теоретически установка этого атрибута должна повысить производительность файловой системы при работе с файлом (если не используются опции монтирования noatime, nodiaratime )
  • а — указывает, что в файл можно добавлять информацию, но нельзя удалять. Может быть установлен только суперпользователем.
  • d — указывает на то, что не нужно делать резервные копии файла. Файл будет проигнорирован командой dump
  • i — указывает на то, что файл нельзя удалять и модифицировать, так же нельзя создать ссылку на файл. Может быть установлен только суперпользователем
  • s — указывает, что при удалении файла место где был размещен файл будет перезаписано нулями. Для невозможности восстановления после удаления
  • u — указывает на то, что при удалении файла его нужно куда-то сохранить. Наоборот, чтоб гарантировать возможность восстановления после удаления.
  • c — указывает на то, что файл сжат. Перед записью в этот файл ядро сжимает данные, а чтение соответственно возвращает разархивированные данные. Об этом флаге чуть подробнее читай ниже

На самом же деле их даже больше, чем описано в руководстве утилиты chattr. В таблице структуры inode в строке i_flags можно увидеть их все. Да, и не все флаги работают в Ext4, установить их можно, но эффекта не будет (какие именно работают, а какие нет — смотри по той же ссылке выше).

Как увидеть и изменить атрибуты (флаги) файла?

Приступим к практике. Допустим, у нас есть только что созданный файл, скажем attrtest. Чтоб просмотреть его атрибуты необходимо использовать утилиту lsattr (скорее всего она уже у вас есть, так как она входит в набор утилит e2fsprogs, который входит в набор базовой поставки практически всех дистрибутивов)

 
$ lsattr ./attrtest
-------------e-- ./attrtest

Данный вывод говорит о том, что у файла нет атрибутов, кроме одного. Атрибут «e» говорит о том, что файл использует экстенты для адресации блоков на диске. Этот атрибут нельзя изменить/убрать. Экстенты это механизм, которым файловая система, с одной стороны, упрощает адресацию блоков, которые занимает файл, и уменьшает фрагментацию файла с другой (подробнее можно почитать тут в пункте 4).

Чтоб установить атрибут (флаг) нужно вызвать утилиту chattr. Добавим флаг «A» к файлу, и снова просмотрим его атрибуты.

 
$ chattr +A ./attrtest
$ lsattr ./attrtest
-------A-----e-- ./attrtest

Атрибут «i» пользователь самостоятельно установить не сможет, но сможет его увидеть, а удалить файл с таким флагом не сможет даже суперпользователь, если не снимет его предварительно.

И так, смотреть и менять атрибуты можно при помощи lsattr и chattr.

Сжатие данных

Об атрибуте «c» хочется сказать несколько слов отдельно. Теоретически кроме экономии дискового пространства выгодой от использования этого флага может быть и ускорение дисковых операций(зависит от алгоритма сжатия). Данный атрибут, к сожалению, не работает в ext4, так как данная ФС не поддерживает механизм сжатия. Но зато работает в новой файловой системе BTRFS, где на данный момент реализованы целых два алгоритма сжатия — LZO, и ZLIB. Как раз с алгоритмом LZO разработчикам удалось добиться увеличения производительности дисковых операций за счет того, что файлы стали занимать меньше места, соответственно времени на их запись и считывание нужно меньше, а операции сжатия и распаковки занимают совсем немного процессорного времени. (Если интересно — первоисточник читайте тут). К сожалению, от выборочного использования этого флага эффекта будет немного — так же как и с атрибутом «A» — для достижения максимального эффекта лучше будет использовать опцию монтирования, чтоб поведение опции было глобальным для всех файлов.

Заключение

Напоследок хочется еще раз акцентировать внимание на то, что атрибуты, то есть флаги, о которых шла речь в данной заметке не являются расширенными атрибутами файлов (extended attributes). Так же не стоит привязывать атрибуты только к файловой системе ext4 — атрибуты у файлов поддерживаются во многих файловых системах, хоть и наборы поддерживаемых атрибутов разнятся. Даже в FAT16 были атрибуты файлов.

Так же для тех, кому стало интересно про айноды и экстенты — рекомендую почитать отличную статью, где автор открывает айноду в HEX-редакторе и на примере различных манипуляций с файлом показывает поведение экстентов.



 
Автор: hellevil | 2-06-2017, 13:32 | Просмотров: 3 101 Подробнее
 
pix
 
pix
search
navi
poll
calendar
«    Июнь 2017    »
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
2627282930 
main4
pix pix pix

2007 © www.DesktopBSD.ru
Все права сохранены