Page_c76a3fcf https://linux-notes.org Unix/ Linux блог, на котором можно найти полезную информацию по настройке ОС и ПО. Wed, 29 Apr 2020 19:44:50 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 Page_c76a3fcf https://linux-notes.org/can-t-open-pid-file-var-run-nginx-pid-yet-after-start-too-many-levels-of-symbolic-links/ https://linux-notes.org/can-t-open-pid-file-var-run-nginx-pid-yet-after-start-too-many-levels-of-symbolic-links/#comments Wed, 29 Apr 2020 19:42:21 +0000 https://linux-notes.org/?p=17782 Зашел на сервер я такой, думаю - обновлю его ( давно не ставил обновы на него). Выполнил апдейт. Захотел кое-что поменят в конфиге с nginx ( менял то, что не должно было поломать веб-сервер). Но после рестарта службы - веб-сервер лег вообще... Обидненько!

The post Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links first appeared on linux-notes.org.]]>

Зашел на сервер я такой, думаю — обновлю его ( давно не ставил обновы на него). Выполнил апдейт. Захотел кое-что поменят в конфиге с nginx ( менял то, что не должно было поломать веб-сервер). Но после рестарта службы — веб-сервер лег вообще… Обидненько!

PS: Если спросить — чего я автоматом не обновляю пакеты или ОС — та не знаю. Чтобы не лягло все! Это ответ на вопрос ( если у кого-то появится).

Ошибка выглядет так:

(captain-notes)─(✗)─(10:08 PM Wed Apr 29)
└─(/home)─(5 files, 28Kb)─> systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: activating (start) since Wed 2020-04-29 22:06:39 EEST; 1min 54s ago
     Docs: http://nginx.org/en/docs/
   CGroup: /system.slice/nginx.service
           ├─2197 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           ├─2198 nginx: worker process
           ├─2199 nginx: worker process
           ├─2200 nginx: worker process
           ├─2201 nginx: worker process
           └─2202 nginx: cache manager process

Apr 29 22:06:39 captain-notes systemd[1]: Starting nginx - high performance web server...
Apr 29 22:06:39 captain-notes systemd[1]: Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

Приступим к решению!

Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

Приведу пару солюшенов, которые нашел в инете. Перепробовал несколько из них — пофиксил ишью.

Решение №1

Папка /var/run не имеет символической ссылки (symbolic link) для /run директории. Можно проверить это так:

ls -ld /var/run
drwxr-xr-x 12 root root 4096 Apr 29 22:10 /var/run

Так же, папка /run имеется на сервере, проверим:

#  ls -ld /run
drwxr-xr-x 32 root root 980 Apr 29 22:12 /run

Так же, можно грепнуть конфиг nginx:

# grep -ir pid /etc/nginx
/etc/nginx/nginx.conf.default:#pid /var/run/nginx.pid;
/etc/nginx/nginx.conf:#pid /var/run/nginx.pid;

А собственно, решение вот:

# mv /var/run /var/run_orig && ln -s ../run /var/run && ls -ld /var/run

Перезапускаем сервер с nginx и это должно пофиксить проблему.

У меня не решилось… Пробуем другой солюшен….

Решение №2

Смотрим что у нас в конфигах nginx:

# grep -ir pid /etc/nginx
/etc/nginx/nginx.conf:pid        /run/nginx.pid;
/etc/nginx/nginx.conf:#pid /var/run/nginx.pid;

Находим строку:

pid        /var/run/nginx.pid;

И меняем ее на:

pid        /run/nginx.pid;

PS: Можно использовать SED и сделать замену:

# sed -i 's/pid \/var\/run\/nginx.pid/pid \/run\/nginx.pid/' /etc/nginx/nginx.conf

Далее, открываем:

# vim /lib/systemd/system/nginx.service

И меняем строку:

PIDFile=/var/run/nginx.pid

На:

PIDFile=/run/nginx.pid

Чтобы изменения применились, выполняем:

# systemctl daemon-reload

Затем, перезагружаем веб-сервер:

# service nginx restart

В итоге, получаем:

┌(captain-notes)─(✓)─(10:12 PM Wed Apr 29)
└─(/home)─(5 files, 28Kb)─> systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-04-29 22:12:24 EEST; 10s ago
     Docs: http://nginx.org/en/docs/
  Process: 2996 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 2997 (nginx)
   CGroup: /system.slice/nginx.service
           ├─2997 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           ├─2998 nginx: worker process
           ├─2999 nginx: worker process
           ├─3000 nginx: worker process
           ├─3001 nginx: worker process
           ├─3002 nginx: cache manager process
           └─3003 nginx: cache loader process

Apr 29 22:12:24 captain-notes systemd[1]: Starting nginx - high performance web server...
Apr 29 22:12:24 captain-notes systemd[1]: Started nginx - high performance web server.

Я забыл заюзать strace, чтобы отловить ошибку, но нормальное поведение такое:

# strace /run/nginx.pid
execve("/run/nginx.pid", ["/run/nginx.pid"], 0x7ffcaef1ce40 /* 29 vars */) = -1 EACCES (Permission denied)
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2502, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8def0a3000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2502
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7f8def0a3000, 4096)            = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8def0a3000
write(2, "strace: exec: Permission denied\n", 32strace: exec: Permission denied
) = 32
exit_group(1)                           = ?
+++ exited with 1 +++

ЗАМЕЧАНИЕ! Данная проблема, может касатья не только nginx, но может затронуть mysql или fail2ban и возможно — другие сервисы.

Вот и все, статья «Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links» — завершена!

The post Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links first appeared on linux-notes.org.]]>
https://linux-notes.org/can-t-open-pid-file-var-run-nginx-pid-yet-after-start-too-many-levels-of-symbolic-links/feed/ 2
Page_c76a3fcf https://linux-notes.org/razreshenie-dostupa-s-opredelenny-h-ip-dlya-proftpd-v-unix-linux/ https://linux-notes.org/razreshenie-dostupa-s-opredelenny-h-ip-dlya-proftpd-v-unix-linux/#respond Sun, 24 Dec 2017 19:39:20 +0000 http://linux-notes.org/?p=3918 Разрешение доступа с определенных IP для Proftpd в Unix/Linux Хотел бы сохранить заметку «Разрешение доступа с определенных IP для Proftpd в Unix/Linux» и в ней описать как можно запретить доступ к директориям моего FTP — сервера (Proftpd) для определенных IP- адресов, но к некоторым оставить доступ. Установка Proftpd в Unix/Linux Я описывал процесс установки на различные ОС […]

The post Разрешение доступа с определенных IP для Proftpd в Unix/Linux first appeared on linux-notes.org.]]>

Разрешение доступа с определенных IP для Proftpd в Unix/Linux

Хотел бы сохранить заметку «Разрешение доступа с определенных IP для Proftpd в Unix/Linux» и в ней описать как можно запретить доступ к директориям моего FTP — сервера (Proftpd) для определенных IP- адресов, но к некоторым оставить доступ.

Установка Proftpd в Unix/Linux

Я описывал процесс установки на различные ОС тут:

Установка Proftpd на Debian/Ubuntu/Mint

Установка ProFTPD на CentOS

Установка Proftpd на FreeBSD из исходников

Так же, будет полезно знать:

Скачивать и закачивать файлы по FTP используя консоль

Настройка Proftpd в Unix/Linux

Отредактируем конфигурационный файл Proftpd.

Для FreeBSD он будет лежать:

# vim /usr/local/etc/proftpd.conf

Для CentOS/RedHat/Fedora он лежит:

# vim /etc/proftpd.conf

Для Debian или Ubuntu:

# vim /etc/proftpd/proftpd.conf

Я добавлю в класс ournetwork, некоторые строки с ограничением доступа, например:

<Class mynetwork>
From xx.xx.xx.xx/27
From your_IP-address/mask
From xx.xx.xx.xx/24
From xx.xx.xx.xx/32
From 31.13.45.123/16
</Class>

После этого в директории к которой нам необходимо закрыть доступ, пишем следующее:

<Limit LOGIN READ DIRS>
AllowClass mynetwork
DenyAll
</Limit>

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

FreeBSD:

# /usr/local/etc/rc.d/proftpd restart

Linux:

# service proftpd restart

Вот и все, статья «Разрешение доступа с определенных IP для Proftpd в Unix/Linux» завершена.

The post Разрешение доступа с определенных IP для Proftpd в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/razreshenie-dostupa-s-opredelenny-h-ip-dlya-proftpd-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/oshibki-raboty-s-php-sessiyami-v-unix-linux/ https://linux-notes.org/oshibki-raboty-s-php-sessiyami-v-unix-linux/#respond Fri, 08 Dec 2017 20:58:39 +0000 http://linux-notes.org/?p=5665 Ошибки работы с PHP сессиями в Unix/Linux Хочу описать статью с возможными ошибками работы PHP и сессиями в Unix/Linux. Думаю многие сталкиваются и будет полезно знать как решать ту, или иную ошибку. Обновлял заббикс и после его обновления, перестал корректно работать, посмотрел лог и увидел: 2017/12/08 21:15:48 [error] 40014#40014: *395 FastCGI sent in stderr: "PHP message: […]

The post Ошибки работы с PHP сессиями в Unix/Linux first appeared on linux-notes.org.]]>

Ошибки работы с PHP сессиями в Unix/Linux

Хочу описать статью с возможными ошибками работы PHP и сессиями в Unix/Linux. Думаю многие сталкиваются и будет полезно знать как решать ту, или иную ошибку.

Обновлял заббикс и после его обновления, перестал корректно работать, посмотрел лог и увидел:

2017/12/08 21:15:48 [error] 40014#40014: *395 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /usr/share/zabbix/include/classes/core/ZBase.php on line 269

-=== Ошибка 1 ===-

Можно увидить следующую ошибку:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

Возникла у меня при установке phpmyadmin.

Так же, если имеется cPanel, может возникнуть такая же ошибка, я описывал решение в моей статье:

ошибка в phpMyAdmin «Cannot start session without errors»

-=== Ошибка 2 ===-

При работе с апачем, я получил:

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/httpdocs/index.php on line 6
Warning: Unknown: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

-=== Ошибка 3 ===-

Получил еще ошибку:

FastCGI sent in stderr: “PHP message: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0” while reading upstream, client: 37.***.***.56, server: rtfm.co.ua, request: “POST /wp-admin/admin-ajax.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9009”, host: “rtfm.co.ua”, referrer: “http://linux-notes.org/wp-admin/post.php?post=5496&action=edit&message=10”

Другие ошибки я буду добавлять по мере их возникновения.

Решения ошибок работы с PHP сессиями в Unix/Linux

Ну что, пришли к решению. Первое что необходимо сделать, — так проверить путь куда сохраняются сессии, для этого, выполните:

$ php -i |grep save_path

session.save_path => /var/lib/php/session => /var/lib/php/session

Как видно у меня этот путь рассположен в /var/lib/php/session директории.

Проверим права на данную директорию:

# ls -alh /var/lib/php/session

Смотрим от какого юзера идет выполнение php кода:

# ps aux |grep php-fpm

PS: Или, можно зайти в ваш пул php-fpm и найти пользователя от которого он запущен!

Решение довольно примитивное. Для начала, стоит создать папку под использующие сессии (если ее нет еще) и выставить права:

# mkdir /var/lib/php/session
# chmod 1777 /var/lib/php/session

И так же, выставляем владельца и группу:

# chown root:www /var/lib/php/session
# chown -R www: /var/cache/nginx

ИЛИ:

# chmod o+rw /var/lib/php/session

Потом, открываем ваш php.ini и находим строку:

;session.save_path = "/tmp"

И нужно выполнить расскоменчивание данной строки.

PS: Возможно, нужно будет выставить права и владельца!

Если вы используете выделенные пулы под свои php- проекты, то стоит поискать данную строку в:

# grep -lR 'php_value' /etc/php-fpm.d

Если покажет файлы, то стоит посмотреть привести к:

[...]
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
[...]

Перезапускаем php-fpm службу:

# service php-fpm restart

Для апача, следуюет указать следующие строки:

php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"

а поиск файла можно сделать так:

# grep -lR 'php_value' /etc/

И тоже, выполнить перезапуск службы:

# service httpd restart

Вот и все решение! А у меня на этом статья «Ошибки работы с PHP сессиями в Unix/Linux» завершена.

The post Ошибки работы с PHP сессиями в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/oshibki-raboty-s-php-sessiyami-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/pishem-upstart-skript/ https://linux-notes.org/pishem-upstart-skript/#respond Thu, 23 Nov 2017 19:32:11 +0000 http://linux-notes.org/?p=6719 Пишем Upstart скрипт Upstart — это система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Основанная на событиях замена системы инициализации init в UNIX и Linux системах. Изначально разрабатывалась для дистрибутива Ubuntu, но предназначен для развертывания во всех дистрибутивах Linux в качестве альтернативной замены. Основные […]

The post Пишем Upstart скрипт first appeared on linux-notes.org.]]>

Пишем Upstart скрипт

Upstart — это система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Основанная на событиях замена системы инициализации init в UNIX и Linux системах. Изначально разрабатывалась для дистрибутива Ubuntu, но предназначен для развертывания во всех дистрибутивах Linux в качестве альтернативной замены.

Основные характеристики

  • Задачи и службы запускаются и/или останавливаются через события;
  • События генерируются при запуске и остановке задач и сервисов;
  • События могут быть получены от любого другого процесса в системе;
  • Слыжбы могут быть возрождены, если они неожиданно кильнулись;
  • Наблюдение и возрождение демонов, которые отделены от их родительского процесса;
  • Связь с init демоном через D-Bus;
  • Пользовательские сервисы, которые пользователи могут запускать и останавливать сами.

И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:

# ps -s1| awk '{print $4}'| grep -Ev "CMD"

Т.к речь идет о Upstart, то и продолжим тему.

PS: Вот еще полезное чтиво:

Система инициализации в Unix/Linux

Система инициализации Systemd

Система инициализации SysVinit

Пишем systemd Unit файл

Инициализация — важнейшая процедура, лежащая в основе любой операционной системы на основе Unix/Linux для управления работой каждого скрипта и службы.

По сути, инициализация следует за этим процессом:

  • Загрузка сервера.
  • Запуск init процесса (обычно как PID 1).
  • Запуск предопределенного набора задач для запуска активируется последовательно.

Инициализация отвечает за то, чтобы сервер мог загрузиться и отключиться. В некоторых Unix/Linux дистрибутивах  используется стандартный процесс инициализации init/systemD/Upstart. В этой статье я расскажу о том, как использовать Upstart или Init.

Традиционная инициализация следует за линейным процессом: загрузка отдельных задач в предопределенную последовательность при загрузке системы. Это не так полезно, особенно в быстро меняющихся ситуациях. Чтобы понять, почему, представьте, например, вы изменили среду сервера, добавив дополнительное устройство хранения.

Процесс инициализации не может принимать во внимание внезапные изменения в среде, а это означает, что ваш облачный сервер должен быть повторно инициализирован, прежде чем он сможет распознать дополнительное хранилище. Обнаружение «на лету» — это то, что необходимо, хотя это не возможность классической процедуры инициализации.

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

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

Синхронные последовательности загрузки больше не желательны. На смену init-у, пришел Upstart — решение этих проблем с расширенными возможностями.

На основе событий в реальном времени вместо заданного списка задач в последовательности этот замещающий демон инициализации запускает и останавливает задачи и контролирует эти процессы во время работы системы — «полный охват» — лучший способ описать его.

Эта новая асинхронная обработка устраняет необходимость в жесткой последовательности загрузки. Обработка в режиме реального времени может быть беспорядочной для концептуализации, но Upstart может поддерживать самые сложные системы и держать все под контролем, используя структуру задач.

Jobs

В мире Upstart, jobs — это рабочие процессы, разделенные на задания (целью) и рабочие задания (которые могут выполняться в фоновом режиме). Существуют также абстрактные задания — процессы, которые выполняются всегда, до тех пор, пока пользователь не будет заблокирован административными привилегиями.

Events

Однако событиями являются сигналы или «вызовы», используемые для запуска определенного действия с заданием или другим событием. Общие формы событий относятся к мониторингу процесса: запуск (пред-запуск) и остановка (пред-остановка).

Emitting Events

Процесс трансляции события называется «испусканием» (emitting). Обычно это вызвано состоянием процесса или задания, хотя администратор также может выпустить событие вручную, выпустив «initctl emit <event>» команду.

Состояния Job и Events

Джобы (задания или job-ы) в системе находятся в каталоге /etc/init/, а задания пользователя находятся в собственном каталоге ~/.init/.

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

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

У каждой из этих заданий есть цель — запустить или остановить. Между этими двумя целями находятся множество состояний задач, которые определяют текущие действия работы в отношении цели. Важными являются следующие состояния:

  • waiting: Начальное состояние процесса.
  • starting: Запуск джобы.
  • pre-start: Загрузка или пред-старт некоторых действий.
  • spawned: Начало скрипта.
  • post-start: После-запуск или действия после запуска задания.
  • running: Запущенная джоба.
  • pre-stop: Пред-остановка или действия который выполняються перед остановкой задания.
  • stopping: Остановка джобы.
  • killed: Прибиваение процесса. Остановка задания.
  • post-stop: После-остановка или действия после остановки джобы.

