05 Марта 2017

Печенька

Печенька

Авто никто не ищет?

Авто никто не ищет? Калуга, Заброшенные авто, Угон, Ижевск

Никто не ищет авто?

Регион для Калуги странный, стоит без движения всю зиму, видно что после ДТП, салон тоже потрепанный. в нормальном состоянии  в нашем дворе раньше не видел.

P.S. коменты для минусов внутри

Создание Low-Level Discovery в Zabbix с использованием PowerShell.

Иногда нужно настроить мониторинг каких-либо объектов на серверах, которые могут изменятся, например IIS сайты\пулы, размеры файлов, размеры кластерных дисков, базы данных и прочее. Для получения самих значений можно использовать встроннее метрики, например Performance Monitor в Windows Server, либо же скрипты\запросы, которые их получают.

Трудности доставляют сами изменяющиеся объекты, которые могут добавлятся\убираться, и каждый раз ручками конфигурировать итемы на хостах как-то не хочется. Вот тут нам поможет Low-level discovery (LLD).


К примеру у вас есть сервер, на котором крутятся сайты, которые ваши разработчки с некой переодичностью добавляют\удаляют. Задача мониторить количество коннекций к сайту, количество get/head/post запросов, статус апликейшн пулов (запущен или нет).


Поскольку я Виндовый админ, то будем использовать PowerShell, но по такому же принципу можно написать на любом языке.


И так для создания нового LLD нужен скрипт,а даже 2, которые будет получать список сайтов и список пулов, конвертировать его в JSON формат и предоставлять Заббиксу.


Выглядит готовый JSON так:

{

"data":[

{ "{#SITE}" : "site1" },

{ "{#SITE}" : "site2" },

{ "{#SITE}" : "site3" }

]

}


А потом уже заббикс для каждого из объектов будет получать данные параметров, для сайтов используя запоросы в Performance Monitor, для пулов - скрипт.


Получать список объектов можно любым скриптом, главное что бы заббикс агент его смог запустить.


И так создаём фаил с названием get-sites.ps1

Получаем список сайтов на сервере:

Import-Module WebAdministration

$sites = Get-ChildItem -Path IIS:\Sites -Name


Если вы тестите то для вывода результата введите $sites

Теперь весь список нужно представить в JSON формате, особенностью является то что в конце последнего значения объекта, не должна стоять запятая.

По этому вводим переменную $idx по которой мы будем проверять последний это объект или нет.

$idx = 1


Далее делаем шапку JSON:

write-host "{"

write-host " `"data`":[`n"


Далее будем каждый объект полученный ранее проверят последний он или нет.

Сверку будем проводить путем увеличения переменной $idx на 1, после создания каждого JSON объекта.

Если нет, то создаём JSON объект с запятой, если да, то создаём без запятой.

foreach ($currentsite in $sites) #каждый сайт из списка будет получать переменную $currentsite

