Posts Tagged ‘ CentOS

ssh — Ограничение доступа по GeoIP

Последнее время обьем говнотрафика в Интернете вырос в разы. Если раньше auth.log насчитывал примерно до 10 SSH ботов в сутки, то на данный момент этот показатель вырос до сотен уникальных ip. Боты в основном из Китая/Тайвани/Кореи… Фаервол конечно спасает, но хочется чегото изощреннее …
На просторах Интернета когдато нашел рецепт ограничения доступа к sshd по GeoIP. Решил опробовать.
Задача: дать доступ по SSH только ip адресам из Украины — остальным зась!
Для начала установил необходимые пакеты:

root@host:~# apt-get install geoip-bin geoip-database

И поехали ваять скрипты … настраивать конфиги!
Читать полностью

Zabbix — CPU Time & Memory Usage для процесса

Задача — мониторить zabbix-ом Memory и CPU Time Usage для конкретного процесса в Linux/Unix.
Больше конкретики …
Есть вот такой процесс:

black@linux9:~$ sudo ps aux |grep java
bioc 8607 40.4 1.2 11097680 418576 pts/0 Sl Feb25 423:27 /usr/java/jdk1.7.0_67/bin/java -classpath /opt/bioc/maven/boot/plexus-classworlds-2.4.jar -Dclassworlds.conf=/opt/bioc/maven/bin/m2.conf -Dmaven.home=/opt/bioc/maven org.codehaus.plexus.classworlds.launcher.Launcher tomcat7:run
black@linux9:~$

Как узнать сколько ресурсов он потребляет? И не просто узнать, но еще и запихнуть в zabbix для сбора статистики и накручивания триггеров.
Процессор!
CPU Time процесса — в дефолте Zabbix не умеет собирать агентом этот параметр. Но есть возможность написать свой UserParameter в конфиг zabbix-agent. Вот мой вариант:

UserParameter=proc.cputime.fc[*],CPUS=$$(grep -c ^processor /proc/cpuinfo); /bin/ps -A --no-headers -o user:16,cputime,args | /usr/bin/awk -v CPU_C="$$CPUS" 'BEGIN {SUM=0; SNAME="$3"; COMM="$2"; USER="$1"} {if (($$9 ~ SNAME || SNAME == "") && ($$3 ~ COMM || COMM == "") && ($$1 == USER || USER == "")) {d[1]=0; d[2]=0; split($$2, d,"-"); if (d[2] != 0) {split(d[2], t, ":"); SUM+=86400*d[1]+3600*t[1]+60*t[2]+t[3]} else {split($$2, t, ":"); SUM+=3600*t[1]+60*t[2]+t[3]}; }} END''{printf "%.1f", 100*SUM/CPU_C}'

На zabbix-server можно использовать Item «proc.cputime.fc» с дополнительными параметрами которые нужны для выборки awk:
USER=$1 — username, в моем случае «bioc»
COMM=$2 — command name, в моем случае «java»
SNAME=$3 — some unique parameter, в моем случае «tomcat7»
В моем случае это:

black@linux9:~$ /bin/ps -A --no-headers -o user:16,cputime,args |grep bioc |awk '{print $1,$3,$9}'
bioc /usr/java/jdk1.7.0_67/bin/java tomcat7:run
black@linux9:~$

Тоесть в моем конкретном случае Item выглядит так: proc.cputime.fc[bioc,java,tomcat7]
Читать полностью

DHCP+PXE+TFTP — Boot/Netinstall для CentOS 6.6/CentOS 7/Debian Stable/Ubuntu 14.04

Задача: настроить в сети предприятия сетевую установку CentOS 6.6 minimal, CentOS 7 DVD + minimal, Debian Stable (Wheezy), Ubuntu 14.04 LTS
Для этого нам понадобится DHCP сервер (в моей сети уже был настроен isc-dhcp-server), TFTP сервер и:
— HTTP/FTP сервер (на выбор, кому что больше нравится) для локальной установки по сети CentOS;
— NFS сервер для локальной установки по сети Debian/Ubuntu
Почему так? Да потому что Debian based & RHEL based дистры они хоть и линукс … но между ними пропасть всяческих различий, в частности это одно из них 🙂 Сразу скажу, в моем случае приоритет был именно на RHEL, поэтому инсталяхи CentOS я выложил в локальную сеть по HTTP с помощью nginx. С Debian/Ubuntu особо заморачиваться указания не было так как инстал данных дистрибутивов будет выполняться намного реже. Их в меню добавил, но настроил на сетевую установку через Интернет.
Поехали … Читать полностью

Мониторинг Docker контейнеров в Zabbix

Мониторить хочу количество контейнеров в состоянии Running/Crashed/Available. Для нескольких особо важных контейнеров нужно иметь возможность мониторить их статус по имени.
Что до количества, взял готовое решение вот тут. Добавил в Zabbix вот так:
Размещаем в /etc/zabbix/scripts такой вот скриптец под именем docker_status.sh:

#!/bin/bash
 
function countContainers() {
    docker ps -q $1 | wc -l
}
 
function countCrashedContainers() {
    docker ps -a | grep -v -F 'Exited (0)' | grep -c -F 'Exited ('
}
 
TYPE=${1-all}
 
case $TYPE in
    running) COUNT_FUNCTION="countContainers"; shift;;
    crashed) COUNT_FUNCTION="countCrashedContainers"; shift;;
    all) COUNT_FUNCTION="countContainers -a"; shift;;
esac
 
$COUNT_FUNCTION

Читать полностью

CentOS 6 — zabbix-agent 2.4 и Postgresql «password authentication failed»

Сижу себе тихо мирно, пытаюсь настроить мониторинг Postgres базы zabbix-agent-ом по этой статье, а тут на тебе! Все вроде верно делаю, а zabbix-agent не хочет конектиться к postgres-у хоть ты тресни! Что ему не нравится???
В хомяк забикс-агента файлик авторизации подсунул:

[root@db-01 ~]# ls -la /var/lib/zabbix
total 12
drwxr-xr-x   3 zabbix zabbix 4096 Dec 29 15:02 .
drwxr-xr-x. 20 root   root   4096 Dec 19 10:59 ..
-rw-------   1 zabbix zabbix   42 Dec 29 15:02 .pgpass
[root@db-01 ~]#
[root@db-01 ~]# cat /var/lib/zabbix/.pgpass
localhost:*:postgres:postgres:postgres_pass
[root@db-01 ~]#

файлик проверил скопировав в хомяк рута, отлично работает!
Читать полностью

Pentaho + Saiku = Nginx «Error 400 Illegal character in path…»

Блин, последнее время часто натыкаюсь на какието нёхи … притом на ровном месте 🙂
Решил за nginx засунуть Pentaho и Pentaho-DI, сделал по этой статье … на данном этапе проблем не возникло. А вот установленный в Pentaho плагин Saiku Analytics отказался фильтровать данные при постройке OLAP-ов … После тучи угробленного времени с дебагом java, решил копнуть в сторону nginx, и правильно сделал 🙂 Он то зараза мне свинью и подсунул в виде вот такой ошибки:

122.122.100.2 - - [13/Dec/2014:09:07:01 +0000] "GET /pentaho/plugin/saiku/api/api/query/2CA565443-5B4B-3841-AC54-168602DCE65C/result/metadata/hierarchies/%5Bboss.default%5D/levels/fio?result=true&searchlimit=3000&_=1418720804584 HTTP/1.1" 400 990 "https://pentaho.somedomain.com/pentaho/content/saiku-ui/index.html?biplugin5=true&ts=1418720803760" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0" "-"

Ошибка эта изза того что jQuery саиковский генерит GET запрос содержащий символы «[]» которые nginx лихо преобразовывает в «%5B» и «%5D» и уже в таком виде отдает tomcat-у … на что томкат рычит и запрос не понимает, тупо отбрасывает с ошибкой.
Для решения данной проблемки достаточно в конфиге nginx убрать слеш в параметре proxy_pass. Короче … делай как я! Читать полностью

PXE + TFTP CentOS7 — Ошибка «Warning: /dev/root does not exist»

Настраивал сетевую загрузку (PXE + TFTP) инсталлеров различных линуксов (об этом чуть позже напишу). Тестил на Virtualbox-овой виртуалке. Наткнулся на интересную багу в CentOS 7. Бага заключается в том, что несмотря на правильно настроенный TFTP, установка CentOS 7 доходила до места «Starting Dracut Emergency Shell …» и на этом долго висела, потом вываливалась с ошибкой: «Warning: /dev/root does not exist»
Выглядило это примерно так …
CentOS7 - PXE netboot error
Долго я мучил google, нашел соратников с такой же проблемой, но ответа как это решить — нету. Но проблему всетаки решил 🙂 Читать полностью