После post-start состояния, задание определяется как running (запущено). Он остается включенным до тех пор, пока не будет выполнена предварительная остановка, когда задание будет готово к остановке, тогда работа будет убита, а процедуры очистки после остановки выполнят свои действия( если они будут определены).

Вы можете просмотреть, как задание переходит между состояниями, установив приоритет системного журнала Upstart (расположенный в каталоге /var/ log/upstart/) для отладки с помощью этой команды:

# initctl log-priority debug

Помните, что состояния не являются событиями, а события не являются состояниями. Четыре события (starting, started, stopping и stopped) испускаются Upstart, но состояния задачи определяют переход между этапами жизненного цикла работы.

Примеры Upstart скриптов

Открываем (создаем) файл:

# vim /etc/init/testjob.conf

Для начала, прописываем следующие строки:

description "My first Upstart script"
author "Vitaliy Natarov"

Тем самым, я описал что это за скрипт (поле description) и прописал автора (поле — author). После чего, сейчас я пропишу следующую строку для того чтобы это задание выполнялось после того, как системные службы и процессы уже загружены (чтобы предотвратить конфликт):

start on runlevel [2345]

Возможно, вам интересно, что такое уровень запуска. По сути, это единственное значение, которое представляет текущую конфигурацию системы. [2345] относится ко всем состояниям конфигурации с общим доступом к Linux и сетям, что идеально подходит для базового тестового примера.

Идем дальше и прописываем следующей строчкой:

stop on shutdown

Это остановит созданную задачу при отключения питания (завершения работы) сервера.

Затем мы добавим код выполнения:

script
echo $$ > /var/run/testjob.pid
end script

Определим действия перед запуском:

pre-start script
    echo "[`date`] testjob Starting" >> /var/log/testjob.log
end script

Так же, определим пред-остановку:

pre-stop script
    rm /var/run/nodetest.pid
    echo "[`date`] testjob Stopping" >> /var/log/testjob.log
end script

Сохраните и закройте этот файл.

Вы можете убедиться, что это работает, вручную запустив задание, но давайте сначала проверим синтаксис файла конфигурации:

# init-checkconf /etc/init/testjob.conf

Если обнаружены какие-либо проблемы, эта команда укажет номер конкретную линию(ии) и проблему. Однако с тестовым заданием вы должны увидеть вывод следующим образом:

File /etc/init/testjob.conf: syntax ok

Эта команда может использоваться для управления заданиями Upstart и другими фоновыми службами, такими как веб-сервер.

Основной синтаксис команды:

# service <servicename> <control>

Где, <control> может быть:

  • restart — Перезапустит службу.
  • start — Запустит службу.
  • stop — Остановит службу.
  • status — Проверит состояние службы.

Давайте запустим написанный скрипт:

# service testjob start

Теперь проверьте файл testjob.log, выполнив следующую команду:

# cat /var/log/testjob.log

Я не буду больше заострять внимания т.к это уже не актуально и в большенстве случаев, уже используется systemD/init скрипты.

Вот и все, статья «Пишем Upstart скрипт» завершена.

The post Пишем Upstart скрипт first appeared on linux-notes.org.]]>
https://linux-notes.org/pishem-upstart-skript/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-tomcat-v-unix-linux/ https://linux-notes.org/ustanovka-tomcat-v-unix-linux/#respond Wed, 21 Jun 2017 11:11:15 +0000 http://linux-notes.org/?p=13072 Установка Tomcat в Unix/Linux Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования. Tomcat используется в качестве самостоятельного веб-сервера, […]

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>

Установка Tomcat в Unix/Linux

Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования.

Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.

Установка Tomcat в Unix/Linux

Я стараюсь писать статьи со всем необходимым и чтобы снизить поиски траблошутов в интернете. Я расскажу как установить, настроить и работать с  Apache Tomcat в различных Unix/Linux ОС.

Но перед тем как приступим к самой установке, проверяем, установлена ли JAVA на сервере и какая версия:

$ java -version

Если java не установлена в системе, то приступим к установке:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка Java на Debian/Ubuntu/Mint

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

Для других Unix/Linux ОС мне не приходилось устанавливать. По мере возможности, я буду дополнять данный материал новой информацией.

PS: На момент написания статьи, самая актуальная версия — java8 ( 1.8).

Создание пользователя

В идеале,  необходимо создать нового пользователя для запуска Tomcat. В этом примере я создам non-login пользователя «tomcat:

# useradd -s /sbin/nologin -d /usr/local/tomcat9/temp tomcat

ИЛИ:

# useradd -r tomcat --shell /bin/false

Идем дальше.

Установка Tomcat в Debian/Ubuntu/CentOS/Fedora/RedHat/Gentoo/Arch

Я описывал в своей статье, процесс установки tomcat для Ubuntu:

Как установить Tomcat 8.0.5 на Ubuntu

Установка для любого Unix/Linux примитивная — идем на официальный сайт и качаем новую версию томката. Я заюзаю самую последнюю ( но учитывайте дату написания статьи):

# cd /usr/local/src && wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz

Выполним распаковку:

#  tar xfvz /usr/local/src/apache-tomcat-*.tar.gz -C /usr/local/

Старый архив удаляем:

# rm -f /usr/local/src/apache-tomcat-9*.tar.gz

Для удобства, переименуем данный томкат:

# mv /usr/local/apache-tomcat-9.0.1 /usr/local/tomcat9

Меняем права на папку, для того чтобы новый пользователь (tomcat, которого создали в самом начале статьи) мог запустить Tomcat:

# chown -R tomcat. /usr/local/tomcat9

Запуск томката:

$ /usr/local/tomcat9/bin/startup.sh

Для остановки, нужно убить процесс. Но для начала смотри что есть:

# ps -aux | grep tomcat

Я например, делал вот так:

# kill -9 `ps -aux | grep tomcat | grep -Ev "grep"|awk '{print $2}'`

Но это не удобно, немного ниже я расскажу как можно оптимизировать.

Установка Tomcat в Mac OS X

Для начала подключаем brew:

Установка homebrew на Mac OS X

Выполним поиск пакета:

$ brew search tomcat

У меня имеется следующие версии:

tomcat  tomcat-native    tomcat@6     tomcat@7     tomcat@8.0

Для установки используйте:

$ brew install tomcat@8.0

PS: Настройку я не выполнял, по этому — я пока-что упущу данную тему.

Установка Tomcat на другие Unix/Linux ОС

Для других Unix/Linux ОС, можно заюзать docker. Я мало где юзаю его, по этому — пока что нет данной инфы по установке. Но я надеюсь что я выложу.

Настройка Tomcat в Unix/Linux

И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:

# ps -s1| awk '{print $4}'| grep -Ev "CMD"

PS: Вот довольно полезное чтиво:

Система инициализации в Unix/Linux

Система инициализации Systemd

Система инициализации SysVinit

Запуск TOMCAT с SysV init

Создадим init скрипт для запуска:

# vim /etc/init.d/tomcat9

И приводим к виду:

#!/bin/bash
#
#https://wiki.debian.org/LSBInitScripts
### BEGIN INIT INFO
# Provides:          tomcat9
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

export CATALINA_HOME=/usr/local/tomcat9
export JAVA_HOME=/usr/local/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH

start() {
 echo "Starting Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
}
stop() {
 echo "Stopping Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Usage : $0 <start|stop|restart>"; exit 1;;
esac

exit 0

Даем права на запуск ( на исполнение):

# chmod 755 /etc/init.d/tomcat9

ИЛИ:

# chmod +x /etc/init.d/tomcat9

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

# update-rc.d tomcat9 defaults

Или для CentOS:

# chkconfig --add tomcat9

Запускаем томкат:

# service tomcat9 start

Открываем браузер и смотрим что вышло!

PS: По дефолту, нужно открыть URL-у на 8080-м порту. Я внизу статьи, расскажу как можно будет настроить томкат.

Вот полезное чтиво о том, как создавать SysV init файлы в Unix/Linux:

БУДЕТ, немного позже!

Запуск TOMCAT с systemd

Открываем файл:

# vim /etc/systemd/system/tomcat9.service

И приводим к подобному виду:

[Unit]
Description=Tomcat9
After=syslog.target network.target 

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=CATALINA_PID=/usr/local/tomcat9/tomcat9.pid
Environment=TOMCAT_JAVA_HOME=/usr/bin/java
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
Environment=CATALINA_OPTS=
#Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:MaxPermSize=128m -Xms512m -Xmx512m"

ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

Чтобы созданный файл применился, перезагрузим службу:

# systemctl daemon-reload

Чтобы добавить томкат в автозагрузку ОС, выполните:

# systemctl enable tomcat9

И, перезапускаем:

# systemctl restart tomcat9

Чтобы проверить статус, выполняем:

# systemctl status tomcat9
● tomcat9.service - Tomcat9
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled)
   Active: active (running) since Tue 2017-05-09 22:04:58 EEST; 6s ago
  Process: 28528 ExecStop=/bin/kill -15 $MAINPID (code=exited, status=0/SUCCESS)
  Process: 28531 ExecStart=/usr/local/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 28541 (java)
   CGroup: /system.slice/tomcat9.service
           └─28541 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.ut...