{

if ($idx -lt $sites.count) #сравниваем $idx с количеством сайтов. -lt - меньше чем. Если получаем True то создаём строчку с запятой, если нет то двигаемся дальше.

{

$line= "{ `"{#SITE}`" : `"" + $currentsite + "`" }," # создание строчки с запятой

write-host $line

}

elseif ($idx -ge $site.count) # здесь опять сравниваем $idx с количеством с сайтов. -ge - больше или равно чем. Если True то создаём строчку без запятой

{

$line= "{ `"{#SITE}`" : `"" + $currentsite + "`" }" #строчка без запятой

write-host $line

}

$idx++; #В конце каждого прохода увеличиваем $idx на 1.

}

Ну и закрываем JSON.

write-host

write-host " ]"

write-host "}"


Логика проста: Получаем список сайтов, например 3 сайта. Значит нужно 3 прохода для создания 3 строчек для JSON.

Первый проход первый сайт. $idx=1. 1<3? Да. Создаём с запятой. Увеличиваем $idx на 1.

Второй проход второй сайт. $idx=2 . 2<3? Да. Создаём с запятой. Увеличиваем $idx на 1.

Третий проход третий сайт. $idx=3. 3<3? Нет. Идем дальше. 3>=3? Да. Создаём без запятой.


Таким же образом создаём скрипт get-apppool.ps1 для получения списка пулов:

Import-Module WebAdministration

$apppool = Get-ChildItem -Path IIS:\Apppools -Name

$idx = 1

write-host "{"

write-host " `"data`":[`n"

foreach ($currentapppool in $apppool)

{

if ($idx -lt $apppool.count)

{

$line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" },"

write-host $line

}

elseif ($idx -ge $apppool.count)

{

$line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" }"

write-host $line

}

$idx++;

}

write-host

write-host " ]"

write-host "}"


Далее оба скрипта кладем на сервер, например туда где стоит заббикс агент и в конфиг агента добавляем 2 юзер параметра:

UserParameter=apppool.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get-apppool.ps1"

UserParameter=site.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get_sites.ps1"


(Если честно, то не помню, нужно ли включать ActiveChecks и EnableRemoteCommands в конфиге. У меня везде включено.)


apppool.discovery и site.discovery - будут использиваться как ключи при создании LLD для запуска соответсвующих скриптов.


Далее в Заббиксе нашего сервера создаём новый дискавери:

Name: IIS Site #Название дискавери

Type: Zabbix agent #то чем будем делать дискавери

Key: site.discovery #ключ для вызова скрипта с получем списка сайтов. Мы его указали в UserParameter в конфиге агента на сервере

Host interface: айпишка и порт агент на сервере

Update interval (in sec): 3600 #как часто будем вызывать скрипт и получать список сайтов

Keep lost resources period (in days):3 #через сколько удалять сайтов, которых больше нет.


В фильтрах можно указать какие сайты исключить из списка.

Label Macro {#SITE} Regular expression @IIS

Сам список IIS создаётся в Administration > general > Regular Expresssions.

Например можно исключить Default Web Site для этого создаём список IIS и добавляем Expression type: Result is False; Expression: Default Web Site


Далее создаём прототипы айтемов в дискавери. Они практически ничем не будут отличаться от создания обычных айтемов. Только для объявления сайта используем {#SITE}


Например количество коннекций к IIS сайту. Данные получаем с Performance monitor:

Name: {#SITE}: Current connections

Type: Zabbix agent

Key: perf_counter[\Web Service({#SITE})\Current Connections]

Type of information: Numeric (unsigned)


Прежде чем создавать дискавеи для пулов, нужно создать скрипт, который будет получать статус пула.


Создаём PowerShell скрипт get-apppoolstate.ps1

param ([string] $name = 0)

Import-Module WebAdministration

$apppoolState = Get-WebAppPoolState -name "$name"

Write-Output ($apppoolState.value)


Сохраняем и кладем к агенту, туда куда и прошлые скрипты. Добавляем UserParameter в конфиг:


UserParameter=apppool.state[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get_apppoolstate.ps1" "$1"


apppool.state - ключ для вызова скрипта.

[*] - параметр который мы будем передавать вместе с ключем, в нашем случае имя пула

$1 означает что мы будем передавать имя пула в скрипт, внутри скрипта имя пула пойдет в параметр $name


Теперь создаём дискавери для мониторинга апликейшн пулов создаём новый дискавери.

Name: IIS AppPool

Type: Zabbix agent

Key: apppool.discovery

Остальное как для сайта.


Создаём прототип айтема:

Name:IIS AppPool {#APPPOOL} state

Type:Zabbix agent

Key:apppool.state[{#APPPOOL}]

Type of information: Text


Ну и все, дальше можно настроить триггеры для обоих дискавери.

Например что пул не запущен:

Name: IIS AppPool {#APPPOOL} is down

Severity: Disaster

Expression: {MyWebServer:apppool.state[{#APPPOOL}].str(Stopped)}<>0

Показать полностью

Люди, помогите найти видео!

Дорогие пикабушники,я знаю, что вы можете буквально всё! У меня огромная просьба. Никак не могу найти один клип. Речь вот о чём: видео о мамах, начинается словами "мама, мамочка....(на разных языках)". Текст читает советский диктор и само видео будто той эпохи. Дальше говорится о том, что мамы самые нежные, добрые, милые или что-то такое, точно не помню. Буду благодарен за помощь. Видео просто ну о-о-очень необходимо!

Не мельчите

События на Донбассе и в одной соседней стране развиваются с бешеной скоростью. Признание паспортов ДНР и ЛНР Россией, донецкий Минсвязи запустил вещание российских каналов на треть Украины, национализация в ДНР и ЛНР украинских предприятий (которая повлечёт потери до 5% украинского бюджета), а в данный момент, к примеру, громко стреляют.

Однако в российских лентах гоняют по кругу новость про заявление Поклонской. Не мельчите. Тем более, что Поклонская - смелая девушка. Но вообще - не мельчите.


Помню, когда санкции принимали против России, майданная блогосфера ревела от счастья. Я не призываю никого от счастья плясать, но, право слово, уделяйте внимание более значимым вещам, чего тут соревноваться в остроумии. Ум отсмеёте.


http://prilepin.livejournal.com

Еще чуть-чуть осталось

Еще чуть-чуть осталось Utorrent, Баг, Загрузка
Показать полностью 1

Воскресенье

Воскресенье шесть пятнадцать

Рано мне ещё вставать

Но приходит кот-зараза

Жрааааать

Готовы к Евро-2024? А ну-ка, проверим!

Для всех поклонников футбола Hisense подготовил крутой конкурс в соцсетях. Попытайте удачу, чтобы получить классный мерч и технику от глобального партнера чемпионата.

А если не любите полагаться на случай и сразу отправляетесь за техникой Hisense, не прячьте далеко чек. Загрузите на сайт и получите подписку на Wink на 3 месяца в подарок.

Готовы к Евро-2024? А ну-ка, проверим! Футбол, Тест, Евро 2024, Болельщики, ВКонтакте (ссылка)

Реклама ООО «Горенье БТ», ИНН: 7704722037

Прошло 3 дня с тех пор, как устроилась в бюджетную организацию....

...а мои коллеги во всю пытаются научить меня воровать. Такие дела:(

Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите