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/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/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-kibana-v-unix-linux/ https://linux-notes.org/ustanovka-kibana-v-unix-linux/#respond Wed, 19 Apr 2017 16:11:03 +0000 http://linux-notes.org/?p=12607 Установка Kibana в Unix/Linux Kibana — это веб-интерфейс для виртуализации и фильтрации данных с kibana. Он обеспечивает возможности визуализации поверх содержимого, проиндексированного в кластере kibana. Пользователи могут создавать штриховые, линейные, круговые диаграммы. Совокупность kibana + Logstash + Kibana обзаруют ELK-стек ( Elastic стек). Полезное чтиво: Установка Logstash в Unix/Linux Установка kibana (один сервер) кластер в Unix/Linux Установка Kibana в […]

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

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

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

Совокупность kibana + Logstash + Kibana обзаруют ELK-стек ( Elastic стек).

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

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

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

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

Я расскажу как можно установить Kibana на различные Unix/Linux ОС. А установка начнется с установки JAVA, т.к она неотъемная часть данной утилиты.

Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:

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

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

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

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

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

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

Начнем установку кибаны.

Установка Kibana в Debian/Ubuntu

Имеется несколько способов выполнить установку.

-===СПОСОБ 1 — использовать репозиторий===- 

Загрузите и установите открытый ключ подписи:

# wget -qO - https://artifacts.elastic.co/GPG-KEY-kibana | apt-key add -

Возможно, вам придется установить пакет apt-transport-https на Debian перед продолжением:

# apt-get install apt-transport-https -y

Добавляем репозиторий:

# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list

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

# apt-get update && sudo apt-get install kibana -y

-===СПОСОБ 2 — использовать готовый DEB файл===- 

Если у вас 64 бит ОС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-amd64.deb && dpkg -i kibana-5.3.0-amd64.deb

Если у вас 32 бит ОС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-i386.deb && dpkg -i kibana-5.3.0-i386.deb

-===СПОСОБ 3 — использовать готовый архив===- 

Будет описан ниже.

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

Имеется несколько способов выполнить установку.

-===СПОСОБ 1 — использовать репозиторий===- 

Загрузите и установите открытый ключ подписи:

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Добавляем репозиторий:

# vim /etc/yum.repos.d/kibana-5.x.repo

И вставляем в него:

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

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

# yum update && yum install kibana -y

-===СПОСОБ 2 — использовать готовый DEB файл===- 

Если у вас 64 бит ОС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-x86_64.rpm && rpm --install kibana-5.3.0-x86_64.rpm

Если у вас 32 бит ОС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-i686.rpm && dpkg -i rpm --install kibana-5.3.0-i686.rpm

-===СПОСОБ 3 — использовать готовый архив===- 

Будет описан ниже.

Установка Kibana на другой Unix/Linux ОС

Имеется несколько способов выполнить установку.

-===СПОСОБ 1 — использовать docker===- 

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

-===СПОСОБ 2 — использовать готовый файл===- 

Если у вас 64 битный Linux:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz && tar xfvz kibana-5.3.0-linux-x86_64.tar.gz

Если у вас 32 битный Linux:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86.tar.gz && tar xfvz kibana-5.3.0-linux-x86.tar.gz

Если у вас Mac OS X (Darwin):

# cd /usr/local/src && wget  https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-darwin-x86_64.tar.gz && tar xfvz kibana-5.3.0-darwin-x86_64.tar.gz

Сейчас, переносим архив в удобное место:

# mv /usr/local/src/kibana-* /usr/local/kibana

Переходим к настройке переменного окружения:

$ vim ~/.bash_profile

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

export JAVA_HOME=/usr/java/jdk1.8.0_121/
export JRE_HOME=/usr/java/jdk1.8.0_121/jre
 
export KIBANA_HOME=/usr/local/kibana/

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$KIBANA_HOME/bin

И чтобы все заработало, выполняем:

$ . ~/.bash_profile

И, можно приступать к настройке.

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

Я не буду заострять настройку кибаны в данной теме, т.к нет смысла использовать ее порознь ( без участия LogStash и ElasticSearch). Скоро будет статья как собрать ELK стек.

Запуск Kibana в Unix/Linux

Перед запуском (если использовали СПОСОБ 1 и 2), проверяем что у нас используется «SysV init vs systemd»:

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

Запуск Kibana с SysV init

Debian/Ubuntu:

Используйте команду update-rc.d чтобы добавить kibana в автозагрузку системы:

# update-rc.d kibana defaults 95 10

CentOS/Fedora/RedHat:

# chkconfig --add kibana

Чтобы запустить/остановить службу kibana, используйте:

$ sudo -i service kibana start
$ sudo -i service kibana stop

Если kibana не запускается по какой-либо причине, он выведет причину отказа на STDOUT. Лог-файлы можно найти в /var/log/kibana/ папке.

Убедитесь, что вы можете получить доступ к веб-интерфейсу Kibana с другого компьютера (разрешите трафик через 5601-й TCP порт)!

Запуск kibana с systemd

Чтобы добавить Kibana в автозагрузку системы, используйте:

# /bin/systemctl daemon-reload
# /bin/systemctl enable kibana.service

Чтобы запустить/остановить службу Kibana, используйте:

# systemctl start kibana.service
# systemctl stop kibana.service

Чтобы получить вывод лога, используйте:

# journalctl -f

Чтобы показать логи конкретно для kibana:

# journalctl --unit kibana

Чтобы показать записи с лога для kibana службы начиная с заданного времени:

# journalctl --unit kibana --since "2017-12-10 15:12:33"

Убедитесь, что вы можете получить доступ к веб-интерфейсу Kibana с другого компьютера (разрешите трафик через 5601-й TCP порт):

# firewall-cmd --add-port=5601/tcp
# firewall-cmd --add-port=5601/tcp --permanent

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

The post Установка Kibana в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-kibana-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-logstash-v-unix-linux/ https://linux-notes.org/ustanovka-logstash-v-unix-linux/#respond Tue, 18 Apr 2017 20:15:52 +0000 http://linux-notes.org/?p=12605 Установка Logstash в Unix/Linux Logstash — это сервер с открытым исходным кодом, который обрабатывает данные из множества источников одновременно, преобразует их, а затем отправляет в «stash» (естественно, это Elasticsearch). Простыми словами, Logstash — это инструмент для нормализации, фильтрации и сбора логов. Установка Logstash в Unix/Linux Я расскажу как можно установить logstash на различные Unix/Linux ОС. А установка […]

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

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

Logstash — это сервер с открытым исходным кодом, который обрабатывает данные из множества источников одновременно, преобразует их, а затем отправляет в «stash» (естественно, это Elasticsearch). Простыми словами, Logstash — это инструмент для нормализации, фильтрации и сбора логов.

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

Я расскажу как можно установить logstash на различные Unix/Linux ОС. А установка начнется с установки JAVA, т.к она неотъемная часть данной утилиты.

Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:

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

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

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

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

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

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

PS: Logstash требует Java 8 и Java 9 не поддерживается.

А сейчас, переходим к установки логстеша. Возможно, я буду сокращать «LogStash» как «LS» или «ЛогСтеш» — «ЛС».

Установка Logstash в CentOS/Fedora/RHEL

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

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

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

# vim /etc/yum.repos.d/logstash.repo

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

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Вы можете установить его с помощью команды:

# yum install logstash -y

Настройка и запуск утилиты будет немного ниже.

Установка Logstash в Debian/Ubuntu

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

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Возможно, вам придется установить пакет apt-transport-https на Debian перед установкой утилиты:

# apt-get install apt-transport-https -y

Добавляем репозиторий:

# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list

Вы можете установить его с помощью команды:

# apt-get update && sudo apt-get install logstash

Настройка и запуск утилиты будет немного ниже.

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

-=== СПОСОБ 1 — использовать docker==-

Не было нужды использовать логстеш в докере. Как появиться, так сразу же обновлю данную статью.

-=== СПОСОБ 2 — использовать готовый архив==-

Скачиваем с официального сайта архив с ЛС:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz

Распакуем архив:

# tar xfvz  logstash-*.tar.gz

Переносим папку:

# rm -f /usr/local/src/logstash-5.3.0.tar.gz && mv logstash-* /usr/local/logstash

Прописываем переменное окружение:

# vim ~/.bash_profile

У меня это:

export JAVA_HOME=/usr/java/jdk1.8.0_121/
export JRE_HOME=/usr/java/jdk1.8.0_121/jre

export LOGSTASH_HOME=/usr/local/logstash/

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$LOGSTASH_HOME/bin

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

# source ~/.bash_profile

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

# vim /usr/local/logstash/logstash-simple.conf

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

input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}

Затем запустите logstash:

# bin/logstash -f logstash-simple.conf

Как-то так.

Настройка/Запуск Logstash в Unix/Linux

И так, установили ЛС и можно приступать к его настройке.

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

Рассмотрим готовый пример, у меня используется ОС —  CentOS 6/7 и я настрою LS на ней.

Прописываем переменное окружение:

# vim ~/.bash_profile

У меня это:

export JAVA_HOME=/usr/java/jdk1.8.0_121/
export JRE_HOME=/usr/java/jdk1.8.0_121/jre

export LOGSTASH_HOME=/usr/share/logstash/

export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:/usr/bin:/usr/local/bin:$LOGSTASH_HOME/bin

PS: Для того чтобы узнать где лежит ( куда выполнилась установка LS, используйте — whereis logstash команду)!

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

# . ~/.bash_profile

И так, основной конфиг я не трогал и он имеет следующую структуру:

# cat /etc/logstash/logstash.yml | grep -Ev "#" 

path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d
path.logs: /var/log/logstash

Ничего сложного в понимании данных строк — НЕТ!

Все конфиги должны быть в /etc/logstash/conf.d.

Запуск Logstash в Unix/Linux

Перед началом запуска, проверяем что у нас используется «SysV init vs systemdedit»:

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

Запуск Logstash используя Systemd

Такие дистрибутивы, как Debian Jessie, Ubuntu 15.10+ и многие производные SUSE, используют systemd и команду systemctl для запуска и остановки служб. После установки пакета вы можете запустить Logstash с помощью:

# systemctl start logstash.service

Добавим службу в автозагрузку ОС:

# systemctl enable logstash.service

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044):

# firewall-cmd --add-port=5044/tcp
# firewall-cmd --add-port=5044/tcp --permanent

Запуск Logstash используя init/Upstart

Для систем, использующих «upstart», вы можете запустить Logstash с помощью:

# initctl start logstash

Автоматически созданный файл конфигурации для «upstart» систем — /etc/init/logstash.conf.

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044).

Запуск Logstash используя SysV

Для систем, использующих SysV, для систем, использующих»

# /etc/init.d/logstash start

Автоматически созданный файл конфигурации для систем SysV — /etc/init.d/logstash.

Настройте брандмауэр, чтобы Logstash мог получать логи от клиентов (TCP-порт 5044).

Установка плагинов для LogStash

Проверяем какие плагины имеются:

# logstash-plugin list

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

# logstash-plugin install logstash-filter-metrics

Для обновления:

# logstash-plugin update logstash-filter-metrics

Чтобы удалить:

# logstash-plugin uninstall logstash-filter-metrics

Работа с Logstash в Unix/Linux

Сначала давайте проверим вашу установку Logstash, запустив самый простой конвейер Logstash.

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

работа Logstash pipeline

Чтобы проверить установку Logstash, запустите самый простой конвейер Logstash. Например:

# /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Или (если прописали переменное окружение):

# logstash -e 'input { stdin { } } output { stdout {} }'

Можно прописать что-то и LS отдаст (выход CTR +C).

Как работает LogStash?

Конвейер обработки событий Logstash имеет три этапа: inputs (входы) → filters (фильтры) → outputs (выходы). Входы генерируют события, фильтры изменяют их, а выходы отправляют их в другое место. Входы и выходы поддерживают кодеки, которые позволяют кодировать или декодировать данные при входе или выходе из конвейера без использования отдельного фильтра.

Inputs

Вы используете inputs для получения данных в Logstash. Некоторые из наиболее часто используемых inputs:

  • file — Читает файл, подобно команде «tail -F».
  • syslog — Прослушивает порт 514 для сообщений syslog и анализирует данные (в соответствии с форматом RFC3164)
  • redis — Считывает данные с redis-сервера, используя как redis-каналы, так и redis-списки. Redis часто используется в качестве «брокера» (broker) в централизованной установке Logstash, которая ставит в очередь события Logstash от удаленных Logstash «отправителей» (shippers).
  • beats — Обрабатывает события, отправленные с Filebeat.

Дополнительные сведения о доступных inputs см. в разделе «Input Plugins».

Filters

Фильтры (Filters) являются промежуточными устройствами обработки данных в конвейере Logstash. Вы можете комбинировать фильтры с условными выражениями для выполнения действия над событиями, если оно соответствует определенным критериям. Некоторые полезные фильтры:

  • grok — Парсит и структурирует произвольный текст. Grok в настоящее время является лучшим средством для анализа неструктурированных данных логов во что-то структурированное и запрашиваемое. Благодаря 120 шаблонам, которые встроены в Logstash, вы сможете найти все для ваших потребностей!
  • mutate — Выполняет общие преобразования в полях событий. Вы можете переименовывать, удалять, заменять и изменять поля в ваших событиях.
  • drop — Удаляет событие полностью, например, debug events.
  • clone — Создает копию события, возможно добавление или удаление полей.
  • geoip — Добавляет информацию о географическом расположении IP-адресов (также показывает потрясающие графики в Kibana!)

Дополнительные сведения о доступных фильтрах см. в разделе «Модули фильтра»(Filter Plugins).

Outputs

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

  • elasticsearch — Отправляет данные о событиях в Elasticsearch. Если вы планируете сохранять данные в эффективном, удобном и легко запрашиваемом формате, то Elasticsearch поможет вам.
  • file — Записает данные события в файл на диске.
  • graphite — Отправляет данные о событиях в графит (популярный инструмент с открытым исходным кодом для хранения и графического отображения метрик.
  • statsd — Отправляет данные о событиях в statsd сервис, который «слушает статистику, например счетчики и таймеры, отправляет по UDP и отправляет агрегаты в одну или несколько подключаемых внутренних служб». Если вы уже используете statsd, это может пригодиться вам!

Дополнительные сведения о доступных outputs см. в разделе плагины вывода (Output Plugins).

Codecs

Кодеки (Codecs) — это в основном потоковые фильтры, которые могут работать как часть входа (input) или выхода (output). Codecs позволяют вам легко отделить передачу ваших сообщений от процесса сериализации. Популярные кодеки включают в себя json, msgpack и plain (text):

  • json — Кодирует или декодирует данные в формате JSON.
  • multiline — Объединяет многострочные текстовые события, такие как java exception и stacktrace, в одно событие.

Дополнительные сведения о доступных кодеках см. в разделе плагины кодеков (Codec Plugins).

А на этом, у меня все! Статья «Установка Logstash в Unix/Linux » завершена.

The post Установка Logstash в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-logstash-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-elasticsearch-odin-server-klaster-v-unix-linux/ https://linux-notes.org/ustanovka-elasticsearch-odin-server-klaster-v-unix-linux/#comments Sat, 15 Apr 2017 23:23:18 +0000 http://linux-notes.org/?p=7208 Установка ElasticSearch (один сервер) кластер в Unix/Linux Elasticsearch — это гибкий и мощный распределенный поиск в реальном времени и аналитический движок. Он использует простой набор API и обеспечивает возможность полнотекстового поиска. Описание всех преимуществ этого движка доступно на официальном сайте. Далее по тексту будем называть Elasticsearch как ES. Установка ElasticSearch (один сервер) кластер в Unix/Linux Проверка […]

The post Установка ElasticSearch (один сервер) кластер в Unix/Linux first appeared on linux-notes.org.]]>

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

Elasticsearch — это гибкий и мощный распределенный поиск в реальном времени и аналитический движок. Он использует простой набор API и обеспечивает возможность полнотекстового поиска. Описание всех преимуществ этого движка доступно на официальном сайте. Далее по тексту будем называть Elasticsearch как ES.

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

Проверка Java

Java является основным требованием при установке ES. Поэтому, убедитесь что в вашей системе установлена Java:

# java -version

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:

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

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

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

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

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

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

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

-===СПОСОБ 1 — использовать репозиторий ===-

Импортируем ключ Eliteearch PGP ключ:

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

Возможно, вам придется установить пакет apt-transport-https на Debian:

# apt-get install apt-transport-https -y

Добавлем репозиторий:

# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list

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

# apt-get update && sudo apt-get install elasticsearch -y

-===СПОСОБ 2 — использовать DEB пакет ===-

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.deb
# sha1sum elasticsearch-5.3.0.deb 
# dpkg -i elasticsearch-5.3.0.deb

-===СПОСОБ 3 — использовать исходный код ===-

Будет описан ниже.

Установка ElasticSearch (один сервер) кластер в CentOS/Fedora/RHEL

-===СПОСОБ 1 — использовать репозиторий ===-

Загружаем ключ:

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Добавляем репозиторий:

# vim /etc/yum.repos.d/elasticsearch-5.x.repo

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

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

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

# yum install elasticsearch -y

Если используете Fedora:

# dnf install elasticsearch

-===СПОСОБ 2 — использовать RPM пакет ===-

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.rpm
# sha1sum elasticsearch-5.3.0.rpm 
# rpm --install elasticsearch-5.3.0.rpm

-===СПОСОБ 3 — использовать исходный код ===-

Будет описан ниже.

Установка ElasticSearch (один сервер) кластер в Mac OS X

Для начала, устанавливаем HOMEBREW — Установка HOMEBREW на Mac OS X после чего, выполняем поиск пакета:

$ brew search elasticsearch

Вывод:

elasticsearch                          elasticsearch@2.4

Как уже поняли, имеется несколько пакетов, я установлю:

$ brew install elasticsearch

Установка ElasticSearch (один сервер) кластер в других Unix/Linux ОС

-===Docker===-

Можно запустить докер контейнер с ES, но мне не приходилось этого делать. Т.к не было нужды. Если появится такая возможность, я обязательно дополню данную тему.

-===архив===-

Теперь загрузите архив Elasticsearch с официального сайта:

# cd /usr/local/src && wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz

Распакуем архив:

$ tar xvzf elasticsearch-*.tar.gz

Перемещаем распакованную папку в удобное место ( для простоты использования ):

# rm -f /usr/local/src/elasticsearch-5.3.0.tar.gz && mv /usr/local/src/elasticsearch-* /usr/share/elasticsearch

И, переходим к настройке.

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

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

$ vim /usr/share/elasticsearch/config/elasticsearch.yml

PS: Данный конфиг лежит там, т.к я использовал установку с архива. По умолчанию, все конфиги будут находиться в /etc/elasticsearch/ папке.

Изменяем:

cluster.name: linux_notes_cluster_1 
node.name: "My DataCenter"
bootstrap.memory_lock: true
network.host: 192.168.13.161
http.port: 9200
http.host: 0.0.0.0
transport.host: 127.0.0.1

Где:

  • cluster.name — Имя кластера.
  • node.name: Имя самого сервера.
  • network.host: ИП хоста.

Установка плагинов для Elasticsearch

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

$ /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

Запуск Elasticsearch

Запускаем службу:

$ /usr/share/elasticsearch/bin/elasticsearch &

Перед запуском (если использовали СПОСОБ 1 и 2), проверяем что у нас используется «SysV init vs systemd»:

# ps -p 1

Запуск  Elasticsearch с SysV init

Чтобы запустить/остановить службу ES, используйте:

$ sudo -i service elasticsearch start
$ sudo -i service elasticsearch stop

Если Elasticsearch не запускается по какой-либо причине, он выведет причину отказа на STDOUT. Лог-файлы можно найти в /var/log/elasticsearch/ папке.

Незабываем пробросить порт в iptables!

Используйте команду update-rc.d чтобы добавить службу в автозагурзку ОС Debian/Ubuntu:

# update-rc.d elasticsearch defaults 95 10

Используйте команду chkconfig, чтобы добавить службу в автозагрузку ОС RHEL/CentOS:

# chkconfig --add elasticsearch

Для просмотра, можно использовать:

# chkconfig --list elasticsearch

Запуск Elasticsearch с systemd

Чтобы добавить ES в автозагрузку системы, используйте:

# /bin/systemctl daemon-reload
# /bin/systemctl enable elasticsearch.service

Чтобы запустить/остановить службу ES, используйте:

# systemctl start elasticsearch.service
# systemctl stop elasticsearch.service

Чтобы получить вывод лога, используйте:

# journalctl -f

Чтобы показать логи конкретно для ES:

# journalctl --unit elasticsearch

Чтобы показать записи с лога для ES службы начиная с заданного времени:

# journalctl --unit elasticsearch --since "2017-12-10 15:12:33"

Разрешим прохождения трафика через 9200-й TCP-порт в вашем брандмауэре:

# firewall-cmd --add-port=9200/tcp
# firewall-cmd --add-port=9200/tcp --permanent

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

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

Открываем браузер:

http://es.linux-notes.org:9200/

Или, можно выполнить в консоле:

# curl -X GET 'http://localhost:9200'
{
  "name" : "My DataCenter",
  "cluster_name" : "linux_notes_cluster_1",
  "cluster_uuid" : "sXHdudwXRnODMpPBA2NA6Q",
  "version" : {
    "number" : "5.3.0",
    "build_hash" : "3adb13b",
    "build_date" : "2017-03-23T03:31:50.652Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

Основные примеры использования Elasticearch

Следующие примеры помогут вам добавить, получить и найти данные в кластере Elasticsearch. Начнем, с создания  бакета:

$ curl -XPUT http://localhost:9200/mybucket

Получаем:

{"acknowledged":true,"shards_acknowledged":true}

PS: Можно открыть ссылку в браузере.

Добавление данных в Elasticsearch

Чтобы начать использовать Elasticsearch, давайте сначала добавим некоторые данные. Как уже упоминалось, Elasticsearch использует API RESTful, который отвечает обычным командам CRUD: Create, Read, Update и Delete. Для работы с ним мы будем использовать curl.

$ curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Вывод:

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"created":true}

Я курлом, отправил HTTP POST реквест на Elasticseach сервер. УРЛа запроса, была /tutorial/helloworld/1. Здесь важно понять параметры:

  • tutorial — Является индексом данных в Elasticsearch.
  • helloworld — Это тип.
  • 1 — Является идентификатором нашей записи под указанным выше индексом и типом.

Вы можете получить эту первую запись с HTTP GET-запросом:

$ curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

Вывод:

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello World!" }}

Чтобы изменить существующую запись, вы можете использовать HTTP PUT-запрос следующим образом:

$ curl -X PUT 'localhost:9200/tutorial/helloworld/1?pretty' -d '
{
  "message": "Hello Man!"
}'

И снова проверяем:

$ curl -X GET 'http://localhost:9200/tutorial/helloworld/1'
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":3,"found":true,"_source":
{
"message": "Hello Man!"

Возможно, вы заметили дополнительный аргумент в приведенном выше запросе. Он позволяет читаемым человеком формате, чтобы вы могли писать каждое поле данных в новой строке. Вы также можете «приукрасить» свои результаты при извлечении данных и получить гораздо более приятный результат, например:

# curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty'
{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 3,
  "found" : true,
  "_source" : {
    "message" : "Hello Man!"
  }
}

Проверка работы состояния кластера

И так, можно проверить состояния кластера следующим образом:

# curl -XGET 'http://localhost:9200/_cluster/health'

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

# curl --user Your_USER:Your_Password -XGET 'http://localhost:9200/_cluster/health'

Или в более красивом виде:

# curl --user Your_USER:Your_Password -XGET 'http://localhost:9200/_cluster/health?pretty'

Вывод получим:

{
  "cluster_name" : "cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 1800,
  "active_shards" : 3600,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

По статусу можно понять что все — ОК. Если будет другой цвет, скажем — красный (red) или желтый (yellow) — это уже не есть хорошо.

Вот и все, установка «Установка ElasticSearch (один сервер) кластер в Unix/Linux» завершена.

The post Установка ElasticSearch (один сервер) кластер в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-elasticsearch-odin-server-klaster-v-unix-linux/feed/ 3