May 09 22:04:58 debian systemd[1]: Starting Tomcat9...
May 09 22:04:58 debian startup.sh[28531]: Tomcat started.
May 09 22:04:58 debian systemd[1]: Started Tomcat9.

Как видим, все четко работает.

Вот полезное чтиво о том, как создавать SystemD unit файлы в Unix/Linux:

Пишем systemd Unit файл

Изменить порт в tomcat

Поменять порт:

# vim /usr/local/tomcat9/conf/server.xml

Ищем:

Connector port

и меняем его, после чего — выполняем рестарт томката.

Создание виртуального хоста для tomcat

Виртуальный хостинг предоставляет нам возможность размещать несколько доменов (веб-сайтов) на одном сервере.

Я для примера, создал домен и повесил его на 192.168.1.100. Веб-апликейшены работают на tomcat 9 и исползуют 80-й порт. Я добавил 2 java-приложения через панель — Tomcat Admin. Теперь оба приложения работают по следующим URL-м:

http://192.168.1.100/myapp
http://192.168.1.100/myapp2

Теперь мы хотим запускать оба веб-приложения на основных доменах (tomcat1.linux-notes.org и tomcat2.linux-notes.org). Таким образом, конечные пользователи могут получить доступ к веб-приложению, используя доменное имя.

И так, открываем файл:

# vim /usr/local/tomcat9/conf/server.xml

И приводим к виду:

<Host name="tomcat1.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat1.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat1.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp"
debug="0" reloadable="true"/>
</Host>

<Host name="tomcat2.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat2.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat2.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp2"
debug="0" reloadable="true"/>
</Host>

Суть надеюсь понятна и проста.

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

Настройка SSL для Tomcat

Знаю как, но пока-что не делал.

PS: Вот еще чтиво:

Сконвертировать файл .JKS в .PEM для SSL в Unix/Linux

Идем далее.

Безопасность Tomcat в Linux

Нужно упомянуть про несколько очень важных моментов по безопасности при работе с Tomcat. Рассмотренные выше «ручные» варианты подразумевают обычно запуск из-под root-пользователя. В результате, если вы ещё и стандартно в файле, задающем пользователей (/usr/local/tomcat9/conf/tomcat-users.xml) раскомментируете блок оных:

<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>

…или воспользуетесь распространёнными в интернете примерами получения админских прав типа:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>

…или типа:

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="tomcat, manager-gui, manager-script"/>

Как-то так, статья «Установка Tomcat в Unix/Linux » завершена.

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-tomcat-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/nastrojka-grafana-s-graphite-zabbix-prometheus-mysql-influxdb-elasticsearch-cloudwatch-dlya-sbora-i-otobrazheniya-metrik-v-unix-linux/ https://linux-notes.org/nastrojka-grafana-s-graphite-zabbix-prometheus-mysql-influxdb-elasticsearch-cloudwatch-dlya-sbora-i-otobrazheniya-metrik-v-unix-linux/#respond Mon, 05 Jun 2017 18:32:05 +0000 http://linux-notes.org/?p=11975 Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux Сейчас стало модно использовать разные «хипстерские штуки» и Grafana взяла тренд — это тулза для создания дашбордов по различным метрикам и графиков, которые берутся из других систем.   Я в своей статье, хотел бы рассказать как можно работать с grafana и собирать, строить и использовать различные […]

The post Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux first appeared on linux-notes.org.]]>

Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux

Сейчас стало модно использовать разные «хипстерские штуки» и Grafana взяла тренд — это тулза для создания дашбордов по различным метрикам и графиков, которые берутся из других систем.   Я в своей статье, хотел бы рассказать как можно работать с grafana и собирать, строить и использовать различные дашборы для своих целей.

Это не означает что все что тут будет описано, вы должны у себя использовать, но если есть необходимость в этом — то можете настроить под свои нужды. Я для своих личных, ознакомительных целей, установил все это дело локально на машине и протестировал работу.

Установка grafana в Unix/Linux

И так, я начну с установки свой графаны:

Установка grafana в Unix/Linux

Хочу отметить следующее, — это то, что grafana слушает 3000-й порт и для удобства, я сейчас сделаю прокси на 80-й порт. Есть много прокси-сервисов, но я предпочитаю nginx. Я приведу статьи по установке nginx:

Установка PHP 7(php-fpm) с nginx 1.9 в Debian 8

Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7

Виртуальный хост для отдельного пользователя с PHP-FPM и nginx

Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu

Nginx уже имеется в системе, и сейчас нужно создать конфиг для графаны:

# vim /etc/nginx/conf.d/grafana.conf

И прописываем:

server {
 	listen 80;
 	server_name grafana.local;
 	access_log /var/log/nginx/access-grafana.log;
 	error_log /var/log/nginx/error-frafana.log info;
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header   Host $host;
		proxy_set_header   X-Real-IP        $remote_addr;
            	proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		}
}

Где:

  • grafana.local — это мое доменное имя ( я прописал в /etc/hosts свой IP и сопоставил его с grafana.local)

PS: Нужно прописать в исключения 3000-й и 80-й порты. Если используете iptables, то добавьте правило. Если SELinux, вот чтиво:

Настройка SELinux для Apache/Nginx в Unix/Linux

Отключить SELinux на CentOS

Собственно, — это все что нужно было сделать с nginx —  это и есть прокси. Переходим к конфигу графаны:

# vim /etc/grafana/grafana.ini

И приводим к виду:

[paths]
data = /var/lib/grafana
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins

[server]
protocol = http
http_addr = 127.0.0.1
http_port = 3000
domain = localhost
root_url = http://localhost:3000

Вот такой конфиг заработает ( проверялось не одиножды)! Некоторые люди пишут, что можно выполнить следующую команду:

# setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server

Но я не проверял этого. Оставил на всякий случай.

Перезапускаем службы:

# service nginx restart
# service grafana-server

Переходим к установке и настройке дургих компонентов.

Установка MYSQL/MariaDB в Unix/Linux

Я тоже не буду приводить подробности по установке, а приведу чтиво:

Установка MySQL на Debian/Ubuntu/Linux Mint

Установка MySQL 5.5 на RHEL / CentOS и Fedora

Установка MariaDB 10 на CentOS 7

Вот может еще пригодится:

Разрешить доступ к MySQL с определенной подсети в Unix/Linux

Сейчас, я создаю пользователя, базу и пароль:

# mysql -uroot -p

Создаем базу и пользователя с паролем:

> create database grafana character set utf8 collate utf8_bin;
> grant all privileges on grafana.* to 'grafana'@'127.0.0.1' IDENTIFIED BY 'Your_passwd_user_grafana';
> flush privileges;

Заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> MYSQL и вводим свои данные. У меня выглядит вот так:

добавляем data source для grafana

добавляем data source для grafana

PS: Нам говорят что данный плагин находится в тестовом виде и его не особо стоит пока-что юзать.

Нажимаем на «Add», потом на «Save & Test» и у вас будет уже mysql. Открываем когфиг:

# vim /etc/grafana/grafana.ini

И приводим к виду:

[database]
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password = Your_passwd_user_grafana

Перезапускаем grafana-server:

# service grafana-server restart

После чего, в созданной БД, будут созданы таблицы для работы с графаной.

PS: Это довольно хороший способ хранить хранить, т.к легко можно создать бэкап и ничего не потерять.

Как по мне — очень хорошее решение. Идем далее….

Установка Zabbix в Unix/Linux

Я не буду сильно расписывать что и как ставится, вот чтиво:

Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Чтобы заюзать grafana дашборд  и настроить все это дело с zabbix, нужно установить плагин (выполните установку на сервере где установлена графана):

# grafana-cli plugins install alexanderzobnin-zabbix-app

После установке каждого плагина, стоит перезапускать grafana сервер:

# service grafana-server restart

Сейчас, стоит активировать установленный плагин, для этого стоит зайти в панель самой графаны ( заюзайте ваш логин и пароль) и открыть «plugins» -> «zabbix» -> «enable».

Плагин активировали, но сейчас нужно добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> Zabbix и вводим свои данные.

Как это выглядит:

Dashboard grafana с CloudWatch

Dashboard grafana с CloudWatch

Я использую графану только в сочетании с заббикс. Выглядит очень круто. Не так ли?

Установка Graphite в Unix/Linux

Не было нужды в использовании ( я дополню статью). Но если имеется уже готовый сервер с графитом, то вы можете

добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> Graphite и вводим свои данные.

Как-то так.

Установка Elasticsearch в Unix/Linux

Выполняем установку:

Установка ElasticSearch (один сервер) кластер в Unix/Linux

Сейчас нужно добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> Elasticsearch и вводим свои данные.

Как-то так.

Установка CloudWatch в Unix/Linux

Сейчас нужно добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> CloudWatch и вводим свои данные.

Как это выглядит:

Dashboard grafana с CloudWatch

Dashboard grafana с CloudWatch

Как-то так.

Установка Prometheus в Unix/Linux

Установка этого чуда еще предстоит в будущем. Но если имеется уже сервер с CollectD, то можно добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> Prometheus и вводим свои данные.

Как-то так.

Установка InfluxDB в Unix/Linux

Выполняем установку:

Установка InfluxDB в Unix/Linux

Установка этого чуда еще предстоит в будущем. Но если имеется уже сервер с InfluxDB, то можно добавить Data Sources, для этого заходим в графана веб панель. Открываем:

Data Sources ->  Add data source -> InfluxDB и вводим свои данные. Строим графики и наслаждаемся. Наверное стоит рассказать как строятся графики, но на все времени нет…. При первой возможности, обязательно дополню статью.

Как-то так.

 

Настройка Grafana уведомлений

Для начала, устанавливаем почтовый сервер, я описывал все это дело в своей статье:

Установка почтового сервера Postfix, Dovecot и SquirrelMail в CentOS/Redhat/Fedora

Удалить/Очистить/Сбросить очередь в postfix

Если имеется почтовый сервер, то нужно немного настроить конфиг графаны:

# vim /etc/grafana/grafana.ini

И приводим к виду:

[smtp]
enabled = true
host = localhost:25
cert_file =
key_file =
skip_verify = true
from_address = admin@localhost
from_name = Grafana

Конечно же, перезапускаем сервер:

# service grafana-server restart

А сейчас, открываем графана:

Alerting -> Configure notifications ->  New Channel ->  Заполняем данные и пробуем отправить тестовое сообщение на почту.

Вот и все. Статья «Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux» завершена.

The post Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/nastrojka-grafana-s-graphite-zabbix-prometheus-mysql-influxdb-elasticsearch-cloudwatch-dlya-sbora-i-otobrazheniya-metrik-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-elk-elasticsearch-logstash-kibana-v-unix-linux/ https://linux-notes.org/ustanovka-elk-elasticsearch-logstash-kibana-v-unix-linux/#comments Mon, 05 Jun 2017 18:08:36 +0000 http://linux-notes.org/?p=9912 Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux Для тех, кто не знает, Elastic стек (ELK стек) — это инфраструктурная программа, состоящая из нескольких компонентов, разработанных компанией Elastic. Компоненты включают: Elasticsearch — Высокомасштабируемая поисковая система полнотекстового поиска и аналитики данных с открытым исходным кодом. Данная утилита позволяет быстро (а главное, — режиме реального времени) хранить, искать и анализировать большие объемы […]

The post Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux first appeared on linux-notes.org.]]>

Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux

Для тех, кто не знает, Elastic стек (ELK стек) — это инфраструктурная программа, состоящая из нескольких компонентов, разработанных компанией Elastic.

Компоненты включают:

  • Elasticsearch — Высокомасштабируемая поисковая система полнотекстового поиска и аналитики данных с открытым исходным кодом. Данная утилита позволяет быстро (а главное, — режиме реального времени) хранить, искать и анализировать большие объемы данных. Обычно он используется в качестве базового механизма / технологии, которая обеспечивает  помощь приложениям со сложными функциями поиска.
  • Logstash — Механизм сбора событий, который обеспечивает конвейер в реальном времени. Он может принимать данные из нескольких источников и преобразовывать их в документы JSON.
  • Kibana — Утилита с открытым исходным кодом которая визуализирует работу Elasticsearch. Он используется для взаимодействия с данными, хранящимися в индексах Elasticsearch. Kibana имеет веб-интерфейс, который позволяет быстро создавать и обмениваться динамическими панелями мониторинга, отображающими изменения в запросах Elasticsearch в реальном времени.
  • FileBeat — Утилита с открытым исходным кодом, которая работает в качестве агентов на серверах, для отправки различных типов оперативных данных в Elasticsearch.

И сейчас я расскажу как можно установить сие чудо.

Имеется:

  • ELK — 192.168.13.195 — собственно сам сервер.
  • Filebeats — 192.168.13.150 — взял одну машину в качестве примера.

Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux

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

У меня не будет сильно много нод ( я не вижу смысла в этом т.к я использую ELK для тестовых целей) и я буду использовать всего лишь 1 машину. Это не столь важно, т.к можно настроить и на нескольких. Для примеров, хватит с головой.

Как будет работать ELK? А вот скриншот того как это выглядит:

Работа elk в Unix/Linux

Работа elk в Unix/Linux

Установка Elasticsearch в Unix/Linux

Установка хорошо расписана в моей теме:

Установка ElasticSearch (один сервер) кластер в Unix/Linux

Если ES уже имеется в системе, пропускаем данный шаг и идем далее.

Установка Logstash в Unix/Linux

Установка хорошо расписана в моей теме:

Установка Logstash в Unix/Linux

Если Logstash уже имеется в системе, пропускаем данный шаг и идем далее.

Установка Kibana в Unix/Linux

Установка хорошо расписана в моей теме:

Установка Kibana в Unix/Linux

Если Kibana уже имеется в системе, пропускаем данный шаг и идем далее.

Настройка ELK в Unix/Linux

Пришло время настроить все это дело и запустить…

-==Настройка ElasticSearch===-

Настроим «memory lock» для различных типов ОС.

Если имеется Systemd на хосте:

# vim /usr/lib/systemd/system/elasticsearch.service

Раскомментируйте строку:

LimitMEMLOCK=infinity

Сохраните и выйдите.

Открываем еще один файл:

# vim /etc/sysconfig/elasticsearch

И раскомментируйте строку (60-я строка):

MAX_LOCKED_MEMORY=unlimited

Еще открываем один файл:

# vim /etc/elasticsearch/elasticsearch.yml

И прописываем:

bootstrap.memory_lock: true

Запускаем:

# systemctl daemon-reload

И перезапускаем Elasticsearch:

# systemctl restart elasticsearch

Если имеется SysV на хосте:

Открываем:

# vim /etc/sysconfig/elasticsearch

Раскомментируйте строку:

MAX_LOCKED_MEMORY=unlimited

Сохраните и выйдите.

Еще открываем один файл:

# vim /etc/elasticsearch/elasticsearch.yml

И прописываем:

bootstrap.memory_lock: true

И перезапускаем Elasticsearch:

# service elasticsearch restart

Если имеется Upstart на хосте:

Открываем:

# vim /etc/default/elasticsearch

Прописываем:

MAX_LOCKED_MEMORY=unlimited

Еще открываем файл:

# vim /etc/sysconfig/elasticsearch

Раскомментируйте строку:

MAX_LOCKED_MEMORY=unlimited

Сохраните и выйдите.

Еще открываем один файл:

# vim /etc/elasticsearch/elasticsearch.yml

И прописываем:

bootstrap.memory_lock: true

И перезапускаем Elasticsearch:

# service elasticsearch restart

Тестирование!

И проверяем чтобы было:

 mlockall: true

Проверим, открылся ли порт:

$ netstat -natp | grep 9[2-3]00

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

$ curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
$ curl -XGET 'localhost:9200/?pretty'

ИЛИ:

# curl 'http://127.0.0.1:9200/_nodes/process?pretty'

PS: Если поменяли IP, то стоит использовать именно его! И конечно же, не забываем менять все это дело в конфигурации.

Идем дальше.

-==Настройка LogStash===-

Если у вас нет DNS, то придется добавить свой собственный IP-адрес вашего ELK-сервера в subjectAltName (SAN). Это позволит вашим серверам собирать логи. И для этого, потребуется ключик.

