<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zabbix &#8902; Clip-Clap</title>
	<atom:link href="https://clip-clap.ru/category/it/%D1%81%D0%BE%D1%84%D1%82-%D0%B8-%D0%BE%D1%81/zabbix/feed/" rel="self" type="application/rss+xml" />
	<link>https://clip-clap.ru/category/it/софт-и-ос/zabbix/</link>
	<description></description>
	<lastBuildDate>Sat, 05 Dec 2020 21:51:15 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>

<image>
	<url>https://clip-clap.ru/wp-content/uploads/2020/07/cropped-favicon-32x32.png</url>
	<title>Zabbix &#8902; Clip-Clap</title>
	<link>https://clip-clap.ru/category/it/софт-и-ос/zabbix/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Установка ZABBIX на UBUNTU</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-zabbix-%d0%bd%d0%b0-ubuntu/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-zabbix-%d0%bd%d0%b0-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 05 Dec 2020 21:51:13 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=3095</guid>

					<description><![CDATA[<p>Zabbix &#8212; это проект с открытым исходным кодом для мониторинга сетей и приложений. В набор приложений Zabbix входит агент для</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-zabbix-%d0%bd%d0%b0-ubuntu/">Установка ZABBIX на UBUNTU</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Zabbix &#8212; это проект с открытым исходным кодом для мониторинга сетей и приложений. В набор приложений Zabbix входит агент для удаленного мониторинга серверов, также возможен мониторинг через SNMP, ICMP или TCP, а также других протоколов. Можно настроить мониторинг с помощью агента и получать максимум информации, или просто проверять доступность с помощью одного из возможных протоколов.</p>



<p>Кстати говоря, Zabbix разработан программистом из России. В этой небольшой статье мы рассмотрим как выполняется установка Zabbix на Ubuntu или Debian. Поговорим о настройке клиента и сервера для работы программы и мониторинга всего необходимого.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Обзор Zabbix. То, что вы не знали и боялись спросить." width="800" height="450" src="https://www.youtube.com/embed/vlsf7uXxvAw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>


</br>



<h2 class="wp-block-heading">УСТАНОВКА СЕРВЕРА ZABBIX</h2>



<p>Перед тем как мы сможем установить zabbix ubuntu 17.04, 16.04 и в других версиях, потребуется кое-что настроить. Нужно установить веб-сервер, MySQL и PHP. Если эти сервисы у вас уже настроены, то просто можете пропустить этот шаг.</p>



<h3 class="wp-block-heading">УСТАНОВКА APACHE, PHP, MYSQL</h3>



<p>Для установки выполните такие команды:</p>



<p><code> sudo apt update<br> sudo apt install apache2<br> sudo apt install mysql-server<br> sudo apt install php php-cli php-common php-mysql</code></p>



<p>Дальше необходимо настроить правильный часовой пояс в php.ini. Вам нужна секция Data и строка timezone:</p>



<p><code>[Date]<br>date.timezone = 'Europe/Kiev'</code></p>



<h3 class="wp-block-heading">ДОБАВЛЕНИЕ РЕПОЗИТОРИЯ</h3>



<p>Репозиторий Zabbix добавляется в систему очень необычным способом так же, как и в CentOS. Вам нужно всего лишь установить один deb пакет. Вы можете скачать нужную версию по <a href="http://repo.zabbix.com/zabbix/" target="_blank" rel="noreferrer noopener nofollow">ссылке</a>.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-50-52-768x4321-1.png" alt="" class="wp-image-3096" width="1145" height="644" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-50-52-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-50-52-768x4321-1-300x169.png 300w" sizes="(max-width: 1145px) 100vw, 1145px" /></figure>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-52-01-768x4321-1.png" alt="" class="wp-image-3097" width="1140" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-52-01-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-14-52-01-768x4321-1-300x169.png 300w" sizes="(max-width: 1140px) 100vw, 1140px" /></figure>



<p>Например, можно использовать wget для загрузки файла:</p>



<p><code>&nbsp;wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb</code></p>


</br>



<p>Если у вас другая операционная система, посмотрите список файлов на сервере через браузер и выберите нужный установщик. Затем установка zabbix 3.2 на Ubuntu:</p>



<p><code> sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb<br> sudo apt-get update</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-01-58-768x4321-1.png" alt="" class="wp-image-3098" width="1139" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-01-58-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-01-58-768x4321-1-300x169.png 300w" sizes="(max-width: 1139px) 100vw, 1139px" /></figure>


</br>



<h3 class="wp-block-heading">УСТАНОВКА И НАСТРОЙКА ZABBIX</h3>



<p>Когда репозиторий будет добавлен, можно перейти к настройке самого сервера Zabbix. Для установки программ выполните:</p>



<p><code> sudo apt install zabbix-server-mysql zabbix-frontend-php</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-41-04-768x4321-1.png" alt="" class="wp-image-3099" width="1140" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-41-04-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-41-04-768x4321-1-300x169.png 300w" sizes="(max-width: 1140px) 100vw, 1140px" /></figure>



<p>Как я уже говорил, для работы программы понадобится база данных. Сейчас нам предстоит создать ее и выдать все необходимые привилегии пользователю:</p>



<p><code>&nbsp;mysql -u root -p</code></p>



<p><code>mysql> CREATE DATABASE zabbixdb;<br>mysql> ALTER DATABASE zabbixdb CHARACTER SET utf8 COLLATE utf8_general_ci;<br>mysql> GRANT ALL on zabbixdb.* to zabbix@localhost IDENTIFIED BY 'password';<br>mysql> FLUSH PRIVILEGES;</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-57-16-768x4321-1.png" alt="" class="wp-image-3100" width="1143" height="644" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-57-16-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-16-57-16-768x4321-1-300x169.png 300w" sizes="(max-width: 1143px) 100vw, 1143px" /></figure>



<p>Для нормальной работы Zabbix нужна кодировка базы данных UTF-8, если вы создадите базу в кодировке utf8mb4, то получите ошибку: &#171;Specified key was too long; max key length is 767 bytes&#187;. Дальше нужно загрузить все таблицы в базу данных, они находятся в папке /usr/share/zabbix-server-mysql/. Вместо zabbix и zabbixdb нужно указать своего пользователя и имя базы данных:</p>



<p><code> zcat schema.sql.gz | mysql -u zabbix -p zabbixdb<br> zcat data.sql.gz | mysql -u zabbix -p zabbixdb<br> zcat images.sql.gz | mysql -u zabbix -p zabbixdb</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-50-44-768x4321-1.png" alt="" class="wp-image-3101" width="1137" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-50-44-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-50-44-768x4321-1-300x169.png 300w" sizes="(max-width: 1137px) 100vw, 1137px" /></figure>



<p>Чтобы Zabbix смог подключиться к базе данных нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_server.conf и указать там данные аутентификации:</p>



<p><code> sudo vi /etc/zabbix/zabbix_server.conf</code></p>


</br>



<p>DBHost=localhost<br>DBName=zabbixdb<br>DBUser=zabbix<br>DBPassword=password</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-19-768x4321-1.png" alt="" class="wp-image-3102" width="1136" height="639" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-19-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-19-768x4321-1-300x169.png 300w" sizes="(max-width: 1136px) 100vw, 1136px" /></figure>



<p>Далее, включаем конфигурационный файл zabbix для apache2:</p>



<p><code>&nbsp;sudo a2enconf zabbix-frontend-php</code></p>



<p>Теперь нужно перезапустить Zabbix и Apache, чтобы применить изменения:</p>



<p><code> sudo service apache2 restart<br>$ sudo service zabbix-server restart</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-41-768x4321-1.png" alt="" class="wp-image-3103" width="1140" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-41-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-00-41-768x4321-1-300x169.png 300w" sizes="(max-width: 1140px) 100vw, 1140px" /></figure>



<p>Установка и настройка Zabbix Ubuntu почти завершена, осталось настроить веб-интерфейс.</p>


</br>



<h3 class="wp-block-heading">НАСТРОЙКА ВЕБ-ИНТЕРФЕЙСА ZABBIX</h3>



<p>Веб-интерфейс программы готов к работе, теперь вы можете его открыть, набрав в адресной строке http://адрес_сервера/zabbix/</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-03-33-768x4321-1.png" alt="" class="wp-image-3104" width="1143" height="644" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-03-33-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-03-33-768x4321-1-300x169.png 300w" sizes="(max-width: 1143px) 100vw, 1143px" /></figure>



<p>На первой странице нажмите<strong> &#171;Next&#187;</strong>. На следующем шаге программа проверит правильно ли настроен интерпретатор PHP:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-18-13-768x4321-1.png" alt="" class="wp-image-3105" width="1142" height="642" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-18-13-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-18-13-768x4321-1-300x169.png 300w" sizes="(max-width: 1142px) 100vw, 1142px" /></figure>



<p>Дальше укажите параметры доступа к базе данных, они будут использоваться для работы веб-интерфейса:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-19-06-768x4321-1.png" alt="" class="wp-image-3106" width="1137" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-19-06-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-19-06-768x4321-1-300x169.png 300w" sizes="(max-width: 1137px) 100vw, 1137px" /></figure>



<p>На следующем шаге можно изменить ip и порт, на котором будет слушать Zabbix:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-51-09-768x4321-1.png" alt="" class="wp-image-3107" width="1146" height="645" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-51-09-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-51-09-768x4321-1-300x169.png 300w" sizes="(max-width: 1146px) 100vw, 1146px" /></figure>


</br>



<p>Последний шаг, проверьте все ли верно и не нужно ли чего менять:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-03-768x4321-1.png" alt="" class="wp-image-3108" width="1140" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-03-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-03-768x4321-1-300x169.png 300w" sizes="(max-width: 1140px) 100vw, 1140px" /></figure>



<p>Если получаете такую ошибку, то файл нужно скачать и сохранить в /etc/zabbix/ вручную:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-27-768x4321-1.png" alt="" class="wp-image-3109" width="1140" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-27-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-52-27-768x4321-1-300x169.png 300w" sizes="(max-width: 1140px) 100vw, 1140px" /></figure>



<p>wget http://ip_сервера/zabbix/setup.php?save_config=1<br>sudo mv setup.php\?save_config\=1 /etc/zabbix/zabbix.conf.php</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-54-45-768x4321-1.png" alt="" class="wp-image-3110" width="1137" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-54-45-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-54-45-768x4321-1-300x169.png 300w" sizes="(max-width: 1137px) 100vw, 1137px" /></figure>



<p>Владельца файла нужно изменить на www-data, чтобы программа имела к нему права доступа:</p>



<p><code>&nbsp;sudo chown www-data /etc/zabbix/zabbix.conf.php</code></p>


</br>



<p>Теперь вернитесь в браузер и нажмите <strong>&#171;Finish&#187;</strong>:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-56-05-768x4321-1.png" alt="" class="wp-image-3111" width="1137" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-56-05-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-56-05-768x4321-1-300x169.png 300w" sizes="(max-width: 1137px) 100vw, 1137px" /></figure>



<p>Перед вами откроется окно ввода логина и пароля. Используйте стандартные значения, логин admin и пароль zabbix.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-59-34-768x4321-1.png" alt="" class="wp-image-3112" width="1142" height="642" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-59-34-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-17-59-34-768x4321-1-300x169.png 300w" sizes="(max-width: 1142px) 100vw, 1142px" /></figure>



<p>Вот и все, теперь установка Zabbix Ubuntu завершена и вы можете переходить к настройке.</p>


</br>



<h2 class="wp-block-heading">УСТАНОВКА ZABBIX AGENT</h2>



<p>Чтобы начать наблюдение за удаленным хостом нам понадобится Zabbix Agent. Эта программа собирает все доступные данные о нагрузке на систему, использовании ресурсов и передает все это на сервер Zabbix. Можно настроить активную проверку, когда агент будет отправлять все данные на сервер периодически или пассивную, когда данные будут отправляться по запросу.</p>



<p>Поэтому нужно установить Zabbix Agent во всех системах, за которыми нужно наблюдать. Для установки используется тот же репозиторий что и для сервера, смотрите выше как добавить. Затем используйте команду для установки:</p>



<p><code>&nbsp;sudo apt-get install zabbix-agent</code></p>



<p>Теперь отредактируем файл, нам нужно указать IP адрес сервера и имя хоста:</p>



<p><code>&nbsp;sudo vi&nbsp;/etc/zabbix/zabbix_agentd.conf</code></p>



<p><code>Server=192.168.1.2<br>Hostname=Zabbix</code></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-18-57-768x4321-1.png" alt="" class="wp-image-3113" width="1139" height="641" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-18-57-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-18-57-768x4321-1-300x169.png 300w" sizes="(max-width: 1139px) 100vw, 1139px" /></figure>



<p>После изменения конфигурации нужно перезапустить сервис zabbix-agent:</p>



<p><code> sudo service zabbix-agent restart</code></p>


</br>



<p>Теперь вы можете добавить новый хост в Zabbix и наблюдать за его состоянием через панель.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-20-28-768x4321-1.png" alt="" class="wp-image-3114" width="1142" height="642" srcset="https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-20-28-768x4321-1.png 768w, https://clip-clap.ru/wp-content/uploads/2020/12/Snimok-ekrana-ot-2017-06-12-18-20-28-768x4321-1-300x169.png 300w" sizes="(max-width: 1142px) 100vw, 1142px" /></figure>



<p>Теперь вы знаете, как выполняется установка Zabbix на Ubuntu 16.04. Несмотря на то что во время установки можно встретить несколько подводных камней, все проходит достаточно просто. Надеюсь, информация была полезной для вас.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Zabbix - Agent installation on Linux" width="800" height="600" src="https://www.youtube.com/embed/Bt5yg9YLzgU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>


<p>[scn3</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-zabbix-%d0%bd%d0%b0-ubuntu/">Установка ZABBIX на UBUNTU</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-zabbix-%d0%bd%d0%b0-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка мониторинга asterisk в zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-asterisk-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-asterisk-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 19:52:22 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[asterisk]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1566</guid>

					<description><![CDATA[<p>Сервер телефонии asterisk востребованный и популярный функционал на сегодняшний день. Ранее я подробно о нем рассказывал и показывал, как его</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-asterisk-%d0%b2-zabbix/">Настройка мониторинга asterisk в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сервер телефонии asterisk востребованный и популярный функционал на сегодняшний день. Ранее я подробно о нем рассказывал и показывал, как его использовать в среднестатистическом офисе. Сегодня хочу рассказать, как настроить мониторинг asterisk с помощью сервера мониторинга zabbix. Я подробно расскажу о метриках, которые буду снимать и в конце представлю готовый шаблон для использования.</p>



<h2 class="wp-block-heading">Введение</h2>



<p>У меня есть подробный материал по <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/asterisk-sip-%d0%b0%d1%82%d1%81-%d0%b4%d0%bb%d1%8f-%d0%be%d1%84%d0%b8%d1%81%d0%b0-%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%86%d0%b8%d1%8f/" target="_blank" rel="noreferrer noopener">пошаговой настройке asterisk</a>. В нем не хватает для полноты картины мониторинга. Без него обслуживание и поддержка работоспособности сервера затруднительна. Я всегда стараюсь все, что можно, завести на мониторинг. Так спокойнее живется. Ранее я писал о <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">мониторинге транков</a>. В принципе, на простейший вопрос по доступности транков он отвечает, но в процессе эксплуатации я много раз переделывал этот мониторинг, потому что он малоинформативен.</p>



<p>Например, у вас периодически отваливает один из транков. Мониторинг вам об этом говорит, но вы не знаете, что за транк отвалился и по какой причине. Надо идти на сервер и проверять глазами. Когда на одном из серверов у меня начали глючить пару транков, я не выдержал и переделал этот мониторинг. А заодно и добавил некоторые другие проверки, которые мне показались важными. В итоге получился законченный шаблон для мониторинга всего сервера asterisk. Далее я расскажу обо всем подробнее.</p>



<p>Я все настраивал на сервере с версией 3.2, агенты той же версии. Работоспособность в 3.4 не проверял, но, по идее, все должно работать и там. Если у вас еще нет сервера мониторинга, то можете его установить и настроить &#8212; <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-zabbix-3-2-%d0%bd%d0%b0-centos-7/" target="_blank" rel="noreferrer noopener">3.2</a> или 3.4 на Centos 7 или <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-zabbix-3-4-%d0%bd%d0%b0-debian-9/" target="_blank" rel="noreferrer noopener">3.4 на Debian 9</a>.</p>



<h2 class="wp-block-heading">Параметры мониторинга asterisk</h2>



<p>В интернете есть примеры мониторинга asterisk. Кое-что я оттуда подсмотрел, но готового решения, которое бы мне подошло полностью, я не увидел, поэтому решил сделать по-своему. Я подумал в решил, что мне полезны для мониторинга следующие метрики:</p>



<ol><li>Состояние транков. Если один из них отваливается, я узнаю о его имени уже в оповещении на почте.</li><li>Состояние самой службы asterisk на сервере. Тут все просто &#8212; либо работает, либо нет.</li><li>Состояние работы программы fail2ban. Тоже все просто &#8212; либо работает, либо нет.</li><li>Наличие цепочек fail2ban в таблице iptables. Эта проверка гарантирует, что fail2ban не только запущен, но и успешно блокирует нарушителей.</li><li>Факт перезапуска сервиса asterisk. Как бонус к этой метрике &#8212; uptime службы астериска.</li><li>Количество активных разговоров в данный момент.</li></ol>



<p>Небольшие комментарии к метрикам. Если сервер смотрит в интернет, то обязательно наличие iptables и fail2ban. Боты будут регулярно к вам стучаться и перебирать учетки. Так что следить за работой этих служб необходимо. По транкам я уже сказал, это один из основных параметров, так как время от времени они отваливаются. Гораздо чаще, чем сами сервисы. На всякий случай будем следить за работой сервиса астериск на сервере. Он хоть у меня обычно и не падает, даже не припомню такого, но теоретически с ним это может происходить. Мониторинг перезагрузки и аптайма службы сделан в основном для любопытства. Практической пользы в этой метрике я не вижу, если вы единственный админ на сервере и без вас его никто не перезапускает. Мониторинг за количеством активных звонков в asterisk сделан для того, чтобы можно было оценить примерную нагрузку и занятость линий.</p>



<p>Я больше не придумал, на что еще стоит обратить внимание. Некоторые считают количество звонков в день, количество транков, пиров, их статус. Я лично не вижу в этом большого смысла. Если кто-то считает, что есть еще важные параметры в asterisk, которые надо мониторить, прошу поделиться.</p>



<h2 class="wp-block-heading">Настройка zabbix-agent</h2>



<p>Для мониторинга за asterisk, я буду использовать один скрипт и несколько обработанных выводов из запросов к астериску. Начнем со скрипта. Он будет проверять статус транков и если какой-либо из них будет в offline, назовет его. Кладем этот скрипт в директорию&nbsp;<em>/etc/zabbix/scripts</em>.</p>



<pre class="wp-block-preformatted"># cat /etc/zabbix/scripts/asterisk.trunk-with-name.sh</pre>



<pre class="wp-block-preformatted">#!/bin/bash

# Получаем количество всех транков в системе
total=`sudo asterisk -rx 'sip show registry' | sed -n '/registrations/p' | awk '{print $1}'`
# Получаем число активных транков
active=`sudo asterisk -rx 'sip show registry' | sed -n '/Registered/p' | wc -l`
# Получаем имена транков с проблемам
offline=`sudo asterisk -rx 'sip show registry' | sed -n '/Request\|Rejected\|Authentication\|Auth/p' | awk '{print $3}'`
# Сравниваем общее число с числом активных транков и выводим сообщение об их состоянии
if [ $active -lt $total ]
then
echo Trunks offline $offline
else
echo All trunks are online
fi</pre>



<p>Я все прокомментировал. Добавлю только пояснение к регулярке, которая определяет проблемные транки. Я знаком со следующими состояниями транков, когда они не работают:</p>



<ul><li>Request Sent</li><li>No Authentication</li><li>Auth. Sent</li><li>Rejected</li></ul>



<p>Соответственно, эти состояния я и ищу. Если один из транков находится в одном из этих состояний, то он считается проблемным.</p>



<p>Далее создаем файл конфигурации zabbix с UserParameters в&nbsp;<em>/etc/zabbix/zabbix_agentd.d</em>.</p>



<pre class="wp-block-preformatted"># cat /etc/zabbix/zabbix_agentd.d/asterisk.conf</pre>



<pre class="wp-block-preformatted"># Статус службы fail2ban
UserParameter=asterisk.fail2ban_status,ps cax | grep fail2ban | wc -l
# Количество цепочек fail2ban в iptables
UserParameter=asterisk.fail2ban_chain,iptables -nL | grep Chain | grep -E 'f2b|fail2ban' | wc -l
# Время работы службы asterisk
UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep --text -i "System uptime:" | gawk '{print $3}'
# Количество активных разговоров
UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1
# Статус транков
UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk-with-name.sh
# Статус службы asterisk
UserParameter=asterisk.asterisk_status,ps cax | grep asterisk | wc -l
</pre>



<p>Некоторые из приведенных метрик требуют права root для своего исполнения. Скажу честно, мне было лениво разбираться с разрешениями и я просто запустил zabbix с правами root. Для этого в его конфиге&nbsp;<em>/etc/zabbix/zabbix_agentd.conf</em>&nbsp;раскомментировал следующую строку:</p>



<pre class="wp-block-preformatted">AllowRoot=1</pre>



<p>После этого можно перезапустить zabbix-agent и проверить работу будущих итемов.</p>



<pre class="wp-block-preformatted"># systemctl restart zabbix-agent</pre>



<p>Проверяем, насколько корректно агент возвращает указанные значения.</p>



<pre class="wp-block-preformatted">&nbsp;# zabbix_agentd -t asterisk.asterisk_status
asterisk.asterisk_status [t|2]</pre>



<pre class="wp-block-preformatted"># zabbix_agentd -t asterisk.fail2ban_chain
asterisk.fail2ban_chain [t|2]</pre>



<pre class="wp-block-preformatted"># zabbix_agentd -t asterisk.trunk
asterisk.trunk [t|All trunks are online]</pre>



<p>Все в порядке. В завершении настройки агента, поясню некоторые моменты для тех, кто не очень разбирается в bash скриптах. Для мониторинга статусов служб я просто вывожу список всех процессов, вычленяю из него нужный мне процесс, в данном случае asterisk или fail2ban и подсчитываю количество этих процессов. Далее в шаблоне я просто буду проверять число этих процессов. Если оно будет равно 0, значит процессы не работают.</p>



<p>Для анализа цепочки iptables я также обрабатываю ее вывод, ищу строки со словами fail2ban и подсчитываю их количество. Если они равны 0, значит fail2ban не работает, либо работает, но не добавляет правила в iptables, что по большому счету и равно тому, что он не работает.</p>



<p>Для мониторинга активных разговоров, я обрабатываю соответствующий вывод asterisk, вырезаю лишние строки и оставляю только необходимое мне число.</p>



<h2 class="wp-block-heading">Мониторинг asterisk в zabbix сервере</h2>



<p>Всю теорию я изложил выше. Осталось только добавить готовый шаблон на сервер и посмотреть на результат. Скачиваем шаблон &#8212; <a href="https://clip-clap.ru/wp-content/uploads/2020/08/zabbix-asterisk-template.zip" target="_blank" rel="noreferrer noopener">zabbix-asterisk-template.xml</a> и импортируем его на сервер. В шаблоне присутствуют 6 элементов данных, которые мы определили в агенте, 5 триггеров и 1 график просто для красоты, чтобы был :). В этом шаблоне надобности в графиках нет. Остановлюсь подробнее на триггерах.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-01.png" alt="Триггеры шаблона мониторинга asterisk" class="wp-image-5807"/></a></figure></div>



<figure class="wp-block-table"><table><tbody><tr><td>Asterisk down on {HOST.NAME}</td><td>Срабатывает, если последняя проверка количества запущенных процессов астериск вернула 0.</td></tr><tr><td>Asterisk restarted on {HOST.NAME}</td><td>Тригер реагирует на изменение uptime службы. Если он стал меньше 300 секунд, то считается, что служба была перезапущена.</td></tr><tr><td>Fail2ban down on {HOST.NAME}</td><td>&nbsp;Срабатывает, если последняя проверка количества запущенных процессов fail2ban вернула 0.</td></tr><tr><td>Fail2ban inactive on {HOST.NAME}</td><td>&nbsp;Проверяет, есть ли в правилах iptables цепочки fail2ban. Если нет, срабатывает.</td></tr><tr><td>Trunk not registered on {HOST.NAME}</td><td>&nbsp;Срабатывает, если хотя бы одна из регистраций отвалилась.</td></tr></tbody></table></figure>



<p>Первые 4 триггера очевидны, по ним комментировать нечего. Остановлюсь на последнем с проверкой транков. Данный триггер проверяет текстовую строку &#171;All trunks are online&#187;, которую возвращает итем. Если 2 раза подряд ее не было, значит проблема, и идет оповещение. Проблема закрывается, когда она же появляется 2 раза подряд. Сделал специально 2 проверки, чтобы не было ложных срабатываний на моментах перерегистрации или кратковременных сбоев, которые не требуют вмешательства.</p>



<p>После применения шаблона на хостах, увидите примерно такую картинку в &#171;Последних данных&#187;.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-02.png" alt="Мониторинг asterisk в zabbix" class="wp-image-5808"/></a></figure></div>



<p>Если какой-то транк отвалится, то в оповещении на почте будет его название. У меня вот так выглядят подобные оповещения.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/10/zabbix-monitoring-asterisk-03.png" alt="Оповещение о проблеме с транком в астериск" class="wp-image-5809"/></a></figure></div>



<p>На этом по мониторингу asterisk в zabbix все. Надеюсь, раскрыл тему достаточно подробно и понятно.</p>



<h2 class="wp-block-heading">Заключение</h2>



<p>Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!</p>



<p>Уже в процессе написания статьи понял, чего в ней не хватает. Мониторинг пиров все же нужен, так как не всегда подключение к провайдеру идет с регистрацией. Если ее нет, то за провайдерским пиром надо бы наблюдать. Возможно, дополню статью позже. Сервера, на которых я все проверял не имели таких пиров, поэтому упустил этот момент, не обратил внимание.</p>



<p>Конечно, не очень правильно запускать zabbix от root. Тут я схалявил, но у меня есть оправдание &#8212; в заббиксе нет нормального средства для дебага не работающих скриптов. Итем просто становится неподдерживаемым и частенько приходится гадать, в чем же проблема. Даже когда выставляешь все необходимые права, все перепроверяешь, на стороне агента запускаешь и все работает как надо. Но на сервере итем не принимает данные.</p>



<p>Данный шаблон должен работать вместе со стандартным шаблоном для linux. Я видел в сети примеры шаблонов мониторинга asterisk, куда были добавлены метрики таких параметров сервера, как память, процессор, сеть и т.п. Не вижу смысла в таком подходе. Шаблоны надо максимально разделять, чтобы ими было удобнее пользоваться и не нагружать сервера лишними метриками. Я под каждый функционал сервера делаю отдельный шаблон. Примеры таких шаблонов можно посмотреть в моей рубрике <a href="https://clip-clap.ru/category/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/" target="_blank" rel="noreferrer noopener">zabbix</a>.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-asterisk-%d0%b2-zabbix/">Настройка мониторинга asterisk в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-asterisk-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг размера бэкапа в Zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 19:15:40 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[backup]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1539</guid>

					<description><![CDATA[<p>Ранее я уже рассказывал, как мониторить бэкапы с помощью zabbix. Захотелось собирать информацию о размере бэкапа, чтобы смотреть тренды по его увеличению</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/">Мониторинг размера бэкапа в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ранее я уже рассказывал, как <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%be%d0%b2-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">мониторить бэкапы</a> с помощью zabbix. Захотелось собирать информацию о размере бэкапа, чтобы смотреть тренды по его увеличению или уменьшению. Немного пораскинул мозгами и придумал решение задачи по мониторингу размера бэкапов с помощью уже привычного инструмента UserParameter.</p>


</br>



<h2 class="wp-block-heading">Введение</h2>



<p>Я уже много раз использовал внешние скрипты и&nbsp;UserParameter для мониторинга в zabbix. Не буду подробно на этом останавливаться. Приведу список своих материалов по этой теме:</p>



<ul><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/" target="_blank" rel="noreferrer noopener">Мониторинг информации из текстовых файлов</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/" target="_blank" rel="noreferrer noopener">Следим за временем делегирования домена в zabbix</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%be%d0%b2-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">Мониторинг бэкапов</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">Статус транков в астериск</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">Мониторинг рейда mdadm</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">Наблюдение за mysql репликацией с помощью заббикс</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">Состояние веб сервера nginx и php-fpm</a></li><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/" target="_blank" rel="noreferrer noopener">Мониторинг температуры windows сервера</a></li></ul>



<p>Использовать будем такой же подход. У нас будет 2 скрипта. Первый будет собирать информацию о размерах папок с файлами, второй будет передавать сформированные данные в заббикс. Делать все будем раз в сутки, чаще нет смысла, так как у меня бэкапы выполняются с суточным интервалом. Сами бэкапы представляют из себя не отдельные файлы-архивы, а папки. Настроено все примерно так же, как в статье про <a href="https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/" target="_blank" rel="noreferrer noopener">настройку backup с помощью rsync</a>.</p>


</br>



<h2 class="wp-block-heading">Скрипты по сбору информации о размере бэкапов</h2>



<p>Первый скрипт будет проверять размер каталогов и записывать результат в текстовый файл. Сначала я собирал размер в байтах, потом решил скриптом преобразовывать в гигабайты, но через некоторое время нашел способ в заббиксе преобразовывать размер из байтов в гигабайты и снова стал в заббикс передавать только байты. Так оказалось удобнее всего. Создаем папку для скриптов и кладем туда сам скрипт:</p>



<pre class="wp-block-preformatted"># mkdir&nbsp;/etc/zabbix/scripts
# mcedit&nbsp;/etc/zabbix/scripts/size-backup-dir.sh</pre>



<pre class="wp-block-preformatted">#!/bin/bash

# Файл с информацией о размере папок
logfile=/etc/zabbix/scripts/size-log.txt

# Удаляем файл предыдущей работы скрипта
rm $logfile

# Определяем размер папки
size_1c=`du -s /mnt/data/backup/1c | awk '{print $1}'`

# Записываем результат в текстовый файл
echo 1c $size_1c &gt;&gt; $logfile</pre>



<p>Если у вас несколько папок с бэкапами, добавляете их все в скрипт. Можно автоматизировать этот процесс, задать переменные &nbsp;с названиями папок с бэкапами и в цикле их перебирать, но у меня это не получилось, так как пути сильно разные. Пришлось все в ручную добавлять. Я привожу пример с одной папкой. Остальные по аналогии добавляете, не забывая изменять имена переменных, в которые передается размер директории.</p>



<p>Результатом работы скрипта будет файл следующего содержания:</p>



<pre class="wp-block-preformatted"># cat size-log.txt
1c 41374052</pre>



<figure class="wp-block-table"><table><tbody><tr><td>1с</td><td>имя бэкапа</td></tr><tr><td>41374052</td><td>размер бэкапа в&nbsp;байтах</td></tr></tbody></table></figure>



<p>Необходимо добавить этот скрипт в крон и выполнять раз в сутки. Находите конфиг крона в вашей системе и добавляете туда:</p>



<pre class="wp-block-preformatted">30 &nbsp; &nbsp; &nbsp;15 &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp;/etc/zabbix/scripts/size-backup-dir.sh</pre>



<p>Время выбираете на свое усмотрение. В данном случае у меня отдельный сервер для бэкапов, его можно днем напрячь, когда он простаивает.</p>



<p>Дальше рисуем скрипт, который будет передавать данные в заббикс:</p>



<pre class="wp-block-preformatted"># mcedit /etc/zabbix/scripts/send-zabbix-size.sh</pre>



<pre class="wp-block-preformatted">#!/bin/bash
cat /etc/zabbix/scripts/size-log.txt | grep $1 | cut -d " " -f 2</pre>



<p>Проверяем его работу следующим образом:</p>



<pre class="wp-block-preformatted"># ./send-zabbix-size.sh 1c
41374052</pre>



<p>На выходе просто цифра с размером, которая уходит на сервер заббикса. То, что нужно. Важно не забыть один момент, иначе ничего не зааработает. Скрипту нужно назначить владельца zabbix, чтобы агент мог его запускать:</p>



<pre class="wp-block-preformatted"># chown zabbix.&nbsp;/etc/zabbix/scripts/send-zabbix-size.sh</pre>



<p>Если этого не сделать, получите ошибку в логе агента:</p>



<pre class="wp-block-preformatted">sh: 1: /etc/zabbix/scripts/send-zabbix-size.sh: Permission denied</pre>


</br>



<h2 class="wp-block-heading">Настраиваем zabbix агент</h2>



<p>Делаем все как обычно. Идем в папку&nbsp;<em>/etc/zabbix/zabbix_agentd.conf.d</em>&nbsp;и создаем файл с пользовательскими параметрами:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/zabbix/zabbix_agentd.conf.d/backup-size.conf</pre>



<pre class="wp-block-preformatted">UserParameter=size.1c,/etc/zabbix/scripts/send-zabbix-size.sh 1c</pre>



<p>Сохраняем файл. Перезапускаем агента и проверяем в консоли, что улетит на сервер:</p>



<pre class="wp-block-preformatted"># zabbix_agentd -t size.1c
size.1c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [t|41374052]</pre>



<p>Все в порядке, агент настроили. Осталось добавить новый итем на сервер.</p>


</br>



<h2 class="wp-block-heading">Добавляем новый итем на сервер мониторинга zabbix</h2>



<p>Кратко расскажу, что делать на сервере. Раньше я уже неоднократно рассматривал этот момент, поэтому не буду на нем подробно останавливаться. Больше информации можете получить в предыдущих статьях, которые я привел в самом начале. Идем в веб интерфейс. Выбираем хост, на котором мы только что настраивали агент, заходим в список итемов и добавляем новый:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-backup-size-01-1.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-backup-size-01-1.png" alt="Создание итема размера бэкапа" class="wp-image-4216"/></a></figure></div>



<figure class="wp-block-table"><table><tbody><tr><td>Name</td><td>Произвольное имя итема.</td></tr><tr><td>Key</td><td>Название ключа, должно быть точно таким же, как в UserParameter в агенте.</td></tr><tr><td>Update interval</td><td>Время обновления, в данном случае раз в минуту для отладки, потом рекомендую ставить раз в сутки.</td></tr><tr><td>Units</td><td>Единица измерения, в данном случае байты.</td></tr><tr><td>Use custom multiplier</td><td>Пользовательский множитель для корректного перевода в гигабайты</td></tr></tbody></table></figure>



<p>Сохраняем новый итем и ждем поступления данных. В случае указания большого интервала обновления, к примеру, раз в сутки, я не знаю, когда заббикс первый раз проведет опрос. Будет&nbsp;здорово, если кто-нибудь подскажет. Меня всегда интересовал этот момент. Во время отладки я ставлю маленький интервал обновления, например минуту или две. После того, как убеждаюсь, что все работает корректно, изменяют интервал на необходимый.</p>



<p>Смотреть результат следует, как обычно, в Latest data. Там же можно и график посмотреть, когда накопятся данные для него. Для более наглядных и красивых графиков, необходимо будет их вручную создать в конструкторе графиков конкретного хоста. Лично мне достатчно информации из последних данных.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-backup-size-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-backup-size-02.png" alt="Пример поступления данных о размере бэкапа" class="wp-image-4217"/></a></figure></div>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>С помощью внешних скриптов настроили еще один тип мониторинга для бэкапов. Если у кого-то есть мысли на тему того, что нужно&nbsp;мониторить у резервных копий, высказывайте пожелания, попробую реализовать. Я очень внимательно отношусь к бэкапам и помимо автоматических проверок стараюсь время от времени заходить и глазами проверять все ли в порядке, на месте ли данные и можно ли их восстановить.</p>



<p>На своем опыте убедился в необходимости таких проверок. Приходилось сталкиваться с отказами различных систем, в том числе и коммерческих. Сервис может тупо зависнуть или выключиться, а ты надеешься на оповещения об ошибках, а раз не получаешь их, думаешь, что все в порядке, а на самом деле у тебя нет резервных копий. Еще вариант, с которым приходилось сталкиваться, это когда вроде все в порядке, никаких ошибок нет, а во время восстановления получаешь ошибку чтения данных.</p>



<p>Было бы неплохо автоматизировать восстановление данных и сравнение их с оригиналом для стопроцентной уверенности в том, что у тебя живые копии. Но для этого нужны дополнительные ресурсы.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/">Мониторинг размера бэкапа в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка мониторинга nginx, php-fpm, apache в Zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 19:12:28 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[php-fpm]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1561</guid>

					<description><![CDATA[<p>Обновление моей старой и популярной статьи на тему мониторинга. В этой заметке мы займемся настройкой мониторинга web сервера nginx, apache</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/">Настройка мониторинга nginx, php-fpm, apache в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Обновление моей старой и популярной статьи на тему мониторинга. В этой заметке мы займемся настройкой мониторинга web сервера nginx, apache и php-fpm в zabbix сервере с помощью готовых шаблонов. Полученная информация может пригодиться при анализе нагрузки на сайт, его скорости, при оценке качества хостинга, для прогнозирования максимально возможной посещаемости.</p>


</br>



<p>Я буду в своем примере настраивать все на CentOS 7, но в данном случае дистрибутив не имеет принципиального значения, все так же настраивается и на других linux системах с учетом их особенностей в установке пакетов и путей для конфигов и программ.</p>



<p>Мы будем использовать в качестве источника информации штатные возможности nginx, apache и php-fpm, затем передавать данные в zabbix сервер и там анализировать. Я подразумеваю, что nginx или apache вы уже настроили и имеете некое представление о работе его компонентов, поэтому некоторые вещи я не разжевываю, а просто говорю, что делать.</p>



<h2 class="wp-block-heading">Подготовка nginx к мониторингу</h2>



<p>Я планирую мониторить следующие параметры nginx:</p>



<figure class="wp-block-table"><table><tbody><tr><td>accepts per second</td><td>Число принятых&nbsp;соединений в секунду</td></tr><tr><td>active connections</td><td>Текущие активные соединения</td></tr><tr><td>handled per second</td><td>Число обработанных соединений в секунду</td></tr><tr><td>latency</td><td>Время ответа сервера в миллисекундах</td></tr><tr><td>memory allocated</td><td>Занимаемая память</td></tr><tr><td>process count</td><td>Число запущенных процессов</td></tr><tr><td>reading state&nbsp;connection count</td><td>Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса</td></tr><tr><td>requests per second</td><td>Число запросов в секунду</td></tr><tr><td>waiting state connection count</td><td>Текущее число бездействующих соединений в ожидании запроса</td></tr><tr><td>writing state connection count</td><td>Текущее число соединений, в которых nginx в настоящий момент отвечает</td></tr><tr><td>memory allocated</td><td>Сколько памяти занимают все worker process</td></tr></tbody></table></figure>



<p>Сервер nginx умеет отдавать часть необходимой нам информации о своем состоянии. Для этого его надо соответствующим образом подготовить. Открываем конфиг сервера и добавляем туда следующую конструкцию:</p>



<pre class="wp-block-preformatted">server {
    listen localhost;
    server_name localhost;
    keepalive_timeout	0;
    allow	127.0.0.1;
    allow	::1;
    deny	all;
    access_log	off;

        location /nginx-status {
	stub_status	on;
        }
</pre>



<p>Я обычно добавляю в самый конец основного конфига&nbsp;<em>nginx.conf</em>.&nbsp;Сохраняем и перечитываем конфигурацию, перед этим проверив его конфиг на ошибки:</p>



<pre class="wp-block-preformatted"># nginx -t
# nginx -s reload</pre>



<p>Проверяем, можем ли мы получить необходимую информацию для настройки мониторинга:</p>



<pre class="wp-block-preformatted"># curl http://localhost/nginx-status
Active connections: 89 
server accepts handled requests
 1374661 1374661 9511381 
Reading: 0 Writing: 1 Waiting: 87</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-01.png" alt="nginx stub_status" class="wp-image-9572"/></a></figure></div>



<p>Теперь проверим, сможет ли zabbix получать эту страницу.</p>



<pre class="wp-block-preformatted"># zabbix_agentd -t web.page.get[localhost,nginx-status,80]</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-02.png" alt="Подготовка nginx к мониторингу" class="wp-image-9573"/></a></figure></div>



<p>Если у вас так же, то все в порядке, можно двигаться дальше. Если что-то не получается, то проверяйте конфиги, смотрите логи. Это штатный функционал, он должен без проблем настраиваться и работать.</p>


</br>



<p>Сразу обращаю внимание на один важный момент, на котором я застрял на приличное время. Через curl я без проблем забирал страничку со статусом nginx, а вот через zabbix никак не получалось. Была ошибка:</p>



<pre class="wp-block-preformatted">[m|ZBX_NOTSUPPORTED] [HTTP get error: cannot connect to [[localhost]:80]: [111] Connection refused]</pre>



<p>Я всю голову сломал, 10 раз перепроверил конфиги, никак не мог понять, почему не работает. Оказалось, дело было вот в чем. Zabbix-agent обращался к серверу Nginx по протоколу ipv6. Это при том, что как агент, так и nginx работали по ipv4. Я принудительно отключаю у служб ipv6, если он не используется.</p>



<p>Обнаружил это случайно, когда от безысходности запустил Nginx на всех интерфейсах и снял ограничения allow/deny в конфиге. Тогда запрос прошел нормально. Я посмотрел access лог и увидел, что zabbix-agent обращается с адреса ::1. И все стало ясно. Я так и не понял, как заставить агента ходить по ipv4. В итоге запустил nginx на обоих протоколах и разрешил забирать страницу статуса с адреса ::1. После этого заработало.</p>



<p>Самое неприятное в этой ситуации было то, что в логах нигде не было никаких ошибок, отклоненных запросов или чего-то еще, что могло бы дать зацепку. Zabbix agent просто писал, что подключение отклонено и все. О том, что он обращается по ipv6, не было никакого намека.</p>



<h2 class="wp-block-heading">Настройка в zabbix мониторинга nginx</h2>



<p>В прошлой редакции этой статьи дальше шло описание скрипта, который будет парсить вывод nginx-status и передавать данные в zabbix. Сейчас все можно сделать гораздо проще и удобнее. На агенте не надо ничего настраивать. Все выполняется исключительно в шаблоне. То есть вам достаточно загрузить готовый шаблон для мониторинга nginx на zabbix сервер, прикрепить его к хосту и все будет работать.</p>



<p>Это удобный подход, который избавляет от необходимости настраивать агентов. Теперь все выполняется с сервера. Минус этого подхода только в том, что возрастает нагрузка на сервер мониторинга. Это плата за удобство и централизацию. Имейте это ввиду. Если у вас большая инсталляция мониторинга и есть средства автоматизации типа ansible, возможно вам имеет смысл по старинке парсить данные скриптом. Но в общем случае я рекомендую делать так, как я расскажу далее.</p>



<p>Суть мониторинга Nginx будет сводиться к тому, что мы через агента станем забирать страницу&nbsp;<em>http://localhost/nginx-status</em>&nbsp;на сервер. Там с помощью регулярных выражений и зависимых элементов данных будем формировать нужные метрики.</p>



<p>Представляю вам готовый шаблон для мониторинга nginx. Скачиваем его <a href="https://clip-clap.ru/wp-content/uploads/2020/08/zabbix-nginx-template.zip">zabbix-nginx-template.xml</a> и открываем web интерфейс zabbix сервера. Идем в раздел <strong>Configuration -> Templates</strong> и жмем <strong>Import</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-03.png" alt="Импорт шаблона" class="wp-image-9574"/></a></figure></div>



<p>Выбираем файл и снова нажимаем&nbsp;Import:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-04.png" alt="Шаблон nginx для zabbix" class="wp-image-9575"/></a></figure></div>



<p>Шаблон я подготовил сам на основе своих представлений о том, что нужно мониторить. Проверил и экспортировал его с версии 4.2 Регулярные выражения для парсинга html страницы статуса подсмотрел тут &#8212;&nbsp;<a href="https://github.com/AlexGluck/ZBX_NGINX" target="_blank" rel="noreferrer noopener">https://github.com/AlexGluck/ZBX_NGINX</a>. К представленному шаблону я добавил некоторые итемы и переделал все триггеры. Плюс убрал макросы. Не вижу в них в данном случае смысла.</p>



<p>В шаблоне 11 итемов, описание которых я привел ранее.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-05-1024x469.png" alt="Список итемов nginx" class="wp-image-9576"/></a></figure></div>



<p>Подробнее остановимся на триггерах. Их 5 штук.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-06.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-06-1024x363.png" alt="Список триггеров nginx" class="wp-image-9577"/></a></figure></div>



<ol><li><strong>Many active connections</strong>&nbsp;&#8212; срабатывает если среднее количество соединений за последние 10 минут больше в 3 раза, чем среднее количество за интервал на 10 минут ранее.</li><li><strong>many requests</strong>&nbsp;и&nbsp;<strong>too many requests</strong>&nbsp;&#8212; срабатывают, когда среднее количество запросов за последние 10 минут больше в 3 и 6 раз соответственно, чем на 10 минут ранее.</li><li><strong>nginx is not running</strong>&nbsp;&#8212; тут все просто. Если не запущен ни один процесс nginx, шлем уведомление.</li><li><strong>nginx is slow to respond</strong>&nbsp;&#8212; срабатывает если время выполнения запроса на получение страницы со статусом за последние 10 минут больше предыдущих 10 минут в 2 раза.</li></ol>


</br>



<p>С триггерами больше всего вопросов. Предложенная мной схема может работать независимо от проекта, не требует начальной калибровки, но могут быть ложные срабатывания из-за разовых очень сильных всплесков, которые быстро проходят, но сильно меняют средние параметры на интервале.</p>



<p>Более надежно могут сработать триггеры, где явно указаны лимиты в конкретных значениях. Но такой подход требует ручной калибровки на каждом проекте в отдельности. Надо смотреть средние значения метрик и выставлять лимиты в зависимости от них. Если проект будет расти, то лимиты постоянно придется менять. Это тоже не очень удобно и не универсально.</p>



<p>Я в итоге остановился на анализе средних значений, не используя конкретных лимитов. Как поступать вам, решайте отдельно, в зависимости от ситуации. Если у вас один проект, которому вы уделяете много внимания, то ставьте лимиты руками на основе анализа средних параметров. Если работаете на потоке с множеством проектов, то можно использовать мой вариант, он более универсален и не требует ручной правки.</p>



<p>Единственное, коэффициенты можно поправить, если будут ложные срабатывания. Но я обычно этот момент решаю через отложенные уведомления. Если чувствительность триггера очень высокая и есть кратковременные ложные срабатывания, меня они не беспокоят из-за 5-ти минутной задержки уведомлений. Зато при разборе инцидентов, эти кратковременные срабатывания помогают оценить ситуацию в целом.</p>



<p>С мониторингом nginx почти все готово. Теперь нам нужно прицепить добавленный шаблон к web серверу, который мы мониторим и дождаться поступления данных. Проверить их можно в&nbsp;<strong>Monitoring -&gt; Latest Data</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-07.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-07-1024x571.png" alt="Настройка мониторинга nginx в zabbix" class="wp-image-9578"/></a></figure></div>



<p>В шаблоне есть несколько графиков. Не буду о них рассказывать, так как последнее время практически не пользуюсь графиками. Вместо этого собираю дашборды. Это более удобно и информативно. Жаль, что дашборды нельзя к шаблонам прикреплять. Очень хлопотно каждый раз вручную их составлять и тратить время. В конце покажу пример дашборда, который я использую для мониторинга web сервера.</p>



<p>На этом настройка мониторинга nginx закончена, можно пользоваться.</p>



<h2 class="wp-block-heading">Подготовка php-fpm к мониторингу</h2>



<p>Переходим к мониторингу php-fpm. Он отдает побольше метрик, не буду описывать их все. Рассмотрю только самые основные. Мы будем наблюдать следующие параметры php-fpm:</p>



<figure class="wp-block-table"><table><tbody><tr><td>active processes count</td><td>Число активных процессов</td></tr><tr><td>connections per sec</td><td>Количество соединений в секунду</td></tr><tr><td>idle processes count</td><td>Количество&nbsp;idle процессов</td></tr><tr><td>slow requests</td><td>Количество медленных запросов</td></tr><tr><td>length of listen queue</td><td>Размер очереди ожидающих подключений</td></tr><tr><td>max children reached</td><td>Сколько раз был достигнут лимит по процессам</td></tr><tr><td>max length of listen queue</td><td>Максимальный размер очереди подключений</td></tr></tbody></table></figure>



<p>Пару слов о том, зачем это нужно и как пользоваться полученными данными. Этот мониторинг актуален, если у вас динамическое создание процессов в php-fpm. К примеру, если у вас значение&nbsp;<strong>max children reached</strong>&nbsp;регулярно больше единицы, то вам рекомендуется увеличить лимит на максимальное количество процессов, если позволяют ресурсы сервера. То же самое относится и к параметру&nbsp;<strong>length of listen queue</strong>. Если он больше нуля, то создается очередь из запросов, которые не успевают обработать сервер. Необходимо увеличить количество процессов, которые смогут обработать ожидающие подключения.</p>



<p>Приступаем к настройке мониторинга php-fpm на web сервере. Установим fcgi:</p>



<pre class="wp-block-preformatted"># yum install fcgi</pre>



<p>Теперь подготовим&nbsp;pfp-fpm для сбора статистики. Для этого&nbsp;мы снова воспользуемся nginx. Редактируем его конфиг, добавляя в ту же секцию server, что и на прошлом этапе, следующую конструкцию:</p>



<pre class="wp-block-preformatted">location /phpfpm-status {
	include fastcgi_params;
	fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}</pre>



<p>Обращаю ваше внимание на то, что я в своей конфигурации использую подключение к php-fpm через unix сокет. За это отвечает параметр конфигурации fastcgi_pass. Если вы используете в работе tcp/ip порт, обычно 127.0.0.1:9000, то нужно указать его вместо сокета, вот так: fastcgi_pass 127.0.0.1:9000</p>



<p>Перезапускаем nginx:</p>



<pre class="wp-block-preformatted"># systemctl restart nginx</pre>



<p>Внесем необходимые изменения в конфиг php-fpm &#8212; добавим одну строку:</p>



<pre class="wp-block-preformatted"># mcedit /etc/php-fpm.d/www.conf
pm.status_path = /phpfpm-status</pre>



<p>Перезапускаем php-fpm:</p>



<pre class="wp-block-preformatted"># systemctl restart php-fpm</pre>



<p>Проверяем, что по указанному адресу мы получаем статистику php-fpm:</p>



<pre class="wp-block-preformatted"># curl http://localhost/phpfpm-status</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-08.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-08.png" alt="Настройка pm.status_path в php-fpm" class="wp-image-9579"/></a></figure></div>



<p>И ее же в формате json.</p>



<pre class="wp-block-preformatted"># curl -s 'http://localhost/phpfpm-status?json'
{"pool":"www","process manager":"dynamic","start time":1566494413,"start since":2049,"accepted conn":3236,"listen queue":0,"max listen queue":0,"listen queue len":0,"idle processes":5,"active processes":1,"total processes":6,"max active processes":6,"max children reached":0,"slow requests":0}</pre>



<p>Если у вас примерно то же самое, то все в порядке, php-fpm&nbsp;отдает информацию о своем состоянии.</p>


</br>



<h2 class="wp-block-heading">Мониторинг php-fpm в zabbix</h2>



<p>Теперь настраиваем мониторинг php-fpm на сервере zabbix. Действуем по аналогии с мониторингом nginx. Забираем страницу состояния php-fpm на сервер мониторинга и там его парсим в зависимых элементах данных.</p>



<p>С php-fpm будет один нюанс. Нам все-таки придется менять параметры zabbix agent. Настраивать мониторинг php-fpm очень легко, потому что он из коробки умеет отдавать все свои метрики в формате&nbsp;<strong>json</strong>. Это очень удобно, так как его не надо парсить регулярками. Достаточно только указать JSONpath для получения необходимой метрики.</p>



<p>Нам нужно добавить один UserParameter следующего содержания.</p>



<pre class="wp-block-preformatted">UserParameter=phpfpm.json[*],curl -s 'http://localhost/phpfpm-status?json' | tr ' ' _</pre>



<p>Перезапускаем zabbix-agent и проверяем, что он корректно возвращает необходимые данные.</p>



<pre class="wp-block-preformatted"># systemctl restart zabbix-agent
# zabbix_agentd -t phpfpm.json
phpfpm.json                                   [t|{"pool":"www","process_manager":"dynamic","start_time":1566494413,"start_since":3525,"accepted_conn":5820,"listen_queue":0,"max_listen_queue":0,"listen_queue_len":0,"idle_processes":6,"active_processes":1,"total_processes":7,"max_active_processes":7,"max_children_reached":0,"slow_requests":0}]</pre>



<p>Дальше как и в случае с nginx, идем в веб интерфейс и импортируем шаблон&nbsp;<a href="https://serveradmin.ru/files/zabbix/zabbix-phpfpm-template.xml">zabbix-phpfpm-template.xml</a>. Добавляем этот шаблон к серверу и ждем обновления данных. Проверяем их поступление, как обычно, в&nbsp;<strong>Monitoring -&gt; Latest Data</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-09.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-09-1024x534.png" alt="Мониторинг php-fpm в zabbix" class="wp-image-9580"/></a></figure></div>



<p>Если все в порядке, то проверяйте графики, создавайте необходимые дашборды. Я свой покажу в самом конце.</p>



<p>В шаблоне php-fpm настроен только один триггер, который следит за тем, чтобы хотя бы один процесс php-fpm был запущен. Раньше я использовал больше триггеров, но потом решил, что они не очень нужны. Состояние работы сайта лучше оценивать по финальным метрикам, таким как скорость загрузки страниц, доступность сайта и коды ответов. Если с этими метриками проблемы, нужно идти в мониторинг, смотреть графики и решать, что нужно изменить в конфигурации. Это мое личное мнение, с ним можно поспорить. Для этого есть комментарии, буду рад замечаниям и обсуждениям по существу.</p>


</br>



<h2 class="wp-block-heading">Подготовка apache к мониторингу</h2>



<p>Приступим к настройке мониторинга web сервера apache. В данном примере я буду использовать web сервер для сайта на bitrix, работающего в окружении bitrixenv. В целом, тут никаких принципиальных отличий нет от обычного apache, просто представлена готовая конфигурация с обширными настройками.</p>



<p>С веб сервером apache мне давно не приходилось связываться в отрыве от bitrix сайтов, поэтому решил показать его мониторинг на его примере. Здесь принцип будет такой же, как и раньше &#8212; забираем страницу с информацией о веб сервере, который apache нам предоставляет через свой модуль mod_status.</p>



<p>Дальше мы передаем страницу в zabbix server и там парсим регулярками по зависимым элементам данных. Первым делом вам надо настроить указанный выше модуль. Подробности на официальном сайта &#8212;&nbsp;<a href="https://httpd.apache.org/docs/current/mod/mod_status.html" target="_blank" rel="noreferrer noopener">https://httpd.apache.org/docs/current/mod/mod_status.html</a>. Если кратко, то просто добавьте в конфиг apache примерно следующие настройки.</p>



<pre class="wp-block-preformatted">&lt;Location "/server-status"&gt;
    SetHandler server-status
    Require host localhost
&lt;/Location&gt;</pre>



<p>Bitrixenv автоматически все настроит, если вы через консольное меню включите&nbsp;<strong>Monitoring in pool</strong>. Запустится роль ansible, которая настроит в том числе apache, установит и запустит nagios и munin. Если они вам не нужны, то просто добавьте приведенный выше кусок конфига в&nbsp;<em>/etc/httpd/bx/custom/z_bx_custom.conf</em>.</p>



<pre class="wp-block-preformatted">Listen localhost:8886
&lt;IfModule mod_status.c&gt;
    ExtendedStatus On
&lt;/IfModule&gt;
&lt;VirtualHost localhost:8886&gt;
    &lt;Location /server-status&gt;
        SetHandler server-status
        Require ip 127.0.0.1
	require ip ::1
    &lt;/Location&gt;
&lt;/VirtualHost&gt;
</pre>



<p>После этого проверьте настройки apache и перезапустите его.</p>



<pre class="wp-block-preformatted"># apachectl -t
# apachectl restart</pre>



<p>Если все настроили правильно, то состояние apache можно посмотреть в консоли.</p>



<pre class="wp-block-preformatted"># curl http://localhost:8886/server-status?auto
Total Accesses: 1051
Total kBytes: 104324
CPULoad: 4.7515
Uptime: 1835
ReqPerSec: .572752
BytesPerSec: 58216.8
BytesPerReq: 101644
BusyWorkers: 1
IdleWorkers: 29
Scoreboard: _______________________W______</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-10.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-10.png" alt="apache mod_status" class="wp-image-9581"/></a></figure></div>



<p>И на всякий случай проверьте, что zabbix-agent может получать эту же информацию.</p>



<pre class="wp-block-preformatted"># zabbix_agentd -t web.page.get[localhost,server-status?auto,8886]</pre>



<p>Должны увидеть то же самое, только со служебными заголовками в начале. Если у вас все в порядке, то можно двигаться дальше.</p>


</br>



<h2 class="wp-block-heading">Настройка мониторинга apache</h2>



<p>Теперь настроим мониторинг apache в zabbix server. Как обычно, я подготовил шаблон с итемами и триггерами, которые посчитал полезными. Скачиваем его &#8212;&nbsp;<a href="https://serveradmin.ru/files/zabbix/zabbix-apache-template.xml">zabbix-apache-template.xml</a>.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-11-1024x304.png" alt="Список итемов apache" class="wp-image-9582"/></a></figure></div>



<p>Обратите внимание на элемент, который забирает страницу со статусом. Его url я реализовал через макросы:</p>



<ul><li>{$S_HOST} &#8212; название виртуального хоста</li><li>{$S_PATH} &#8212; путь к странице со статистикой</li><li>{$S_PORT} &#8212; порт сервера apache, на котором работает статистика</li></ul>



<p>Вот как выглядят настройки макроса на типичном сайте с bitrixenv.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-12.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-12.png" alt="Макросы шаблона apache" class="wp-image-9583"/></a></figure></div>



<p>Так же обращаю внимание на итемы проверки количества рабочих процессов и занимаемой виртуальной памяти. Для проверки процессов указан пользователь bitrix, от которого работают все воркеры. В случае проверки памяти указан пользователь root, так как основной процесс запущен от него. А все воркеры используют разделяемую память. Ее суммарный объем, особенно когда воркеров много, огромен и представляет из себя нереальную цифру. Отслеживать ее нет никакого смысла.</p>



<p>Так как apache обычно работает в роле бэкенда, у него минимум триггеров, как и у php-fpm. Я сделал 2:</p>



<ol><li><strong>Apache service not work</strong>&nbsp;&#8212; предупреждение о том, что системный процесс web сервера apache не запущен.</li><li><strong>Failed to fetch apache server status page</strong>&nbsp;&#8212; триггер срабатывает, если не получается загрузить страницу со статистикой.</li></ol>



<p>Добавил еще пару графиков. Сами на них посмотрите. Вот в общем-то и все. После настройки шаблона для мониторинга apache, прикрепите его к хосту, не забудьте указать макросы и ждите поступления данных.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-13.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-13-1024x429.png" alt="Настройка мониторинга apache" class="wp-image-9584"/></a></figure></div>



<p>На это про мониторинг apache в zabbix все. Дальше идет пример готового Dashboard.</p>



<h2 class="wp-block-heading">Дашборд Zabbix для Web сервера</h2>



<p>Как и обещал, в завершении статьи по настройке мониторинга web сервера, показываю пример своего дашборда в zabbix для мониторинга bitrix сайта. Картинка очень большая, по клику открывается полная версия, если открыть в новой вкладке.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-14.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/zabbix-web-server-monitoring-14-702x1024.png" alt="Мониторинг web сервера в zabbix" class="wp-image-9585"/></a></figure></div>



<p>В самом верху список текущих проблем. В настоящий момент висит активный триггер о ssh подключению к серверу. Справа от списка проблем &#8212; <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%be%d0%b2-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">мониторинг бэкапов в zabbix</a>.</p>



<p>Рекомендую сделать обе настройки. Первая очень помогает понимать, что происходит с сайтом и сервером, если с ним работают несколько человек. Если разработчик залез на сервер по ssh &#8212; жди беды. С бэкапами и так все понятно &#8212; без них никуда. Возможно как-нибудь отдельно напишу, как я бэкаплю сайты, чтобы защищаться от различного рода угроз и быстро восстанавливать функционирование сайта после сбоев. Просто скопировать весь сайт в другое место недостаточно, особенно если он очень большой. Нужен отдельный продуманный подход к этому вопросу. Напишите в комментариях, если вам интересно получить эту информацию.</p>



<p>Ниже идут метрики с мониторинга web сайта. Выбирается контрольный набор из нескольких страниц (обычно 3-5) и настраивается мониторинг времени ответа и скорости загрузки этих страниц. Для этих параметров настроены триггеры, так как они очень важны. По сути, это ключевые метрики. Если с ними проблемы, надо внимательно смотреть web сервер и разбираться, в чем проблема. Мониторинг web сайта нужно настраивать минимум с двух независимых серверов zabbix, иначе вы не сможете отличить проблемы доступа с сервера мониторинга к сайту от реальных проблем сайта. Только если оба сервера мониторинга сигнализируют о проблемах, можно сделать однозначный вывод о том, что с сайтом и web сервером что-то не так.</p>



<p>Дальше идут метрики из шаблонов, которые я рассмотрел в этой статье. Если у вас вместо apache используется php-fpm, то все примерно то же самое, только в самом низу метрики от php-fpm. Не буду приводить пример с ним, чтобы не загромождать статью. Думаю, приведенного дашборда и так достаточно.</p>



<p>В принципе, сюда можно было бы добавить информацию по I/O дисков, инфу с сетевого стека, данные Mysql. Не стал этого делать, так как это обзорный dashboard, который беглым просмотром позволяет оценить состояние сервера. Так же этот дашборд можно показать заказчику. Для более глубокого анализа проблем, нужно собирать отдельную панель.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Подведем итог того, что мы сделали:</p>



<ol><li>Настроили сервисы nginx, apache, php-fpm таким образом, чтобы они отдавали информацию о своем состоянии.</li><li>С помощью zabbix агентов передали эту информацию на сервер.</li><li>Используя зависимые элементы (dependent items) настроили парсинг метрик.</li><li>Настроили на сервере мониторинга необходимые шаблоны и прикрепили их к наблюдаемым серверам.</li><li>Собрали dashboard для мониторинга за веб сервером.</li></ol>



<p>То есть выполнили весь комплекс действий для организации полноценного мониторинга web сервера в zabbix.</p>



<p>Одно из применений подобного мониторинга &#8212; выбор более быстрого хостинга для сайта. К примеру, мне некоторое время назад понадобилось сменить хостинг. Но как узнать, будет ли он быстрее текущего или нет. Характеристики примерно у всех одинаковые. Я просто взял тестовый период, настроил на сервере все, что мне нужно, в том числе мониторинг веб сервера, перенес туда сайт и понаблюдал сутки. Уже по времени отклика nginx и php-fpm мне стало понятно, что новый хостинг быстрее:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-hosting-speed.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-hosting-speed.png" alt="Сравнение скорости хотсинга" class="wp-image-2445"/></a></figure></div>



<p>Время отклика страниц сайта и скорость их загрузки в целом тоже улучшились. Я однозначно понял, что надо переезжать и не ошибся.</p>



<p>Это пример из старой версии статьи, где показаны старые метрики и графики. Оставил его, так как он в целом информативен. Текущий мониторинг web сайта так же можно использовать для анализа производительности хостинга.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/">Настройка мониторинга nginx, php-fpm, apache в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-nginx-php-fpm-apache-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг MySQL репликации в Zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 19:04:15 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1558</guid>

					<description><![CDATA[<p>Я активно использую репликацию mysql в своей работе, причем как master-slave, так и master-master. Иногда возникают ошибки, и если за</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/">Мониторинг MySQL репликации в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Я активно использую репликацию mysql в своей работе, причем как master-slave, так и master-master. Иногда возникают ошибки, и если за ними не следить, то в определенный момент станет очень грустно, когда окажется, что резервный сервер не имеет актуальную версию базы. Чтобы не грустить по этому поводу, мы настроим мониторинг Mysql репликации с помощью Zabbix.</p>


</br>



<p>Несколько слов о том, что именно мы будем мониторить. Посмотреть статус репликации можно с помощью простой команды в консоли mysql:</p>



<pre class="wp-block-preformatted">MariaDB [(none)]&gt; show slave status\G;</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-01.png" alt="show slave status" class="wp-image-2357"/></figure></div>



<p>Нас будут интересовать три параметра:</p>



<ul><li><strong>Seconds_Behind_Master</strong>&nbsp;&#8212; то, насколько слейв сервер отстает от мастера в репликации.</li><li><strong>Slave_IO_Running</strong>&nbsp;&#8212; индикатор работы демона по сбору бинарного лога с мастера и записи его в локальный relay лог.</li><li><strong>Slave_SQL_Running</strong>&nbsp;&#8212; индикатор выполнения команд из локального relay лога.</li></ul>



<p>Первый параметр в идеале должен равняться нулю, то есть slave сервере следует за мастером непрерывно. Если значение начинает увеличиваться, срабатывает триггер и оповещает о том, что реплика начинает отставать. Два других параметра должны выдавать значение&nbsp;<strong>Yes</strong>. Если это не так, то тоже срабатывает триггер и шлет оповещение о том, что репликация не работает.</p>



<p>Реализовывать будем так же как и в случае с мониторингом nginx и php-fpm через скрипт и UserParameter. Если у вас репликация master-mastert, то настраиваете мониторинг на обоих серверах.</p>



<p>Я буду настраивать мониторинг на сервере CentOS 7, но в данном случае это не имеет принципиального значения. Настройки будут идентичны практически на любом linux дистрибутиве.</p>


</br>



<h2 class="wp-block-heading">Добавление пользователя mysql</h2>



<p>Прежде чем начать настраивать сам мониторинг, выполним необходимые предварительные действия.</p>



<p>Создаем в mysql юзера, у которого будет доступ к информации о репликации:</p>



<pre class="wp-block-preformatted"># mysql -uroot -ppassword</pre>



<pre class="wp-block-preformatted">MariaDB [(none)]&gt; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'parol';
MariaDB [(none)]&gt; GRANT REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'parol';</pre>



<p>Создали учетную запись&nbsp;zabbix с паролем&nbsp;<em>parol</em>&nbsp;и&nbsp;правами replication client. Её&nbsp;мы будем использовать в дальнейшей работе.</p>



<h2 class="wp-block-heading">Создание скрипта для мониторинга mysql репликации</h2>



<p>Теперь создадим скрипт для мониторинга. Скачиваем его отсюда <a href="https://clip-clap.ru/wp-content/uploads/2020/08/mysql-slave.zip" target="_blank" rel="noreferrer noopener">mysql-slave.sh</a> и вставляем содержимое в папку /etc/zabbix/scripts:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/zabbix/scripts/mysql-slave.sh
# chown zabbix:zabbix /etc/zabbix/scripts/mysql-slave.sh
# chmod 550 /etc/zabbix/scripts/mysql-slave.sh</pre>



<p>Проверяем его работу:</p>



<pre class="wp-block-preformatted">/etc/zabbix/scripts/mysql-slave.sh Master_Host zabbix parol</pre>



<p>Скрипт должен вернуть в консоль имя мастера.Если вы будете проверять работу скрипта от пользователя root, обязательно удалите временный файл из папки /tmp, который создает скрипт. Если этого не сделать, то потом заббикс не сможет его прочитать, так как ему не хватит для этого прав.</p>



<p>Данный скрипт анализирует вывод&nbsp;show slave status\G и парсит 3 необходимых нам значения. Он передает агенту информацию о задержке репликации через параметр&nbsp;Seconds_Behind_Master и анализирует значения&nbsp;Slave_IO_Running и Slave_SQL_Running. Если их значения равны Yes, он передает агенту 1, если там что-то другое то 0.</p>


</br>



<h2 class="wp-block-heading">Настройка zabbix agent</h2>



<p>Добавляем новый параметр в&nbsp;zabbix_agentd.conf</p>



<pre class="wp-block-preformatted"># mcedit /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql-slave[*],/etc/zabbix/scripts/mysql-slave.sh "$1" zabbix&nbsp;parol</pre>



<p>Сохраняем конфиг и перезапускаем агента:</p>



<pre class="wp-block-preformatted"># systemctl restart zabbix-agent</pre>



<h2 class="wp-block-heading">Настройка мониторинга репликации mysql на zabbix server</h2>



<p>Здесь все как обычно. Скачиваем шаблон <a href="https://clip-clap.ru/wp-content/uploads/2020/08/mysql-slave.zip" target="_blank" rel="noreferrer noopener">mysql-slave.xml</a> импортируем его на сервер. Для этого идем в <strong>Configuration -> Templates</strong> и нажимаем <strong>Import</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-02.png" alt="импорт шаблона в zabbix" class="wp-image-2358"/></a></figure></div>



<p>Выбираем скачанный шаблон и жмем&nbsp;Import:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-03.png" alt="выбор шаблона для импорта" class="wp-image-2359"/></figure></div>



<p>Дальше отправляемся к списку хостов в&nbsp;<strong>Configuration -&gt; Hosts</strong>, выбираем нужный хост и назначаем ему новый шаблон:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-04.png" alt="прикрепление шаблона к хосту" class="wp-image-2360"/></figure></div>



<p>Жмем&nbsp;Update&nbsp;для применения настроек. Ждем несколько минут и идем проверять поступление новых данных репликации mysql. Открываем&nbsp;<strong>Monitoring -&gt; Latest Data</strong>, настраиваем фильтр и проверяем значения:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-05.png" alt="мониторинг mysql репликации в zabbix" class="wp-image-2361"/></a></figure></div>



<p>В данном случае мы видим, что значение Seconds Behind Master = 0, отставания от мастера нет. Два других значения равны единице, это значит, что наш скрипт проверки состояния репликации получает статусы&nbsp;Slave_IO_Running и Slave_SQL_Running равные Yes и поэтому возвращает значения 1. То есть наша репликация работает в штатном режиме, все в порядке.</p>


</br>



<h2 class="wp-block-heading">Проверка работы триггеров</h2>



<p>Попробуем нарушить работу репликации mysql и проверим работу триггеров. Для этого я просто отключу vpn соединение, по которому доступны&nbsp;сервера. После разрыва связи на slave сервере следующая картинка статуса репликации:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-06.png" alt="show slave status" class="wp-image-2362"/></figure></div>



<p>Проверяем данные мониторинга репликации:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-07.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-07.png" alt="данные мониторинга репликации" class="wp-image-2363"/></a></figure></div>



<p>Значение&nbsp;Slave_IO_Running сменилось с Yes на&nbsp;Connecting и скрипт проверки вернул значение 0 вместо 1. Этого достаточно, чтобы сработал триггер и пришло оповещение о том, что репликация mysql сервера нарушена:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-08.png" alt="работа триггера zabbix" class="wp-image-2364"/></figure></div>



<p>На почту пришло оповещение:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-09.png" alt="уведомление на почту" class="wp-image-2365"/></figure></div>



<p>По-умолчанию мониторинг не умеет отправлять оповещения на сторонние серверы с авторизацией по smtp.</p>


</br>



<p>Восстанавливаем связь между серверами и ждем новой работы триггера и уведомления:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-10.png" alt="оповещение на почту" class="wp-image-2366"/></figure></div>



<p>Проверяем Latest Data:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/11/zabbix-mysql-replica-11.png" alt="latest data" class="wp-image-2367"/></a></figure></div>



<p>Все в порядке, мониторинг нормально отработал нарушение mysql репликации. Больше тут настраивать нечего, графики и экраны не нужны, в них нет необходимости. На этом работа по настройке мониторинга окончена.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Для мониторинга состояния репликации mysql мы воспользовались самописным скриптом, который парсит вывод значения&nbsp;show slave status\G и анализирует необходимые нам параметры реплики. На основе этих параметров он передает zabbix агенту необходимые значения для отправки на сервер.</p>



<p>На сервер мониторинга мы импортировали готовый шаблон для сбора данных и работы триггеров. Подключили этот шаблон к&nbsp;хосту и посмотрели значения, которые он получает. Так же проверили срабатывание триггеров, принудительно нарушив работу репликации. Таким образом убедились, что мониторинг корректно отрабатывает нештатные ситуации.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/">Мониторинг MySQL репликации в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-mysql-%d1%80%d0%b5%d0%bf%d0%bb%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг транков (trunk) в asterisk с помощью zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 18:59:08 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[asterisk]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1554</guid>

					<description><![CDATA[<p>Мне понадобился простой мониторинг состояния транков в asterisk. Иногда после проблем с интернетом на некоторых серверах автоматически не восстанавливаются транки</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/">Мониторинг транков (trunk) в asterisk с помощью zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Мне понадобился простой мониторинг состояния транков в asterisk. Иногда после проблем с интернетом на некоторых серверах автоматически не восстанавливаются транки к sip провайдерам. Приходится дергать их вручную через sip reload после того, как пользователи начинают жаловаться. А так как провайдеров может быть несколько, не всегда сразу становится понятно, что какой-то из каналов отвалился.</p>


</br>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Полный мониторинг всего сервера asterisk я рассмотрел отдельно &#8212; <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">настройка мониторинга asterisk</a>. Там в том числе есть мониторинг транков, но более продвинутый и удобный, нежели здесь. Так что рекомендую ознакомиться с новой статьей.</p></blockquote>



<h2 class="wp-block-heading">Введение</h2>



<p>Я буду использовать очень простую проверку. В интернете находится много рецептов по&nbsp;<strong>мониторингу asterisk</strong>&nbsp;с помощью zabbix. Есть готовые наборы скриптов на питоне, есть шаблоны. Можно настроить мониторинг практически всего, что только пожелаешь.</p>



<p>Мне не хотелось во всем этом разбираться и нагромождать в систему, так как нужно&nbsp;<strong>только состояние транков &#8212; зарегистрирован или нет</strong>. Усложнять чем-то еще свои системы мониторинга не хотелось. Больше никакие данные мне не нужны. Я стараюсь настраивать мониторинг только тех параметров, которые реально необходимы. Это позволяет экономить время и ресурсы сервера.</p>



<p>С помощью простого sh скрипта я буду проверять суммарное количество транков в системе и сравнивать это число с числом зарегистрированных транков. Если разница этих чисел будет отлична от нуля, значит как минимум одна регистрация отвалилась. Нужно на всякий случай проверить сервер и выяснить причину.</p>



<p>После этой проверки можно тем же скриптом и перезапустить регистрации, но я в статье ограничусь только мониторингом состояния. Лично мне перезапуск в данном случае не нужен, так как ситуации бывают редко и я хочу сам проверить, почему регистрации отвалились.</p>


</br>



<h2 class="wp-block-heading">Настройка агента для мониторинга транков (trunks)</h2>



<p>Создадим папку для пользовательских скриптов в каталоге zabbix:</p>



<pre class="wp-block-preformatted"># mkdir /etc/zabbix/scripts</pre>



<p>Создаем в ней скрипт&nbsp;asterisk.trunk.sh следующего содержания:</p>



<pre class="wp-block-preformatted">#!/bin/sh
# Получаем количество всех транков в системе
number_tranks=`/usr/sbin/asterisk -rx "sip show registry" | grep "SIP registrations" | awk '{print $1}'`
# Считаем количество зарегистрированных транков
reg_tranks=`/usr/sbin/asterisk -rx "sip show registry" | grep Registered | wc -l`
# Вычисляем&nbsp;разницу между полученными значениями
let result=$number_tranks-$reg_tranks
# Выводим результат вычисления
echo $result</pre>



<p>Назначаем владельцем файла пользователя zabbix и выставляем права на выполнение скрипта:</p>



<pre class="wp-block-preformatted"># chown zabbix. /etc/zabbix/scripts/asterisk.trunk.sh
# chmod 0750&nbsp;/etc/zabbix/scripts/asterisk.trunk.sh</pre>



<p>Теперь просто запустите скрипт и посмотрите результат. Если все регистрации подключены, то скрипт должен вернуть значение 0:</p>



<pre class="wp-block-preformatted"># /etc/zabbix/scripts/asterisk.trunk.sh
0</pre>



<p>Открываем на редактирование конфиг агента и добавляем параметр&nbsp;<strong>UserParameter</strong>:</p>



<pre class="wp-block-preformatted">UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk.sh</pre>



<p>Перезапускаем zabbix-agent той командой, что соответствует вашей системе. В CentOS 7 делаем так:</p>



<pre class="wp-block-preformatted"># systemctl restart zabbix-agent</pre>



<p>Теперь проверим с помощью&nbsp;zabbix_agentd какое значение будет отправлять агент на сервер:</p>



<pre class="wp-block-preformatted"># zabbix_agentd -t asterisk.trunk
asterisk.trunk [t|0]</pre>



<p>Все в порядке, то что надо. На этом настройка агента на сервере asterisk закончена. Переходим на сервер мониторинга.</p>


</br>



<h2 class="wp-block-heading">Создание шаблона мониторинга asterisk на сервере zabbix</h2>



<p>Нам нужно создать шаблон на сервере, для назначения его серверам с астериском. Здесь ничего сложного, делаем все то же самое, что мы делали ранее, настраивая мониторинг рейда mdadm. Идем в раздел <strong>Configuration -> Templates</strong>, нажимаем <strong>Create template</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/03/zabbix-asterisk-trunks-01.png" alt="Создание шаблона Asterisk" class="wp-image-2965"/></figure></div>



<p>Пишем название и добавляем его в группу с шаблонами.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/03/zabbix-asterisk-trunks-02.png" alt="Указываем параметры нового шаблона" class="wp-image-2961"/></figure></div>



<p>Открываем шаблон, переходим в раздел&nbsp;<strong>Items</strong>&nbsp;и жмем на&nbsp;<strong>Create item</strong>. Заполняем параметры нового итема как на картинке.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/03/zabbix-asterisk-trunks-03.png" alt="Создание элемента для мониторинга транков" class="wp-image-2962"/></figure></div>



<p>Я поставил интервал проверок 120 секунд = 2 минуты. Вы можете поменять под свои нужды этот параметр. Сохраняем новый итем.</p>



<p>Для сбора данных все готово. Теперь назначаем шаблон серверам с астериском, где мы подготовили агенты мониторинга и скрипты и ждем поступления данных. Проверять как обычно идем в&nbsp;<strong>Latest data</strong>. Через пару минут должны поступить значения.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/03/zabbix-asterisk-trunks-04.png" alt="Просмотр данным мониторинга asterisk" class="wp-image-2963"/></figure></div>


</br>



<p>У меня пришло значение 0 как и должно быть. Все регистрации на месте. Теперь нам нужно добавить триггер, который будет отправлять уведомление, если какая-нибудь из регистраций отвалится. Для этого идем в созданный шаблон и переходим в раздел&nbsp;<strong>Triggers</strong>. Жмем&nbsp;<strong>Create trigger</strong>&nbsp;и указываем значения, как у меня.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/03/zabbix-asterisk-trunks-05.png" alt="Создание триггера мониторинга регистраций" class="wp-image-2964"/></figure></div>



<p>Если 3 последние проверки покажут значение, отличное от 0, сработает триггер и прилетит уведомление на почту. Сохраняем триггер. На этом все. Можете проверить работу любым способом, который придумаете. Например, временно измените пароль на одном из транков, или добавив новый с несуществующими параметрами. Можно и не проверять, все должно и так работать <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>


</br>



<h2 class="wp-block-heading">Возможные ошибки</h2>



<p>Если ваш новый item не работает, получает статус&nbsp;<strong>not supported</strong>, а в описании причины ошибка:</p>



<pre class="wp-block-preformatted">Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)</pre>



<p>Необходимо разрешить пользователю zabbix, от которого работает&nbsp;скрипт, запускать asterisk. Для этого добавляем в файл&nbsp;<em>/etc/sudoers</em>&nbsp;в самый конец следующую строку:</p>



<pre class="wp-block-preformatted">zabbix ALL = NOPASSWD: /usr/sbin/asterisk</pre>



<p>После этого проверяем выполнение скрипта от пользователя zabbix:</p>



<pre class="wp-block-preformatted"># sudo -u zabbix /etc/zabbix/scripts/asterisk.trunk.sh</pre>



<p>Если получаете вывод значения, значит все в порядке. Если же все равно видите ошибку:</p>



<pre class="wp-block-preformatted">Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)</pre>



<p>Добавьте в скрипт перед&nbsp;/usr/sbin/asterisk выполнение&nbsp;/usr/bin/sudo. Должно получиться так:</p>



<pre class="wp-block-preformatted">reg_tranks=`<strong>/usr/bin/sudo</strong> /usr/sbin/asterisk -rx "sip show registry" | grep Registered | wc -l`</pre>



<p>После этого отцепите шаблон от хоста и добавьте заново. Подождите несколько минут обновления данных. Вы можете&nbsp;снова получить ошибку, но уже другого рода:</p>



<pre class="wp-block-preformatted">sudo: sorry, you must have a tty to run sudo</pre>



<p>Эта ошибка появится, если у вас пользователь zabbix создан без какой-либо оболочки. Это зависит от системы и версии заббикс агента. Проверить можно в файле&nbsp;<em>/etc/passwd</em>:</p>



<pre class="wp-block-preformatted"># cat /etc/passwd | grep zabbix
zabbix:x:496:496:Zabbix Monitoring System:/var/lib/zabbix:/sbin/<strong>nologin</strong></pre>



<p>Пользователям без оболочки по-умолчанию запрещено использовать sudo, которое мы добавили в скрипт. Исправить это можно в фале&nbsp;<em>/etc/sudoers</em>, закомментировав параметр:</p>



<pre class="wp-block-preformatted">#Defaults &nbsp; &nbsp;requiretty</pre>



<p>После этого снова отцепляем шаблон и прикрепляем заново. Теперь должно быть все в порядке.</p>



<p>Постарался предусмотреть все варианты развития событий. Наличие тех или иных ошибок будет зависеть от операционной системы и версии zabbix и asterisk.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>В очередной раз zabbix подтвердил свою простоту и гибкость настроек. Буквально за несколько минут, после беглого безрезультатного поиска в гугле, я смастерил простенький скрипт и добавил его к системе мониторинга. Поставленную задачу он успешно выполняет. Так как ставил на разные системы, пришлось отловить несколько ошибок.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/">Мониторинг транков (trunk) в asterisk с помощью zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d0%bd%d0%ba%d0%be%d0%b2-trunk-%d0%b2-asterisk-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг программного рейда mdadm в zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 18:56:49 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[raid]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1555</guid>

					<description><![CDATA[<p>Мне довольно часто приходится работать с программным рейдом в linux &#8212; mdadm. Это эффективное бюджетное решение для обеспечения отказоустойчивости дисковой</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/">Мониторинг программного рейда mdadm в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Мне довольно часто приходится работать с программным рейдом в linux &#8212; mdadm. Это эффективное бюджетное решение для обеспечения отказоустойчивости дисковой подсистемы сервера. Чтобы оперативно реагировать на проблемы с рейдом, необходимо получать информацию о его состоянии. С помощью системы мониторинга Zabbix очень легко настроить мониторинг mdadm.</p>


</br>



<h2 class="wp-block-heading">Введение</h2>



<p>У нас имеется любой сервер Linux с настроенным рейдом mdadm. Я специально не останавливаюсь на каком-то конкретном дистрибутиве, потому что этот рецепт универсален и будет актуален в любом дистрибутиве. Узнать состояние рейда можно командой в консоли:</p>



<pre class="wp-block-preformatted"># cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[6] sde1[3] sdd1[2] sdf1[4] sdc1[7] sdb1[0]
11720534016 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [<strong>UUUUUU</strong>]</pre>



<p>Заглавные буквы&nbsp;U&nbsp;означают, что все жесткие диски на месте, с рейдом все в порядке. Если какой-то из них выйдет из строя, то вместо буквы будет стоять знак&nbsp;_&nbsp;. По этому значению мы и будем определять статус рейд массива mdadm &#8212; если знака&nbsp;_&nbsp;нет, то все в порядке.</p>



<p>Воспользуемся простой командой для определения символа _ в выводе&nbsp;<strong>mdstat</strong>:</p>



<pre class="wp-block-preformatted"># egrep -c "\[.*_.*\]" /proc/mdstat</pre>



<p>Если символа _ нет, то на выходе получаем значение 0. Если же это значение больше 1, то рейд считается поврежденным, zabbix отправляет уведомление. Отправлять полученные значения на сервер мониторинга будем с помощью <strong>UserParameter</strong>.</p>


</br>



<h2 class="wp-block-heading">Настройка агента для мониторинга mdadm</h2>



<p>Идем на сервер с настроенным mdadm, который будем мониторить и добавляем в файл конфигурации агента zabbix новый параметр:</p>



<pre class="wp-block-preformatted"># mcedit /etc/zabbix/zabbix_agentd.conf

UserParameter=mdadm.status,egrep -c "\[.*_.*\]" /proc/mdstat</pre>



<p>Перезапускаем агент той командой, которая актуальна для вашей системы. Скорее всего сгодится такая:</p>



<pre class="wp-block-preformatted"># service zabbix-agent restart</pre>



<p>Проверим работу этого параметра:</p>



<pre class="wp-block-preformatted"># zabbix_agentd -t mdadm.status
mdadm.status [t|0]</pre>



<p>Все в порядке. Рейд в нормальном состоянии, команда возвращает параметр 0. Для проверки правильности регулярного выражения можно направить вывод&nbsp;/proc/mdstat в текстовый файл, изменить там значение&nbsp;U&nbsp;на&nbsp;_&nbsp;и прогнать egrep по этому файлу. Должно на выходе быть значение 1 или более, в зависимости от того, сколько вы подчеркиваний добавите. Например вот так:</p>



<pre class="wp-block-preformatted"># cat /proc/mdstat &gt; /root/mdstat
# mcedit /root/mdstat</pre>



<p>Заменяем&nbsp;U&nbsp;на&nbsp;_&nbsp;.</p>



<pre class="wp-block-preformatted"># cat /root/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[6] sde1[3] sdd1[2] sdf1[4] sdc1[7] sdb1[0]
11720534016 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUU<strong>_</strong>UU]

# egrep -c "\[.*_.*\]" /root/mdstat
<strong>1</strong></pre>



<p>Все верно, команда отрабатывает правильно, значит мониторинг будет корректно работать.</p>


</br>



<h2 class="wp-block-heading">Настройка на сервере Zabbix</h2>



<p>Теперь идем на сервер мониторинга и настраиваем на нем все, что необходимо для мониторинга mdadm. Нам нужно будет создать шаблон, в нем один item и один trigger. Создаем шаблон: <strong>Configuration</strong> -> <strong>Templates</strong> ->  <strong>Create template</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/02/zabbix-mdadm-01.png" alt="Добавление шаблон mdadm в zabbix" class="wp-image-2834"/></figure></div>



<p>Пишем название, добавляем в группу и сохраняем. Открываем созданный шаблон, переходим в&nbsp;<strong>Items</strong>&nbsp;и создаем новый.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/02/zabbix-mdadm-02.png" alt="добавляем новый итем" class="wp-image-2835"/></figure></div>



<p>Заполняем параметры как у меня и жмем&nbsp;<strong>add</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/02/zabbix-mdadm-03.png" alt="заполняем параметры mdadm.status" class="wp-image-2836"/></figure></div>



<p>Я&nbsp;установил интервал обновления этого параметра в 3600 секунд, то есть раз в час. Не вижу смысла проверять его чаще. В этом нет практической пользы.</p>



<p>Теперь добавим триггер, который будет срабатывать, если с рейдом проблемы. Переходим на список триггеров, жмем&nbsp;<strong>Create trigger</strong>&nbsp;и заполняем значения.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/02/zabbix-mdadm-04.png" alt="создаем триггер для отправки оповещений" class="wp-image-2837"/></figure></div>



<p>Добавляем триггер. На этом настройка шаблона закончена. Можно назначить шаблон всем хостам, на которых мы добавили &nbsp;UserParameter и ждать, когда в Last Data появятся первые значения. Я на момент отладки на всякий случай поставил сбор данных каждые 60 секунд. Когда убедился, что все работает, изменил это значение обратно на 3600.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Вот так легко и просто настроить необходимый мониторинг в Zabbix. Пользовательские параметры предоставляют широкие возможности по настройке. Можно мониторить все, что угодно. Даже в данном случае можно придумать целую кучу всевозможных команд, с помощью которых можно собирать данные по mdadm. Можно сохранять не только состояние рейда, но и подробную информацию о нем. Для этого нужно просто полный&nbsp;вывод сделать и передавать его на сервер.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/">Мониторинг программного рейда mdadm в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг времени делегирования домена в zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 15:37:27 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1548</guid>

					<description><![CDATA[<p>Статья исследование на тему проверки и мониторинга данных из whois сервисов. Задача мониторинга времени делегирования домена на деле оказалась не</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/">Мониторинг времени делегирования домена в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Статья исследование на тему проверки и мониторинга данных из whois сервисов. Задача мониторинга времени делегирования домена на деле оказалась не такой простой, как может показаться. Ниже я подробно расскажу обо всех нюансах мониторинга времени оплаты домена с помощью zabbix.</p>


</br>



<h2 class="wp-block-heading">Введение</h2>



<p>Данная статья была изначально написана пару лет назад. В целом, она отвечала на вопрос по мониторингу за делегированием доменов, но со временем к ней стало появляться все больше вопросов. В частности, появлялись новые доменные зоны, информацию по которым не получалось достать выбранным методом. К слову, в первоначальной версии статьи использовалась только одна проверка с помощью&nbsp;<strong>ruby</strong>.</p>



<p>Чем больше доменов я ставил на мониторинг, тем чаще сталкивался с тем, что по каким-то зонам не мог получить инфу. Из свежих примеров &#8212; .pro, .fm, .io. Наверняка были и другие, но я сталкивался с проблемами именно в этих зонах. Решил разобраться с этим вопросом поподробнее.</p>



<p>К моему удивлению, оказалось, что простого, понятного и надежного решения по получению информации о времени делегирования домена просто не существует. Очень подробно разобрана эта тема в статье на&nbsp;<a href="https://habr.com/post/165869/" target="_blank" rel="noreferrer noopener">хабре</a>. Прочитав и осознав все, что в ней написано, я понял, что реализовать простую потребность в мониторинге доменов малой кровью не получится.</p>



<p>Я стал разбираться, копать тему. Погрузился в нее плотно и потратил кучу времени на казалось бы простецкую задачу. Но увы, универсального и надежного решения так и не получил. Полученный опыт хочу зафиксировать и поделиться им с вами. Может кто-то пойдет дальше и придумает что-то более надежное.</p>



<p>Ниже я опишу несколько консольных способов получения информации о времени оплаты домена для передачи этой информации в zabbix:</p>



<ul><li>Ruby gem Whois.</li><li>Консольная утилита linux &#8212; whois, jwhois.</li><li>Питоновский модуль &#8212;&nbsp;python-whois.</li><li>Whois client для node.js.</li></ul>



<p>Первый способ был описан давно, поэтому он по содержанию немного выбивается из общего повествования. Мне не захотелось редактировать всю статью. Я только добавил в начало описание проблемы и другие способы получения информации в конце. Сама реализация со стороны zabbix осталась той же самой. Меняются только скрипты, которые передают в zabbix данные о сроках делегирования домена.</p>



<p>Для удобного выбора нужного способа, составил табличку, где указал, какой из способов какие домены поддерживает. Использовал только те домены, которые нужны мне. Стандартные домены .ru и .com поддерживают все описанные способы.</p>



<figure class="wp-block-table"><table><tbody><tr><td>способ / домен</td><td>pro</td><td>io</td><td>fm</td></tr><tr><td>ruby</td><td><strong>+</strong></td><td><strong>+</strong></td><td><strong>+</strong></td></tr><tr><td>whois</td><td><strong>&#8212;</strong></td><td><strong>+</strong></td><td><strong>&#8212;</strong></td></tr><tr><td>python</td><td><strong>+</strong></td><td><strong>&#8212;</strong></td><td><strong>+</strong></td></tr><tr><td>nodejs</td><td><strong>+</strong></td><td><strong>+</strong></td><td><strong>&#8212;</strong></td></tr></tbody></table></figure>


</br>



<h2 class="wp-block-heading">Подготовка к мониторингу за доменами</h2>



<p>Для мониторинга за сроком делегирования доменов мы будем использовать скрипт на языке программирования <strong>Ruby</strong>. Чтобы скрипт работал, необходимо установить Ruby на сервер. Там как раз речь идет об установке необходимого гема <strong>whois-parser</strong> для мониторинга срока делегирования домена.</p>



<h2 class="wp-block-heading">Парсинг времени делегирования домена через ruby</h2>



<p>Если у вас настроен и готов к работе zabbix и установлен ruby, приступаем к настройке скриптов. Идем в папку&nbsp;<em>/etc/zabbix/scripts</em>&nbsp;и создаем там скрипт:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/zabbix/scripts/domain_left.rb</pre>



<pre class="wp-block-preformatted">#!/usr/bin/env ruby

require 'whois-parser'

record = Whois.whois(ARGV[0])
parser = record.parser
expire = parser.expires_on.strftime("%Y-%m-%d")
today = Time.now.strftime("%Y-%m-%d")
expire_date = DateTime.parse(expire)
today_date = DateTime.parse(today)
left = (expire_date - today_date).to_i
puts left</pre>



<p>Его тут же можно проверить. Сохраняете скрипт и запускаете в командной строке, указывая через пробел имя домена для проверки:</p>



<pre class="wp-block-preformatted"># /etc/zabbix/scripts/domain_left.rb serveradmin.ru
394</pre>



<p>Отлично, на выходе просто число, которое очень удобно передать в zabbix. Данный скрипт я написал не сам, а подсмотрел у автора&nbsp;<a href="https://tradenark.com.ua/monitoring/zabbix/zabbix-monitoring-domain-expire/" target="_blank" rel="noreferrer noopener">этой</a>&nbsp;статьи. У него есть большой минус. В скрипте используется whois-parser и его функция expires_on. Сделано это для упрощения создания скрипта. Не пришлось вручную парсить вывод, за нас это сделали авторы гема whois-parser. Но эти функции работают не со всеми доменами. В разных зонах вывод может быть разным. Покажу на примере.</p>



<p>Для этого создадим простой скрипт на ruby, который будет просто выводить информацию whois без парсинга, в сыром виде.</p>



<pre class="wp-block-preformatted">#!/usr/bin/env ruby

require 'whois-parser'
domain = ARGV[0]
whois = Whois::Client.new
r = whois.lookup(domain)
puts r</pre>



<p>Сохраняем скрипт и проверим с его помощью 2 домена: из зоны .pro и зоны .ru.</p>



<pre class="wp-block-preformatted"># ./domain.rb server.pro</pre>



<pre class="wp-block-preformatted"># ./domain.rb serveradmin.ru</pre>



<p>Если вы внимательно посмотрите на вывод, то обнаружите, что в первом случае строка с информацией о сроке оплаты домена выглядит так:</p>



<pre class="wp-block-preformatted">Registry Expiry Date: 2019-08-18T00:00:00Z</pre>



<p>а в другом вот так:</p>



<pre class="wp-block-preformatted">paid-till:     2019-08-09T11:01:06Z</pre>



<p>Whois-parser умеет обрабатывать только первую строчку, вторую он не понимает, поэтому приведенный выше скрипт выдаст ошибку. Но в целом, библиотека ruby whois по моим опытам корректно обрабатывает больше всего доменов. Нужно только правильно распарсить вывод. Я программировать на ruby не умею, разбираться у меня не было времени, поэтому я оставил это решение как есть. Можно, конечно, выводить в текстовый файл, а потом парсить вывод через bash. Это я умею, но не захотелось костылить таким образом. Да и в целом, мне не нравится этот способ тем, что надо ставить ruby и регулярно обновлять его библиотеку. Только это гарантирует поддержку новых зон и всех изменений по старым.</p>



<p>В общем и целом способ с приведенным скриптом на ruby работает не хуже всех остальных способов, а если нормально распарсить выводы по всем нужным зонам, то это будет самый информативный и надежный вариант, при условии, что вы будете везде ставить ruby и обновлять библиотеку whois. Только этот способ показывал информацию по всем доменам, что мне попадались. Если доделаю скрипт, чтобы он работал со всеми доменами &#8212; обновлю.</p>


</br>



<p>Пока же я просто сделал костыль и распарсил вывод с помощью bash следующим образом:</p>



<pre class="wp-block-preformatted">#!/bin/bash

DOMAIN="$1"

data=$(/etc/zabbix/scripts/domain-simple.rb $1 | grep -E 'paid|Expir' | grep -o -E '[0-9]{4}.[0-9]{2}.[0-9]{2}|[0-9]{2}/[0-9]{2}/[0-9]{4}' | tr . / | awk 'NR == 1')
expire=$((`date -d "$data" '+%s'`))
today=$((`date '+%s'`))
lefts=$(($expire - $today))
leftd=$(($lefts/86400))
echo $leftd</pre>



<p>Сам скрипт domain-simple.rb:</p>



<pre class="wp-block-preformatted">#!/usr/bin/env ruby

require 'whois-parser'
record = Whois.whois(ARGV[0])
puts record</pre>



<p>Я просто делаю полный вывод whois через ruby, а распарсиваю его башем, так как умею в нем работать. Получился вариант, который работает со всеми доменами. Можно этим скриптом передавать данные в zabbix.</p>


</br>



<h2 class="wp-block-heading">Linux утилиты whois и jwhois</h2>



<p>В комментариях к первоначальной статье мне подсказали про консольную утилиту whois, а позже я нагуглил и еще одну &#8212; jwhois. Я посмотрел на них внимательно и написал простенький скрипт для парсинга информации о делегировании. Данный способ самый простой и удобный. Обе утилиты ставятся через yum, первая из базового репозитория, вторая из <a href="http://Подключить repo epel, rpmforge и другие репозитории в CentOS" target="_blank" rel="noreferrer noopener">репозитория epel</a>. Не нужно дополнительных инструментов. Информативность средняя &#8212; все популярные домены есть, в том числе .io, но .pro и .fm не поддерживает. Увы и ах, мне они нужны.</p>



<p>Установим утилиту whois:</p>



<pre class="wp-block-preformatted"># yum install whois</pre>



<p>Простой скрипт, который парсит вывод утилиты и показывает, сколько осталось дней до завершения проплаченного периода домена.</p>



<pre class="wp-block-preformatted">#!/bin/bash
 
DOMAIN="$1"
 
data=$(whois $1 | grep -E 'paid|Expir|expir' | grep -o -E '[0-9]{4}.[0-9]{2}.[0-9]{2}|[0-9]{2}/[0-9]{2}/[0-9]{4}' | tr . / | awk 'NR == 1')
expire=$((`date -d "$data" '+%s'`))
today=$((`date '+%s'`))
lefts=$(($expire - $today))
leftd=$(($lefts/86400))
echo $leftd</pre>



<p>Сохраняйте скрипт и проверяйте работу. Работает так же, как и скрипт для ruby.</p>



<pre class="wp-block-preformatted"># ./domain_left.sh serveradmin.ru
358</pre>



<p>Я для себя решил остановиться на этом способе, как самом простом и универсальном.</p>


</br>



<h2 class="wp-block-heading">Модуль python-whois для мониторинга оплаты доменов</h2>



<p>В рамках своего исследования я решил проверить как с помощью python можно получать информацию whois. Я подозревал, что должен быть готовый модуль для этого и не ошибся. Такой модуль есть &#8212;&nbsp;<a href="https://bitbucket.org/richardpenman/pywhois" target="_blank" rel="noreferrer noopener">python-whois</a>. Для его работы нужен python версии 2, который по-умолчанию стоит в системе CentOS 7, что очень удобно.</p>



<p>Нам нужно только установить этот модуль через pip. Pip для 2-й версии ставится из <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d0%bf%d0%be%d0%b4%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-repo-epel-rpmforge-%d0%b8-%d0%b4%d1%80%d1%83%d0%b3%d0%b8%d0%b5-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%b8-%d0%b2-c/" target="_blank" rel="noreferrer noopener">репозитория epel</a>.</p>



<pre class="wp-block-preformatted"># yum install python2-pip
# pip install python-whois</pre>



<p>Дальше набросал небольшой скрипт под заданную задачу, аналог предыдущих скриптов.</p>



<pre class="wp-block-preformatted">#!/usr/bin/env python

import whois
from datetime import datetime
from sys import argv,exit

now = datetime.now()
domain = argv[1]

w = whois.whois(domain)

if type(w.expiration_date) == list:
    w.expiration_date = w.expiration_date[0]
else:
    w.expiration_date = w.expiration_date

domain_expiration_date = str(w.expiration_date.day) + '/' + str(w.expiration_date.month) + '/' + str(w.expiration_date.year)
timedelta = w.expiration_date - now
days_to_expire = timedelta.days</pre>



<p>Проверка:</p>



<pre class="wp-block-preformatted"># ./domain-left.py serveradmin.ru
358</pre>



<p>Работает так же, как и предыдущие скрипты. Решение на python поддерживает зоны .pro, .fm, не поддерживает .io.</p>



<h2 class="wp-block-heading">Whois клиент для Node.js</h2>



<p>Последнее рассмотренное мной консольное решение по получению данных whois основывается на клиенте для Node.js. Этот способ неудобен, как и с ruby, тем, что надо отдельно ставить node на сервер. Если python на centos сервере точно будет, то node придется ставить отдельно. Сделаем это.</p>



<pre class="wp-block-preformatted"># curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
# yum install nodejs</pre>



<p>Устанавливаем whois client:</p>



<pre class="wp-block-preformatted"># npm install whois</pre>



<p>Под node.js я программировать вообще не умею и со скриптами не работал никогда. Так что готового скрипта для zabbix не сделал. Покажу на простом примере, как выполнять проверку. Делаем скрипт и в нем сразу указываем домен для проверки.</p>



<pre class="wp-block-preformatted">var whois = require('whois')
whois.lookup('serveradmin.ru', function(err, data) {
    console.log(data)
    })</pre>



<p>Запускаем его:</p>



<pre class="wp-block-preformatted"># node domain-left.js</pre>



<p>В выводе увидите привычную информацию whois в таком же виде, как и для остальных проверок. Если бы этот способ проверял все необходимые мне домены, я бы его доделал. Он понимает домены .pro и .io, но не понимает .fm. Так что я не стал на нем подробно останавливаться.</p>


</br>



<h2 class="wp-block-heading">Скрипт auto discovery доменов для zabbix</h2>



<p>Для того, чтобы автоматом передавать в заббикс сразу все наши домены, создадим еще один скрипт, который будет парсить текстовый файл со списком доменов и передавать его в zabbix.</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/zabbix/scripts/domain_discovery.sh</pre>



<pre class="wp-block-preformatted">#!/bin/bash
JSON=$(for i in `cat /etc/zabbix/scripts/domain_list.txt`; do printf "{\"{#DOMAIN}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/')
printf "{\"data\":["
printf "$JSON"
printf "]}"</pre>



<p>И последнее &#8212; создадим файл со списком доменов. Каждый домен с новой строки.</p>



<pre class="wp-block-preformatted">#&nbsp;mcedit&nbsp;/etc/zabbix/scripts/domain_list.txt</pre>



<pre class="wp-block-preformatted">yandex.ru
mail.ru</pre>



<p>Проверим работу скрипта для парсинга:</p>



<pre class="wp-block-preformatted"># /etc/zabbix/scripts/domain_discovery.sh
{"data":[{"{#DOMAIN}":"mail.ru"},{"{#DOMAIN}":"yandex.ru"}]}</pre>



<p>Вывод подходящий для передачи в заббикс.</p>



<h2 class="wp-block-heading">Настройка zabbix агента</h2>



<p>Я настраиваю zabbix агент на работу со скриптом на ruby. Вы можете выбрать скрипт по своему усмотрению. Изменить нужно будет только путь к скрипту в описании итема domain.expire.</p>



<p>Добавим скрипты через пользовательские параметры (UserParameter) агента. Для этого идем в папку с пользовательскими скриптами&nbsp;<em>/etc/zabbix/zabbix_agentd.d</em>&nbsp;и создаем там конфиг для наших параметров:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/zabbix/zabbix_agentd.d/domain.conf</pre>



<pre class="wp-block-preformatted">UserParameter=domain.discovery[*], /bin/bash /etc/zabbix/scripts/domain_discovery.sh
UserParameter=domain.expire[*], <strong>/usr/local/bin/ruby</strong> /etc/zabbix/scripts/domain_left.rb $1</pre>



<p>Обращаю внимание на путь к ruby. В разных системах он может быть разный. Проверьте куда он у вас установлен и отредактируйте путь. Проверить можно командой:</p>



<pre class="wp-block-preformatted"># whereis ruby
ruby: /usr/lib64/ruby <strong>/usr/local/bin/ruby</strong> /usr/local/lib/ruby /usr/share/ruby /usr/src/ruby-2.3.1/ruby.o /usr/src/ruby-2.3.1/ruby /usr/src/ruby-2.3.1/ruby.c</pre>



<p>Сохраняйте конфиг и перезапускайте zabbix agent:</p>



<pre class="wp-block-preformatted"># systemctl restart zabbix-agent</pre>



<p>В консоли закончили настройки, теперь идем в панель администрирования заббикс.</p>


</br>



<h2 class="wp-block-heading">Создание шаблона для наблюдения за доменами</h2>



<p>Дальше все стандартно и просто. Я выгрузил готовый шаблон у себя и предлагаю вам его скачать и импортировать, чтобы вручную не создавать все необходимое. Забираем файл &#8212; <a href="https://clip-clap.ru/wp-content/uploads/2020/08/domain-expiration-template.zip" target="_blank" rel="noreferrer noopener">шаблон</a>.</p>



<p>Импортируете шаблон себе в систему. Назначаете его хосту, в котором настроили скрипты и ждете появления данных. Минут через 5 проверяете в Latest Data:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-domain-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-domain-01.png" alt="Мониторинг делегирования домена в zabbix" class="wp-image-3347"/></a></figure></div>



<p>Забавно, время делегирования обоих доменов одинаковое. Сначала подумал, что глюк, решил проверить вручную. Оказалось, что все верно. У них одинаковый срок продления. Без проблем работает наблюдение за доменами .рф. Их нужно перевести в&nbsp;Punycode и добавить так же, как и обычные домены.</p>



<p>Если необходимо, можете настроить <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">повторяющиеся оповещения</a> о времени делегирования домена. В данном случае это может быть актуально, так как не продлив сразу домен, можно потом позабыть.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/">Мониторинг времени делегирования домена в zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b5%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Повторяющиеся уведомления в Zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 15:31:08 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1549</guid>

					<description><![CDATA[<p>Система мониторинга Zabbix в стандартной установке предлагает один тип оповещений на события &#8212; одноразовое уведомление при срабатывании триггера. Если ты</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/">Повторяющиеся уведомления в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Система мониторинга Zabbix в стандартной установке предлагает один тип оповещений на события &#8212; одноразовое уведомление при срабатывании триггера. Если ты по какой-то причине не заметил уведомление, или забыл на него среагировать, через некоторое время ситуация может стать критической. В таком случае могут быть полезны повторяющиеся напоминания о том, что проблема еще не исправлена.</p>


</br>



<h2 class="wp-block-heading">Введение</h2>



<p>Тема повторных уведомлений хорошо освещена в&nbsp;<a href="https://www.zabbix.com/documentation/3.4/ru/manual/config/notifications/action/escalations" target="_blank" rel="noreferrer noopener">официальной документации заббикс</a>. В разделе про&nbsp;<strong>Эскалации</strong>&nbsp;рассказано, как управлять оповещениями, в том числе делать их повторными. Сам я без проблем разобрался на основе документации, но тем не менее для полноты картины настройки zabbix, подробно раскрою эту тему у себя на конкретном примере.</p>



<p>Дальнейшие действия я буду выполнять в системе CentOS 7 и версии Zabbix сервера 3.4.6. Все описанное ниже будет актуально и для других систем и версий заббикса, так как разработчики стараются максимально сохранять совместимость между версиями.</p>



<h2 class="wp-block-heading">Подготовка тестового триггера</h2>



<p>Я в своих статьях по настройке заббикса часто использую в качестве примера триггер, который срабатывает, когда залогиненных пользователей в системе становится больше 2-х. Он основывается на стандартном итеме шаблона Template OS Linux &#8212;&nbsp;Number of logged in users.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-01.png" alt="Подготовка тестового триггера" class="wp-image-6226"/></a></figure></div>



<p>Триггер срабатывает, когда каждое из двух последних значения залогиненных в систему пользователей больше двух&nbsp;(<em>count(#2,1,&#187;gt&#187;)}=2</em>), выключается, когда последнее значение залогиненных пользователей меньше двух (<em>last(#1)}&lt;2</em>). То есть, когда мы заходим двумя пользователями на сервер, через 2 минуты срабатывает триггер. Когда остается только один пользователь или вообще ни одного, через минуту триггер выключается.</p>



<p>Прежде чем двигаться дальше, рекомендую проверить работу триггера и оповещений и убедиться в том, что все работает правильно. Далее я настрою оповещения, которые будут повторяться каждую минуту до тех пор, пока залогиненных юзеров не станет меньше двух.</p>


</br>



<h2 class="wp-block-heading">Настройка повторяющегося оповещения</h2>



<p>После того, как убедились, что тестовый триггер работает, настроим для него повторяющееся уведомление. Для этого идем в раздел&nbsp;<strong>Настройка -&gt; Действия</strong>&nbsp;и нажимаем&nbsp;Создать действие.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-02.png" alt="Создание нового действия" class="wp-image-6227"/></a></figure></div>



<p>Во вкладке&nbsp;<strong>Действие</strong>&nbsp;указываете имя и добавляете тестовый триггер.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-03.png" alt="Условия срабатывания действия" class="wp-image-6228"/></a></figure></div>



<p>Дальше переходим в раздел&nbsp;<strong>Операции</strong>&nbsp;и указываем длительность шага равное 1 минуте. Добавляем шаг с параметром 1 &#8212; 0 и указываем необходимое действие. В примере я просто буду отправлять всем администраторам оповещение на почту.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-04.png" alt="Настройка повторения оповещений" class="wp-image-6229"/></a></figure></div>



<p>Сохраняйте настроенное действие и ждите срабатывания триггера. Вы должны получать оповещение на почту каждую минуту до тех пор, пока триггер не будет отключен. Обращаю внимание, что вы получите оповещение и от стандартного правила, которое шлет один раз и от нового, которое повторяющееся. Чтобы все было красиво и удобно, необходимо отключать стандартное оповещение и создавать свои с определенными правилами в зависимости от типа триггера.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>На такие события не требуется мгновенная реакция. Она может последовать и через несколько дней. Но когда откладываешь действие на несколько дней вперед, очень легко забыть о нем. Тут придут на помощь ежедневные напоминания о проблеме. Я их настроил вот так:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-05.png" alt="Уведомление о делегировании домена" class="wp-image-6230"/></a></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-06.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/02/zabbix-repeating-notification-06.png" alt="Повторяющееся уведомление с интервалом в 1 день" class="wp-image-6231"/></a></figure></div>



<p>Если вы настроили&nbsp;<a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%be%d0%b2-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">мониторинг бэкапов</a>, который выполняется ночью, то его тоже не обязательно чинить в ту же минуту, можно отложить на вечернее время. Чтобы не забыть, можно настроить уведомления раз в 2 часа. И так далее. Смысл, я думаю, понятен.</p>


</br>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/">Повторяющиеся уведомления в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bf%d0%be%d0%b2%d1%82%d0%be%d1%80%d1%8f%d1%8e%d1%89%d0%b8%d0%b5%d1%81%d1%8f-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-zabbix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Мониторинг значений из текстового файла в Zabbix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 15:25:35 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1543</guid>

					<description><![CDATA[<p>Недавно мне досталась любопытная задача по мониторингу системы управления насосами и электрооборудованием. Как сами эти системы работают не знаю, для</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/">Мониторинг значений из текстового файла в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Недавно мне досталась любопытная задача по мониторингу системы управления насосами и электрооборудованием. Как сами эти системы работают не знаю, для меня значения с контроллеров вывели в текстовые файлы на компьютере под управлением Windows. Моей задачей было передать параметры из текстового файла в систему мониторинга Zabbix.</p>


</br>



<h2 class="wp-block-heading">Введение</h2>



<p>Если у вас еще нет готовой системы мониторинга, можете воспользоваться моей статьей по <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-zabbix-3-4-%d0%bd%d0%b0-debian-9/" target="_blank" rel="noreferrer noopener">установке и настройке zabbix на centos</a>.</p>



<p>Задача по своей сути не сложная. Нечто похожее я уже делал, когда настраивал <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/" target="_blank" rel="noreferrer noopener">мониторинг температуры процессора в windows сервере</a>. Мы берем текстовый файл, парсим его с помощью bat файлов и передаем готовые числовые или строковые значения в Zabbix через windows агента и функционал <a href="https://www.zabbix.com/documentation/3.0/ru/manual/config/items/userparameters" target="_blank" rel="noreferrer noopener"><strong>UserParameter</strong></a>.</p>



<p>Пишу эту статью в основном для того, чтобы поделиться примерами написания bat файлов для парсинга и передачи в заббикс. Для меня это было самое сложное, так как приходилось сталкиваться с различными проблемами по вычленению значений&nbsp;и искать варианты для преобразования строк. Я не очень разбираюсь в программировании, особенно в bat файлах. В основном ищу готовые варианты и переделываю под себя. Тут ничего готового я не нашел и пришлось ковыряться и разбираться самому.</p>



<h2 class="wp-block-heading">Скрипты для парсинга значений</h2>



<p>Первый текстовый файл имел примерно такое содержание:</p>



<pre class="wp-block-preformatted">state_pump_1: off
state_pump_2: off
running_time_pump_1: 557
running_time_pump_2: 442
sensor: empty
general_state: OK</pre>



<p>Описание возможных значений параметров:</p>



<ul><li><em>state_pump</em>&nbsp;может принимать значения on или off</li><li><em>running_time_pump</em>&nbsp;имеет нарастающее числовое значение</li><li><em>sensor</em>&nbsp;может принимать 3 значения:&nbsp;empty, full, overflow</li><li><em>general_state</em>&nbsp;либо ОК, либо номер ошибки</li></ul>



<p>Рисуем батник для первого параметра. Если значение on, передаем в заббикс 1, если off &#8212; 0.</p>



<pre class="wp-block-preformatted">@echo off
for /f "delims=" %%a in ('find /i "state_pump_1: off" ^&lt; D:\Насосы.txt') do echo 0
for /f "delims=" %%a in ('find /i "state_pump_1: on" ^&lt; D:\Насосы.txt') do echo 1</pre>



<p>Обращаю внимание на то, что у меня имя файла было на русском языке. Чтобы его корректно обрабатывало, необходимо сохранить файл в кодировке&nbsp;<strong>OEM 866</strong>. ПО крайней мере так она называлась в Notepad++, который я использовал для изменения кодировки. Это была самая простая задача, которая решилась прямо в лоб. По аналогии написал скрипт для параметра&nbsp;sensor:</p>



<pre class="wp-block-preformatted">@echo off
for /f "delims=" %%a in ('find /i "sensor: empty" ^&lt; D:\Насосы.txt') do echo 0
for /f "delims=" %%a in ('find /i "sensor: full" ^&lt;D:\Насосы.txt') do echo 1
for /f "delims=" %%a in ('find /i "sensor: overflow" ^&lt; D:\Насосы.txt') do echo 2</pre>


</br>



<p>Дальше пришлось соображать, как передать числовое значение, обрезав все, что стоит перед ним. Наверное, для любого программиста это простая задача, для скрипта в linux я тоже не вижу больших проблем придумать что-нибудь с sed, cat, grep или чем-то еще. Но тут у меня в распоряжении bat. Можно было на vbs написать, но для меня это было бы еще сложнее.</p>



<p>Начал читать документацию по&nbsp;<strong>for</strong>&nbsp;и&nbsp;<strong>find</strong>, смотреть примеры и пробовать. В итоге все получилось очень просто и коротенько, но повозиться мне пришлось прилично, пока родились эти строки:</p>



<pre class="wp-block-preformatted">@echo off
for /f "delims=" %%a in ('find /i "running_time_pump_1:" ^&lt; D:\Насосы.txt') do set str=%%a
set d=%str:~21,25%
Echo %d%</pre>



<p>Подробно описывать не буду, что тут к чему, при желании сами можете поискать описание параметров. Обращу внимание только на строку&nbsp;<em>set d=%str:~21,25%</em>. Она меня очень выручила. Наткнулся где-то в примере на описание обрезания строк по заданным колонкам. Тут мы выводим значения с 21 по 25 колонки найденной строки. Как раз то, что мне нужно. На выходе просто цифры, которые отлично принимает zabbix.</p>



<p>Обработку параметра&nbsp;<em>general_state</em>&nbsp;делаем аналогичным способом:</p>



<pre class="wp-block-preformatted">@echo off
for /f "delims=" %%a in ('find /i "general_state:" ^&lt; D:\Насосы.txt') do set str=%%a
set d=%str:~15,25%
Echo %d%</pre>



<p>Поступающее значение я передаю в заббикс как простую строку, в отличие от чисел в предыдущих примерах.</p>



<p>Второй текстовый файл был примерно такого содержания:</p>



<pre class="wp-block-preformatted">Power = 1
MAP = 1
bypass = 0
Voltage = 230
Electric_current = 5.1
Full_power = 1173
Active_power = 959
Reactive_power = 676
Cos_F = 0.82
frequency = 50</pre>


</br>



<p>Здесь по аналогии делается все так же, как и в первом примере за одним исключением. Я в какой-то момент поставил в команде&nbsp;<strong>find</strong>&nbsp;ключ&nbsp;<strong>/i</strong>, который означает, что значение ищется без учета регистра. В итоге в новом файле я получил проблемы при поиске строк, где есть слово&nbsp;<em>power</em>. Таких строк несколько, причем первая точно повторяет 6-ю, где встречается точно такая же конструкция:</p>



<pre class="wp-block-preformatted">Power = 1
Full_<strong>power = 1</strong>173</pre>



<p>Или еще пример со строками:</p>



<pre class="wp-block-preformatted">Active_power = 959
Re<strong>active_power</strong> = 676</pre>



<p>Я начал думать, гадать и заходить окольными путями для решения проблемы. В цикле&nbsp;<strong>for</strong>&nbsp;есть параметр&nbsp;<strong>eol</strong>, который позволяет задать символ начала строки, при встрече которого строка не обрабатывается. Например вот так:</p>



<pre class="wp-block-preformatted">@echo off
for /f "<strong>eol=R</strong> delims=" %%a in ('find /i "active_power =" ^&lt; D:\Электрика.txt') do set str=%%a
set d=%str:~15,19%
Echo %d%</pre>



<p>То есть я нахожу первую и нужную мне строку с&nbsp;<em>active_power</em>, а вторую, где тоже есть эта фраза пропускаю, так как она начинается с символа&nbsp;<em>R</em>. Такой вот костыль придумал, но тем не менее поставленную задачу эта конструкция решает. Рассказываю об этом, чтобы поделиться опытом и самому потом не забыть эти подходы. В итоге я просто убрал ключ&nbsp;<strong>/i</strong>&nbsp;в команде&nbsp;<strong>find</strong>&nbsp;и поиск стал работать с учетом регистра без лишних телодвижений.</p>



<p>Распарсил в итоге второй файл. Проверять работу скриптов нужно в командной строке, просто их запуская. На выходе вы должны получать готовые значения, без лишних строк. Теперь двигаемся дальше и настраиваем zabbix agent на сбор данных.</p>


</br>



<h2 class="wp-block-heading">Добавляем UserParameter в zabbix agent</h2>



<p>Открываем конфигурационный файл агента и добавляем в самый конец новые параметры, которые будет собирать zabbix:</p>



<pre class="wp-block-preformatted">UserParameter=pump_1, C:\zabbix\parser\pump_1.bat
UserParameter=time_pump_1, C:\zabbix\parser\time_pump_1.bat
UserParameter=state, C:\zabbix\parser\state.bat
UserParameter=power, C:\zabbix\parser\electric-power.bat</pre>



<p>И так далее. Не стал приводить полный вывод своего файла. По аналогии делаете у себя. Первое значение это название ключа, который будет указан в итеме на сервере, второе это путь к батнику.</p>



<p>После изменения конфигурационного файла нужно перезапустить службу агента. Проверить, все ли сделано правильно можно с помощью команды в консоли:</p>



<pre class="wp-block-preformatted">C:\zabbix&gt;zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t power
power &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [t|1]</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-textfile-01.png" alt="Проверка работы zabbix agent" class="wp-image-3386"/></figure></div>



<p>Если у вас все работает и значения правильные выводятся, идем на сервер, настраивать сбор параметров.</p>


</br>



<h2 class="wp-block-heading">Настройка новый итемов на сервере zabbix</h2>



<p>Мы можем добавить новые итемы на одиночный хост, в котором указаны в агенте необходимые для сбора&nbsp;UserParameter, либо создать сразу шаблон и потом его добавить к нужным хостам. Если у вас хостов с одинаковым мониторингом больше одного, то делать нужно шаблон, чтобы упростить себе жизнь.</p>



<p>Создаем новый итем в хосте, либо шаблоне. Указываете следующие обязательные параметры (я рекомендую использовать английский язык везде):</p>



<figure class="wp-block-table"><table><tbody><tr><td>Имя</td><td>Произвольное имя итема</td></tr><tr><td>&nbsp;Тип</td><td>&nbsp;В общем случае используются пассивные проверки (Zabbix agent)</td></tr><tr><td>&nbsp;Ключ</td><td>&nbsp;Название ключа, который указан в агенте в&nbsp;UserParameter</td></tr><tr><td>&nbsp;Тип данных</td><td>&nbsp;Выбираете в зависимости от типа поступаемых данных. В моем случае это были цифровые целые или с плавающей точкой, если значения дробные, и текстовые. Здесь важно не перепутать тип. Если перепутаете, получите ошибку итема.</td></tr><tr><td>&nbsp;Интервал обновления</td><td>&nbsp;Как часто будут поступать новые данные</td></tr></tbody></table></figure>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-textfile-02.png" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/07/zabbix-textfile-02.png" alt="Добавление произвольного итема в заббикс" class="wp-image-3387"/></a></figure></div>



<p>На этом все. Сохраняете итем и ждете поступление данных. Числовые значения, которые генерируют скрипты на клиенте с агентом будут поступать на сервер.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Подобным способом&nbsp;можно настроить мониторинг любых значений текстового файла. Достаточно его распарсить нужным образом. Хотя в большинстве случаев это будет костылем. У заббикса очень много способов получения данных. Лучше обходиться без промежуточных звеньев в виде текстового файла и передавать данные напрямую в zabbix. Но конкретно в данной ситуации это было самое простое и быстрое решение.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/">Мониторинг значений из текстового файла в Zabbix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%84%d0%b0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zabbix настройка мониторинга температуры</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 15:22:39 +0000</pubDate>
				<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1544</guid>

					<description><![CDATA[<p>Появилась у меня потребность мониторить температуру windows серверов в Zabbix. Из систем мониторинга он мне больше всего нравится, поэтому смотрел в</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/">Zabbix настройка мониторинга температуры</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Появилась у меня потребность мониторить температуру windows серверов в Zabbix. Из систем мониторинга он мне больше всего нравится, поэтому смотрел в его сторону. Решение задачи оказалось неожиданно простым, о чем я и хочу вам рассказать.</p>



<p>Описанным мной способом можно мониторить температуру не только windows серверов, но и любых рабочих станций, если будет такая необходимость. Схема мониторинга&nbsp;следующая:</p>



<p>Существует бесплатная утилита&nbsp;<a href="http://openhardwaremonitor.org/" target="_blank" rel="noreferrer noopener">Open Hardware Monitor</a>, которая может показывать температуру некоторых датчиков сервера. Вообще говоря, она много чего может показывать (напряжение, скорость вентиляторов, загрузку процессора), но в данном случае нас интересует только температура.&nbsp;У этой утилиты есть версия, работающая в командной строке. Из командной строки показания датчиков можно записывать в файл. Этот файл можно анализировать и забирать из него необходимую для мониторинга информацию. Дальше эта информация передается в сервер Zabbix с помощью опции&nbsp;<strong>UserParameter</strong>. Все достаточно просто и в то же время эффективно.</p>


</br>



<p>Приступим к реализации. Скачиваем GUI версию утилиты по ссылке, приведенной ранее и консольную версию <a href="https://clip-clap.ru/wp-content/uploads/2020/08/OpenHardwareMonitorConsole.zip" target="_blank" rel="noreferrer noopener">OpenHardwareMonitorReport</a>. Запускаем GUI на сервере и смотрим, какие датчики нам доступны для мониторинга.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitor.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitor.png" alt="OpenHardwareMonitor для мониторинга в Zabbix" class="wp-image-1313" title="Программа Open Hardware Monitor отображает системную информацию"/></a></figure></div>



<p>Программа увидела несколько датчиков. С процессором все понятно, а вот три других датчика не ясно, чью температуру показывают. Я хотел мониторить температуру процессора и материнской платы. Узнать, какая температура относится к материнской плате можно несколькими способами. Конкретно в данной ситуации я просто запустил портированную версию AIDA64 и посмотрел,&nbsp;какие показания у датчика материнской платы:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/AIDA64.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/AIDA64.png" alt="AIDA64 мониторинг температуры" class="wp-image-1314" title="AIDA64 системные датчики"/></a></figure></div>



<p>Оказалось &#8212; 45 градусов. Я запомнил, что датчик Temperature #3 отображает температуру материнской платы.</p>


</br>



<p>Можно было пойти другим путем, зайти в IPMI панель, если она есть, и посмотреть там. Я работал с серверами&nbsp;<strong>SuperMicro</strong>, там она есть. Я на всякий случай зашел и проверил:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/IPMI-sensors.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/IPMI-sensors.png" alt="IPMI сенсоры мониторинга" class="wp-image-1315"/></a></figure></div>



<p>Почему-то в этой панели не оказалось информации с датчика температуры процессора. Но нам это не важно. Самое главное, что мы узнали параметры, за которыми будем следить &#8212; это&nbsp;<strong>CPU Packege</strong>&nbsp;и&nbsp;<strong>Temperature #3</strong>. Теперь запускаем консольную версию и смотрим вывод информации. Я для удобства положил&nbsp;OpenHardwareMonitorReport.exe в папку с основной программой и все это хозяйство скопировал в корень диска C:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitorReport.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitorReport.png" alt="OpenHardwareMonitorReport экспорт данных в файл" class="wp-image-1316"/></a></figure></div>



<p>Открываем файл&nbsp;<strong>1.txt</strong>. Ищем там строки</p>



<pre class="wp-block-preformatted">| &nbsp;+- CPU Package &nbsp; &nbsp;: &nbsp; &nbsp; &nbsp; 52 &nbsp; &nbsp; &nbsp; 51 &nbsp; &nbsp; &nbsp; 52 (<strong>/intelcpu/0/temperature/4</strong>)</pre>



<pre class="wp-block-preformatted">| &nbsp;| &nbsp;+- Temperature #3 : &nbsp; &nbsp; &nbsp; 45 &nbsp; &nbsp; &nbsp; 45 &nbsp; &nbsp; &nbsp; 45 (<strong>/lpc/nct6776f/temperature/3</strong>)</pre>



<p>Нас интересует выделенный текст. По нему мы будем вычленять температуру для мониторинга и передавать ее на Zabbix сервер. Создаем в этой же папке 2 bat файла следующего содержания:</p>



<p><strong>CPUTemperature.bat</strong></p>



<pre class="wp-block-preformatted">@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/4"&gt;nul &amp;&amp; set temper=%%a 
echo %temper%</pre>



<p><strong>MotherTemperature.bat</strong></p>



<pre class="wp-block-preformatted">@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/lpc/nct6776f/temperature/3"&gt;nul &amp;&amp; set temper=%%a 
echo %temper%</pre>


</br>



<p>Запускаем эти батники в командной строке и проверяем вывод. Там должны быть только цифры температуры:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Temp-CPU-Motherboard.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Temp-CPU-Motherboard.png" alt="cmd вывод температур с датчиков" class="wp-image-1317"/></a></figure></div>



<p>Отлично, на выходе готовые цифры, которые мы будем передавать в Zabbix. Займемся его настройкой.</p>



<h2 class="wp-block-heading">Настройка Zabbix agent в Windows</h2>



<p>Предполагается, что у вас уже настроен сервер мониторинга Zabbix и подключены клиенты, которые ему передают информацию. В данном материале я не буду касаться непосредственно установки и настройки сервера Zabbix, это будет отдельный материал. Сейчас же мы берем готовый файл конфигурации&nbsp;агента&nbsp;<strong>zabbix_agentd.win.conf</strong>&nbsp;и добавляем в самый конец файла следующие строки:</p>



<pre class="wp-block-preformatted">UserParameter=Temperature.CPU, C:\OpenHardwareMonitor\CPUTemperature.bat
UserParameter=Temperature.Mother, C:\OpenHardwareMonitor\MotherTemperature.bat</pre>



<p>Перезапускаем службу агента Zabbix, чтобы изменения вступили в силу.</p>


</br>



<h2 class="wp-block-heading">Настройка мониторинга на Zabbix сервере</h2>



<p>Теперь идем на сервер. У меня Zabbix установлен на сервере&nbsp;<strong>CentOS</strong>, хотя это не принципиально. Добавляем новый&nbsp;<strong>Item</strong>. Пойти можно двумя путями:</p>



<ul><li>Создать template, в него добавить все items, создать триггеры, графики и назначить этот шаблон нужным серверам.</li><li>К каждому серверу отдельно добавлять только необходимые итемы и вручную добавлять триггеры и графики.</li></ul>



<p>Очевидно, что первым путем идти удобнее и разумнее. Я так и поступил, но в процессе реализации столкнулся с проблемой. Не все сервера имеют одинаковый набор датчиков. Где-то я не смог снять температуру с материнской платы, где-то вместо одного процессора, стояло два и хотелось снимать температуру с обоих камней. Как будет в вашем случае &#8212; не знаю. Если все серверы однотипные, то создавайте template, если все разные, то вручную добавляйте каждый итем на сервер. Я в итоге сделал и шаблон для одинотипных серверов, и вручную добавлял итемы туда, где имелись отличия от шаблона.</p>



<p>Итак, сначала создадим шаблон. Идем в&nbsp;<strong>Configurations</strong>&nbsp;&#8212;&nbsp;<strong>Templates</strong>&nbsp;&#8212;&nbsp;<strong>Create Template</strong>. Шаблон я назвал&nbsp;<em>Temperature Windows</em>. Добавил в него&nbsp;<strong>Application</strong>&nbsp;&#8212;&nbsp;<em>Temperature</em>, затем&nbsp;<strong>Item</strong>&nbsp;<em>CPU Temperatue</em>. Заполняем поля итема как у меня на картинке:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-create-item-cpu.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-create-item-cpu.png" alt="Zabbix создание итема" class="wp-image-1318"/></a></figure></div>



<p>Параметр&nbsp;<em>Temperature.CPU</em>&nbsp;тот же самый, что и в файле конфигурации агента.</p>



<p>По аналогии создаем итем&nbsp;<em>Mother Temperatue</em>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-create-item-motherboard.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-create-item-motherboard.png" alt="Zabbix создание item" class="wp-image-1319"/></a></figure></div>



<p>Сохраняем шаблон. По желанию создаем для него триггеры и графики. Можно и без них. Добавляем шаблон к серверу, который хотим мониторить. Ждем некоторое время и идем проверять входящие данные. Открываем&nbsp;<strong>Monitoring</strong>&nbsp;&#8212;&nbsp;<strong>Latest data</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-latest-data.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-latest-data.png" alt="Zabbix latest data" class="wp-image-1320"/></a></figure></div>



<p>Нажимаем&nbsp;<strong>graph</strong>&nbsp;и смотрим график:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-CPU-Temperature.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-CPU-Temperature.png" alt="Zabbix график температуры" class="wp-image-1321"/></a></figure></div>



<p>Теперь добавим в Zabbix еще один сервер для мониторинга, который будет отличаться по конфигурации от предыдущего. На его примере я покажу, как менять настройки клиента и сервера. С этого сервера я не могу снять данные с датчика температуры материнской платы, по какой причине &#8212; не знаю, но не AIDA64 ни&nbsp;OpenHardwareMonitor мне температуру не показывают. Ее можно взять по SNTP с этого сервера, но это отдельная тема. В этом сервере 2 процессора и я хочу мониторить температуру обоих.</p>


</br>



<p>Запускаем GUI интерфейс и смотрим, какие датчики мы сможем мониторить:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitor-2CPU.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/OpenHardwareMonitor-2CPU.png" alt="Open Hardware Monitor" class="wp-image-1322"/></a></figure></div>



<p>Нас будет интересовать температура обоих ядер процессора.&nbsp;Теперь&nbsp;запускаем&nbsp;OpenHardwareMonitorReport.exe с выводом информации в текстовый файл. Смотрим, как выглядят строки с интересующей нас информацией:</p>



<pre class="wp-block-preformatted">| &nbsp;+- CPU Package &nbsp; &nbsp;: &nbsp; &nbsp; &nbsp; 59 &nbsp; &nbsp; &nbsp; 59 &nbsp; &nbsp; &nbsp; 59 (<strong>/intelcpu/0/temperature/6</strong>)</pre>



<pre class="wp-block-preformatted">| &nbsp;+- CPU Package &nbsp; &nbsp;: &nbsp; &nbsp; &nbsp; 53 &nbsp; &nbsp; &nbsp; 53 &nbsp; &nbsp; &nbsp; 54 (<strong>/intelcpu/1/temperature/6</strong>)</pre>



<p>Создаем два bat файла следующего содержания:</p>



<p><strong>CPU1Temperature.bat</strong></p>



<pre class="wp-block-preformatted">@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/6"&gt;nul &amp;&amp; set temper=%%a
echo %temper%</pre>


</br>



<p><strong>CPU2Temperature.bat</strong></p>



<pre class="wp-block-preformatted">@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/1/temperature/6"&gt;nul &amp;&amp; set temper=%%a
echo %temper%</pre>



<p>Редактируем конфигурационный файл&nbsp;<strong>zabbix_agentd.win.conf</strong>&nbsp;агента Zabbix на клиенте. Добавляем в конец две строки:</p>



<pre class="wp-block-preformatted">UserParameter=Temperature.CPU1, C:\OpenHardwareMonitor\CPU1Temperature.bat
UserParameter=Temperature.CPU2, C:\OpenHardwareMonitor\CPU2Temperature.bat</pre>



<p>Перезапускаем службу агента, чтобы изменения вступили в силу.</p>



<p>Дальше идем на сервер Zabbix и по аналогии с предыдущим сервером создаем там Итемы мониторинга. Причем итемы создаем не в шаблоне, а в конкретном сервере, который будем мониторить. Параметр&nbsp;<strong>key</strong>&nbsp;в этих итемах будет соответственно Temperature.CPU1 и Temperature.CPU2 Ждем некоторое время и проверяем результат.</p>



<h2 class="wp-block-heading">item became not supported</h2>



<p>Во время отладки работ я столкнулся с проблемами. Периодически&nbsp;<strong>Item&nbsp;</strong>отваливались и получали статус:&nbsp;<strong>Not Supported</strong>. При этом в логах сервера были следующие записи:</p>



<pre class="wp-block-preformatted">27614:20150702:065936.698 item "videoserver:Temperature.CPU" became not supported: Timeout while executing a shell script.
27625:20150702:070938.720 item "videoserver:Temperature.CPU" became supported</pre>



<p>То есть данные то собирались, то переставали собираться. Иногда, чтобы данные снова пошли, приходилось удалять итем и создавать его заново. Некоторое время я повозился, пока не понял, в чем дело.</p>



<p>Я обратил внимание, что при запуске батника из командной строки, вывод данных происходит с приличной задержкой в 3-5 секунд. В Zabbix по-умолчанию стоит параметр, по которому агент ожидает ответа от скрипта 3 секунды и на сервере есть подобный параметр, по которому сервер ждет ответа от агента 3 секунды. Если за это время данные не поступают, то итем переходит в статус&nbsp;<strong>Not Supported&nbsp;</strong>и данные с него не собираются.</p>



<p>Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд. Меняем параметр в конфиге на клиентах и на сервере. Он и там и там один и тот же:</p>



<pre class="wp-block-preformatted">Timeout=15</pre>



<p>Потом перезапускаем сервер и агентов и ждем результатов. Больше ошибок быть не должно.</p>


</br>



<p>На этом, собственно настройка мониторинга температуры окончена. Можно дальше все оформить как полагается: настроить тригеры, оповещения, графики красивые нарисовать. Кому что нужно. Я себе вывел вот такую картинку для наглядности:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-Temperature-Monitoring.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/07/Zabbix-Temperature-Monitoring.png" alt="Zabbix мониторинг температуры" class="wp-image-1323" title="Сводный график мониторинга температуры нескольких серверов"/></a></figure></div>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/">Zabbix настройка мониторинга температуры</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/zabbix-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3%d0%b0-%d1%82%d0%b5%d0%bc%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d1%83%d1%80%d1%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Кэширование страницы с использованием Disk: Enhanced 
Минифицировано с помощью Disk
Кэширование БД с использованием Disk (Request-wide (широкий запрос) modification query)

Served from: clip-clap.ru @ 2026-07-03 01:44:09 by W3 Total Cache
-->