Необходимо создать новый SSL сертификат. Сначала отредактируйте файл:

# vim /etc/pki/tls/openssl.cnf

В [ v3_ca ] разделе, прописываем:

subjectAltName = IP: 192.168.13.195

Где, localhost — Это ваш ИП адрес сервера с логстешем.

……….СПОСОБ 1 — использовать IP……….

Генерируем сертификат:

# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

У меня это — 192.168.13.195!

……….СПОСОБ 2 — использовать доменное имя……….

# openssl req -config /etc/pki/tls/openssl.cnf -subj '/CN=ELK_domain_name/'-x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

Где:

ELK_domain_name — Ваше доменное имя!

Перезапустим:

# service logstash restart

Идем дальше.

Настраиваем input, output, filter файлы для Logstash.

-===INPUT==-

# vim /etc/logstash/conf.d/input.conf

И он имеет следующее содержание:

input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

-===OUTPUT==-

# vim /etc/logstash/conf.d/output.conf

И он имеет следующее содержание:

output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

-===FILTER==-

# vim /etc/logstash/conf.d/filter.conf

И он имеет следующее содержание:

filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}

Проверьте файлы конфигурации Logstash:

# logstash --configtest -f /etc/logstash/conf.d/rsyslog.conf

И перезапускаем службу:

# service logstash restart

Идем дальше.

-==Настройка Kibana===-

Редактируем конфиг:

# vim  /etc/kibana/kibana.yml

Приводим к такому виду:

server.host: "localhost"
server.name: "ELK"
elasticsearch.url: "http://localhost:9200"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
i18n.defaultLocale: "en"

Перезапустим:

# service nginx restart
# service kibana restart

Смотрим, открылся ли порт:

# netstat -natp | grep 5601

Теперь установим nginx и настроим его как обратный прокси — это позволит заходить на кибану с публичного IP-адреса.

Подключаем EPEL:

Включить EPEL репозиторий

И выполняем:

# yum -y install nginx httpd-tools

И создаем конфиг:

# vim /etc/nginx/conf.d/kibana.conf

И прописываем:

server {
    listen 80;
 
    server_name elk_local;
    access_log /var/log/nginx/access-elk.log;
    error_log /var/log/nginx/error-elk.log info;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/my_user_for_kibana;
 
    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
	proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

PS: Для более лучшей защиты, рекомендуют использовать SSL (т.к я его сгенерировал выше, можно заюзать). Под стройкой listen 80, прописываем:

listen 443 ssl;
    ssl on;
    ssl_certificate /etc/pki/tls/certs/logstash-forwarder.crt;
    ssl_certificate_key /etc/pki/tls/private/logstash-forwarder.key;

Но это самоподписанный сертификат и он будет обозначен красным цветом, по этому, можно заюзать следующую статью:

Установка certbot для получения сертификата от letsencrypt в Unix/Linux

Создать новый файл аутентификации:

# htpasswd -c /etc/nginx/my_user_for_kibana kibana_admin

kibana_admin_PW

Пере(запускаем) службу:

# service nginx restart

Смотрим, открылся ли порт:

# netstat -natp | grep 80

Идем дальше.

Установка Filebeat в Unix/Linux

Установка хорошо расписана в моей теме:

Установка Filebeat в Unix/Linux

Как я и говорил, он служит для отправки логов на logstash. Я на этом завершаю свою статью «Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux».

The post Установка ELK (ElasticSearch/Logstash/Kibana) в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-elk-elasticsearch-logstash-kibana-v-unix-linux/feed/ 1
Page_c76a3fcf https://linux-notes.org/optimizatsiya-nastroek-zabbix/ https://linux-notes.org/optimizatsiya-nastroek-zabbix/#comments Thu, 18 May 2017 19:18:13 +0000 http://linux-notes.org/?p=13139 Оптимизация настроек Zabbix Стандартные настройки в zabbix, не всегда хорошо работают и их необходимо тюнить под свои нужды. Я собрал в данной статье, основные параметры для оптимизации. Возможно, — это не все и вы знаете больше, но я постараюсь максимизировать. Настройка кеша Для оптимизации заббикс сервера, стоит увеличить размер кеша, для этого — открываем: # […]

The post Оптимизация настроек Zabbix first appeared on linux-notes.org.]]>

Оптимизация настроек Zabbix

Стандартные настройки в zabbix, не всегда хорошо работают и их необходимо тюнить под свои нужды. Я собрал в данной статье, основные параметры для оптимизации. Возможно, — это не все и вы знаете больше, но я постараюсь максимизировать.

Настройка кеша

Для оптимизации заббикс сервера, стоит увеличить размер кеша, для этого — открываем:

# vim /etc/zabbix/zabbix_server.conf

Находим строку «CacheSize» и увеличиваем его.

### Option: CacheSize
#       Size of configuration cache, in bytes.
#       Shared memory size for storing host, item and trigger data.
#
# Mandatory: no
# Range: 128K-8G
# Default:
CacheSize=256M

Я увеличил до 256M. При надобности, можно добавить.

Zabbix discoverer processes more than 75% busy

Недавно получил алерт в заббиксе:

Zabbix discoverer processes more than 75% busy

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Ищем строку с опцией «StartDiscoverers» и увеличиваем данный параметр:

### Option: StartDiscoverers
#       Number of pre-forked instances of discoverers.
#
# Mandatory: no
# Range: 0-250
# Default:
StartDiscoverers=5

Я, опцию StartDiscoverers увеличил до 5.  На этом настройка заканчивается, нужно сохранить конфиг и перезагрузить zabbix сервер:

# service zabbix-server restart

Можно увидеть мой наглядный пример:

Zabbix discoverer processes more than 75% busy

Если после добавления хостов ( с разными подсетями) вы увидите что снова сработал этот триггер, то нужно увеличить StartDiscoverers.

Zabbix icmp pinger processes more than 75% busy

Недавно получил алерт в заббиксе:

Zabbix icmp pinger processes more than 75% busy

Данное сообщение, говорит — что процесс(ы) выполняющие ping по хостам, перегружены.

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Ищем строку с опцией «StartPingers» и увеличиваем данный параметр:

### Option: StartPingers
#       Number of pre-forked instances of ICMP pingers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartPingers=5

Я, опцию StartPingers увеличил до 5, тем самым — я увеличил количество процессов выполняющих ICMP Ping.

На этом настройка заканчивается, нужно сохранить конфиг и перезагрузить zabbix сервер:

# service zabbix-server restart

Zabbix poller processes more than 75% busy

poller — это процесс который опрашивает агентов.

Данный параметр стоит увеличивать в 2- случаях:

  • Большая сеть
  • Есть много недоступных ресурсов и они мониторятся.

Как исправить?

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Ищем строку с опцией «StartPollers» и увеличиваем данный параметр:

### Option: StartPollers
#       Number of pre-forked instances of pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartPollers=5

Я установил данный параметр в 5. Если очень будет худо, то увеличиваем его до 20. Ничто не приходит бесследно, увеличение процессов ведет к увеличение потребления ресурсов.

После этого, вы можете получить:

Zabbix unreachable poller processes more than 75% busy

Если видите у себя данное сообщение ( алерт, сработанный триггер), открываем конфиг:

# vim /etc/zabbix/zabbix_server.conf

Ищем строку с опцией «StartPollersUnreachable» и увеличиваем данный параметр:

### Option: StartPollersUnreachable
#       Number of pre-forked instances of pollers for unreachable hosts (including IPMI and Java).
#       At least one poller for unreachable hosts must be running if regular, IPMI or Java pollers
#       are started.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartPollersUnreachable=1

PS: У меня данный параметр используется по умолчанию и я его не трогал ( не было ошибок).

Имеется вероятность того, что перестанет хватать коннекщенов для БД, то надо увеличивать лимит подключений.

Zabbix housekeeper processes more than 75% busy

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

И приводим к виду:

HousekeepingFrequency=1
MaxHousekeeperDelete=100

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy timer processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Переменную укажу позже (не знаю какая)!

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy escalator processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Переменную укажу позже (не знаю какая)!

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy alerter processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Переменную укажу позже (не знаю какая)!

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy configuration syncer processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Находим и изменяем:

HistoryCacheSize=

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy db watchdog processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Переменную укажу позже (не знаю какая)!

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy history syncer processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Находим и изменяем:

HistoryCacheSize=
CacheSize=

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy self-monitoring processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Переменную укажу позже (не знаю какая)!

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy http poller processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Находим и меняем параметр:

StartHTTPPollers=

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

Zabbix busy java poller processes, in %

Это можно исправить, откроем zabbix_server.conf конфиг-файл:

# vim /etc/zabbix/zabbix_server.conf

Находим и меняем параметр:

StartJavaPollers=

Сохраняем файл и перезагружаем zabbix:

# service zabbix-server restart

А на этом, у меня все и статья «Оптимизация настроек Zabbix» завершена.

The post Оптимизация настроек Zabbix first appeared on linux-notes.org.]]>
https://linux-notes.org/optimizatsiya-nastroek-zabbix/feed/ 7
Page_c76a3fcf https://linux-notes.org/ustanovka-zabbix-agent-v-unix-linux/ https://linux-notes.org/ustanovka-zabbix-agent-v-unix-linux/#comments Sun, 14 May 2017 18:06:28 +0000 http://linux-notes.org/?p=9131 Установка Zabbix-agent в Unix/Linux Были статьи о том, как установить zabbix-server в Unix/Linux и сегодняшняя тема, — это установка zabbix-agent-ов. Имеется: 192.168.13.10 — zabbix-server 192.168.13.187 — zabbix-agent для CentOS 6 192.168.13.175 — zabbix-agent для Debian 8 И так, начнем! Установка Zabbix-agent в Unix/Linux Данная статья, подразумевает то, что имеется zabbix-server и он уже установлен и работает. […]

The post Установка Zabbix-agent в Unix/Linux first appeared on linux-notes.org.]]>

Установка Zabbix-agent в Unix/Linux

Были статьи о том, как установить zabbix-server в Unix/Linux и сегодняшняя тема, — это установка zabbix-agent-ов.

Имеется:

  • 192.168.13.10 — zabbix-server
  • 192.168.13.187 — zabbix-agent для CentOS 6
  • 192.168.13.175 — zabbix-agent для Debian 8

И так, начнем!

Установка Zabbix-agent в Unix/Linux

Данная статья, подразумевает то, что имеется zabbix-server и он уже установлен и работает.

Вот чтиво:

Установка Zabbix из исходников в FreeBSD

Установка Zabbix на Debian/Ubuntu/Linux Mint

Установка Zabbix на RedHat/CentOS/Fedora

Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Установка Zabbix-agent в CentOS/Fedora/RedHat

Я приводил примеры добавления разных версий репозиториев с zabbix (смотрите статья выше), приведу наглядный пример.

CentOS 7:

# cd /usr/local/src && rpm -Uvh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

Добавим теперь хотя бы одного агента мониторинга, чтобы проверить работу системы. Устанавливать будем на этот же сервер. Делается это просто:

# yum -y install zabbix-agent

Нужно еще настроить конфиг с агентом.

Установка Zabbix-agent в Debian/Ubuntu

Я приводил примеры добавления разных версий репозиториев с zabbix (смотрите статья выше), приведу наглядный пример.

Debian 8:

# cd /usr/local/src && wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie_all.deb

Установим:

# dpkg -i zabbix-release_*_all.deb

И обновляемся:

Добавим теперь хотя бы одного агента мониторинга, чтобы проверить работу системы. Устанавливать будем на этот же сервер. Делается это просто:

# apt-get install zabbix-agent

Нужно еще настроить конфиг с агентом.

Установка Zabbix-agent в MacOS X

Скачиваем последнюю версии zabbix_agentd_osx_installer:

# cd /usr/local/src && wget https://github.com/mipmip/zabbix_agentd_osx_installer/releases/download/1.1/zabbix_agentd-2.2.5-OSX-64bit.pkg

Установим:

# sudo installer -package zabbix_agentd-2.2.5-OSX-64bit.pkg -target /
Password:
installer: Package name is Zabbix Agentd for OSX
installer: Upgrading at base path /
installer: The upgrade was successful.

PS: Вот полезное чтиво:

Установка dmg пакетов через CLI (командную строку) в MacOS X

Настройка:

# vim /usr/local/etc/zabbix/zabbix_agentd.conf

Приводим к виду:

LogFile=/tmp/zabbix_agentd.log
Server=192.168.13.10
ServerActive=192.168.13.10
HostnameItem=system.hostname

Агент запускается автоматически во время следующей загрузки. Для запуска вручную введите:

$ sudo launchctl load /Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist

Если, Launchctl unload не работает, используйте команду ниже:

$ sudo kill -9 `ps -aef | grep zabbix_agentd | grep -v grep | awk '{print $2}'`

Собираем zabbix agentd

Вы должны установить инструменты командной строки xcode и PackageMaker.app.

Скачиваем исходный код:

# cd /usr/local/src && wget https://netcologne.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz

Клонируем:

# cd /usr/local/src && git clone https://github.com/mipmip/zabbix_agentd_osx_installer.git

И выполняем:

$ cd zabbix_agentd_osx_installer && sudo rake create\[/usr/local/src/zabbix-3.2.6.tar.gz]

PS: У меня не завелось на новой версии Mac OS X!

Настройка Zabbix-agent в Unix/Linux

Настройка zabbix-agent-а можно несколькими способами:

  • Установить агент на нужный хост и потом добавлять вручную на zabbix-server (хорошо подойдет, если имеется не очень большое количество серверов для мониторинга)
  • Установить агент на нужный хост и потом настроить «Auto registration» на zabbix-server (хорошо подойдет, если имеется большое количество серверов для мониторинга)

Я расскажу оба варианта.

Настройка на стороне zabbix-server

Подключаемся к серверу где находится сервер и допишем правило:

# iptables -I INPUT -p tcp -m tcp --dport 10051 -m state --state NEW,ESTABLISHED -j ACCEPT

Именно по 10051 будет ходить заббикс агент на заббикс сервер.

PS: Приведу на всякий случай мои конфиги (без комментариев).

# cat /etc/zabbix/zabbix_server.conf | grep -Ev "#|^$"

ListenPort=10051
SourceIP=192.168.13.10
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix_LNorg
DBUser=zabbix
DBPassword=passwd_user_zabbix 
DBPort=3306
JavaGatewayPort=10052
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
Include=/usr/local/etc/zabbix_server.conf.d/*.conf

Открываем URL-у заббикса и переходи в «Configuration» -> «Actions«. В поле «Event source» выбираем «Auto registration»:

Auto registration в zabbix

После этого, нажимаем на «Create action»:

auto registration Linux hosts в zabbix

Я создам наглядный пример для Linux хостов:

  • Name — В этом поле, прописываем название действия для авторегистрации.
  • Conditions — созданные действия.
  • New condition — служит для создания действий.
  • Enabled   — дает возможность включить созданное действие для определения всех Linux хостов.

Это была вкладка с действиями (Action). Переходим на следующую вкладку — «Operations»:

Operations для autoregistration в zabbix

На этой вкладке нужно создать действия которые будет выполняться, если подходит условие:

  • Default subject — В этом поле, я ничего не изменял. Оно служит для оповещения ( собственно — это тема).
  • Default message — В этом поле, я ничего не изменял. Оно служит для оповещения ( собственно — это сообщение).
  • Operations  — Описываются некоторые действия. Я создал правило для добавления хоста, применить ему группу и темплейты.

Настройка на стороне zabbix-agent

Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать. Если же вы будете устанавливать zabbix agent на удаленную машину, то в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно будет задать следующие параметры:

# vim /etc/zabbix/zabbix_agentd.conf

Вот так выглядит мой zabbix-agent конфиг:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix-agent/zabbix_agentd.log
LogFileSize=0
Server=192.168.13.10
ServerActive=192.168.13.10
Hostname=Zabbix agent
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.conf.d/

Запускаем агент и добавляем в автозагрузку:

# systemctl start zabbix-agent
# systemctl enable zabbix-agent

PS: Не забываем выкл\настроить SELinux:

Как отключить SELinux на CentOS

Переходим к тестированию.

Тестирование

Открываем свой заббикс URL. Переходим в «Configuration» — > «Latest data». Выбираем нужный хост и смотрим что все принимается.

А на этом, у меня все. Статья «Установка Zabbix-agent с добавлением нового хоста в Zabbix» завершена.

The post Установка Zabbix-agent в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-zabbix-agent-v-unix-linux/feed/ 1
Page_c76a3fcf https://linux-notes.org/ustanovka-zabbix-nginx-php-fpm-mariadb-v-unix-linux/ https://linux-notes.org/ustanovka-zabbix-nginx-php-fpm-mariadb-v-unix-linux/#comments Thu, 11 May 2017 18:16:11 +0000 http://linux-notes.org/?p=13010 Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux Я описывал статью как можно установить zabbix на различные Linux системы. Но по дефолту, заббикс юзает  апач для фронтенда. Но я люблю nginx + php-fpm и данная статья покажет как это сделать. Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux Я расскажу как установить все эти компоненты, […]

The post Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux first appeared on linux-notes.org.]]>

Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Я описывал статью как можно установить zabbix на различные Linux системы. Но по дефолту, заббикс юзает  апач для фронтенда. Но я люблю nginx + php-fpm и данная статья покажет как это сделать.

Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Я расскажу как установить все эти компоненты, но начнем с самого элементарного.

Установка nginx в Unix/Linux

Полезное чтиво:

Установка PHP 7(php-fpm) с nginx 1.9 в Debian 8

Виртуальный хост для отдельного пользователя с PHP-FPM и nginx

Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7

Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu

Установка и настройка nginx c PHP5, PHP-FPM и MySQL на Fedora

Установка php-fpm в Unix/Linux

Полезное чтиво:

Настройка «process manager(dynamic/static/ondemand)» для php-fpm в Unix/Linux

Установка mariaDB в Unix/Linux

Полезное чтиво:

Установка MariaDB 5.5 на RHEL / CentOS / Fedora Linux

Установка MariaDB 10 на CentOS 7

Установка MariaDB на Debian

Установка MariaDB в Ubuntu

Установка Zabbix в Unix/Linux

Полезное чтиво:

Установка Zabbix на RedHat/CentOS/Fedora

Установка Zabbix на Debian/Ubuntu/Linux Mint

Настройка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Если есть необходимость использовать nginx, то вот конфиг:

# vim /etc/nginx/conf.d/zabbix.conf

И получаем следующее:

server {
 	listen 80;
 	server_name zabbix.local.server;
 	access_log /var/log/nginx/access-zabbix.local.server.log;
 	error_log /var/log/nginx/error-zabbix.local.server.log info;
 	root /usr/share/zabbix;
 	index index.php index.html;
 	auth_basic "Nagios Restricted Access";
 	auth_basic_user_file /etc/zabbix/passwd;
	
	location / {
		root   /usr/share/zabbix;
		index  index.php index.html;
		}
	
	location ~ \.php$ {
		fastcgi_pass php-fpm;
		fastcgi_index index.php;
                fastcgi_param PHP_VALUE "
                 max_execution_time = 300
                 memory_limit = 128M
                 post_max_size = 16M
                 upload_max_filesize = 2M
                 max_input_time = 300
                 date.timezone = Europe/Kiev
                 always_populate_raw_post_data = -1
                ";
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		try_files $uri =404;
		include fastcgi_params;
	}
 	location = /favicon.ico {
        	log_not_found off;
        	access_log off;
	}
	location ~* ".+\.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$" {
		access_log  off;
		log_not_found       off;
		expires             max;
		}
	
        location ~* ^/(conf|api|include)($|\/) {
                 deny all;
         }
        location ~ /\.ht {
                deny all;
        }
        location ~ /\. {
                deny all;
        }
}

Хочу отметить следующее, что заббикс по деволту использует apache и если использовать nginx, то необходимо сменить права:

# chown -R nginx. /etc/zabbix/web
# chown -R nginx. /usr/share/zabbix

Так же, я запускаю php-fpm от nginx пользователя ( я создал ему отдельный файл):

# vim /etc/php-fpm.d/zabbix.conf

И прописал в него:

[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
 
listen.allowed_clients = 127.0.0.1
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
pm = dynamic
pm.start_servers = 30
pm.min_spare_servers = 30
pm.max_spare_servers = 45
pm.process_idle_timeout = 30s
pm.max_requests = 500000000
 
pm.status_path = /status
request_terminate_timeout = 600s
slowlog = /var/log/php-fpm/www-slow.log
rlimit_files = 65535
chdir = /
security.limit_extensions = .php .php3 .php4 .php5
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_flag[display_errors] = off
php_admin_value[error_reporting] = 0
php_admin_value[error_log] = /var/log/php-fpm/php5-fpm.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M
php_admin_flag[log_errors] = on
php_admin_flag[display_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

Выставляем права на сессии:

# chown -R nginx. /var/lib/php/session

И для супер-пупер секурити, создаем:

# htpasswd -c /etc/zabbix/passwd zabbix

Прописываем пароль, для пользователя zabbix.

Перезапускаем службы:

# service nginx restart
# service php-fpm restart
# service mysql restart

Если mysql установлен, то еще необходимо создать пользователя, который будет управлять данной БД. Для начала, подключаемся к серверу:

# mysql -proot -p

Создаем базу и пользователя с паролем:

> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to 'zabbix'@'127.0.0.1' IDENTIFIED BY 'passwd_user_zabbix';
> flush privileges;

У меня используется:

  • zabbix — База данных.
  • zabbix — пользователь.
  • passwd_user_zabbix — пароль для пользователя.

Импортируем данные в созданную БД:

# zcat /usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz | mysql -u zabbix -p zabbix

Настройка zabbix-server

Открываем:

# vim /etc/zabbix/zabbix_server.conf

И производим настройку, у меня данный файл имеет вид:

ListenPort=10051
SourceIP=192.168.13.66
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=passwd_user_zabbix 
DBPort=3306
JavaGatewayPort=10052
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
Include=/usr/local/etc/zabbix_server.conf.d/*.conf

Создаем папку:

# mkdir /usr/local/etc/zabbix_server.conf.d

Запускаем сервер:

# service zabbix-server restart

Проверяем соединения:

# netstat -tulpn|grep zabbix

Разрешаем автозапуск (centOS 7):

$ systemctl enable zabbix-server.service

Или (centOS 5-6):

# chkconfig --levels 235 zabbix-server on

Идем дальше.

Настройка zabbix-agent

Открываем:

# vim /etc/zabbix/zabbix_agentd.conf

И производим настройку, у меня данный файл имеет вид:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.13.66
ListenPort=10050
ListenIP=0.0.0.0
ServerActive=192.168.13.66
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf

Запускаем агент:

# service zabbix-agent restart

Проверяем соединения:

# netstat -tulpn|grep zabbix

Разрешаем автозапуск (centOS 7):

$ systemctl enable zabbix-agent.service

Или (centOS 5-6):

# chkconfig --levels 235 zabbix-agent on

Идем дальше.

Настройка файрвола 

Для корректной работы, нужно пробросить 10050 и 10051.

Пример использования systemctl (пример для centos 7):

# firewall-cmd --permanent --add-port=10050/tcp
# firewall-cmd --permanent --add-port=10051/tcp

Перезапускаем:

# systemctl restart firewalld

Пример использования SELinux (пример для centos 7):

# setsebool -P httpd_can_connect_zabbix=1

Пример использования iptables (пример для centos 5-6):

# iptables -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 10051 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 10052 -j ACCEPT

Для более секундного решения, пробрасываем каждый ИПшник агента и открываем ему порт:

iptables -A INPUT -p tcp -s 172.22.221.100 --dport 10050 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 172.22.221.100 --dport 10051 -m state --state NEW,ESTABLISHED -j ACCEPT

Сохраняем правила:

# iptables-save > /etc/iptables.up.rules

Работа с zabbix

Выполняем установку через веб-интерфейс. Вводим данные которые были созданы выше( zabbix — база данных, zabbix — пользователь, passwd_user_zabbix — его пароль). После установки, можно будет зайти в админ панель:

Пользователь — Admin
Пароль для пользователя — zabbix

После установки, залогинились в админ-панель и приступим к настройке. Первое что нужно сделать — это создать нового пользователя и дать ему права администратора:

— Открываем «Administration» -> «Users». Нажимаем на «Create user» и прописываем ему нужные параметры. Я создал суперпользователя ( взял все от юзера zabbix). После чего, удалил пользователя zabbix ( т.к он не безопасный). 

— Открываем «Administration» -> «Media types». Нажимаем на «email» и вводим нужные параметры. Я не буду заострять внимание на этом. Я расскажу как настроить данную вкладку в следующих статьях.

Я, хочу мониторить сам сервер, и сейчас я, включу данную функцию:

— Открываем «Administration» -> «Hosts». Нажимаем на чекбокс с «Zabbix server» и после чего, клацаем на «enable». Вот скриншот:

Включаем мониторинг Zabbix сервера

Чтобы убедится что все работает и собираются данные — переходим:

— Открываем «Monitoring» -> «Latest data». Выбираем наш сервер, какие данные чекать.

Собственно — это все. Минимальная настройка уже имеется. Как работать с заббиксом и заббикс-агентами, будет немного позже.

Установка и подключения других агентов

Опишу в следующей статье.

А на этом, у меня все. Тема «» завершена.

The post Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-zabbix-nginx-php-fpm-mariadb-v-unix-linux/feed/ 1