Hello and welcome to #root.bg!
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Николай Николов Howto iphone, nagios, pushover 0
Здравейте,
Едно от най-важните неща в системното администриране е мониторинга. За това използваме редица инструменти – кой от кой по-добри, за да можем да реагираме бързо и адекватно при определени критични ситуации!
В този пост ще споделя как се правят push notifications за nagios – един от най-добрите инструменти за мониторинг!
За целта използвах приложението Pushover (има го за iOS и Android) и следвах стъпките :
cd /etc/nagios3/ ; wget https://raw.githubusercontent.com/barryo/nagios-plugins/master/notify-by-pushover.php ; chmod +x /etc/nagios3/notify-by-pushover.php
echo "Test message" | /etc/nagios3/notify-by-pushover.php HOST "Nagios API Token/Key" "Your User Key" RECOVERY OK
– Ако всичко е ок, трябва да се получи нотификация : Nagios Alert – HOST – RECOVERY – OK
# 'notify-by-pushover-service' command definition define command{ command_name notify-by-pushover-service command_line /usr/bin/printf "%b" "$NOTIFICATIONTYPE$: \ $SERVICEDESC$@$HOSTNAME$: $SERVICESTATE$ \ ($SERVICEOUTPUT$)" | \ /etc/nagios3/notify-by-pushover.php \ SERVICE "Nagios API Token/Key" $CONTACTADDRESS1$ \ $NOTIFICATIONTYPE$ $SERVICESTATE$ }
# 'notify-by-pushover-host' command definition define command{ command_name notify-by-pushover-host command_line /usr/bin/printf "%b" "Host '$HOSTALIAS$' \ is $HOSTSTATE$: $HOSTOUTPUT$" | \ /etc/nagios3/notify-by-pushover.php \ HOST "Nagios API Token/Key" $CONTACTADDRESS1$ $NOTIFICATIONTYPE$ \ $HOSTSTATE$ }
define contact{ contact_name iPhone alias iPhoneApp service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-by-pushover-service host_notification_commands notify-by-pushover-host address1 "Your User Key" }
Общо взето това е!
Крайният резултат изглежда така :
Николай Николов Howto dump, mysql, sed 0
Hello,
From my last post: MySQL split dump to different databases
from last year, today I will share how quickly and easily we can extract a dump table from our MySQL database. Of course, if we our database a small one, we can open this dump and copy the content of the table into a text editor, but when our base is 100GB it will not be possible.
Everything is thanks to sed :
sed -n -e '/CREATE TABLE.*`fc_company`/,/CREATE TABLE/p' 201709140001-db-CRM.sql > fc_company.sql
Here things seems to be quite clear, but I will clear them out:
It is goot to check the fc_company.sql file, because sed gets the beggining of the next table and drops it 🙂 An example is if we have table fc_compay_new for example.
That’s it!
Николай Николов Howto cluster, haproxy, redis 0
Привет,
Отдавна не съм писал нещо смислено в сайта… просто нямах муза :/
Днес ще споделя как бързо и лесно направих redis haproxy failover схема, а ето и цялата концепция :
За направата на redis master->slave използвах тази статия, като тук е хубаво да се уточни, че статията е написана уж за redis cluster, но реално тя представлява проста схема на репликация между master и slave сървър! Единствената разлика която е примен е , че redis-server2 не работи на режим read-only :
slave-read-only no
Важно е да се изтества всичко дали е ок.
Пример :
redis-cli -a password -h redis-server1 monitor redis-cli -a password -h redis-server2 monitor
или
redis-cli -a password -h redis-server1 info
и информацията за #Replication при нас трябва да изглежда така :
# Replication role:master connected_slaves:1 slave0:ip=221.221.221.221,port=6379,state=online,offset=44430235644,lag=0 master_repl_offset:44430235644 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:44429187069 repl_backlog_histlen:1048576
Тук нещата изглеждат доста прости. Използвам ubuntu 14.04 и версия на haproxy 1.6 stable. Повече инфо тук.
Конфигурационният файл на redis haproxy сървъра ми изглежда така :
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults REDIS mode tcp timeout connect 2s timeout server 15s timeout client 15s frontend ft_redis bind 0.0.0.0:6379 name redis default_backend bk_redis backend bk_redis # mode tcp option tcp-check tcp-check connect tcp-check send AUTH\ password\r\n tcp-check send PING\r\n tcp-check expect string +PONG # tcp-check send info\ replication\r\n # tcp-check expect string role:master tcp-check send QUIT\r\n tcp-check expect string +OK server redis-server1 123.123.123.123:6379 check inter 1s server redis-server2 221.221.221.221:6379 check inter 1s backup listen haproxy-web bind 0.0.0.0:8181 mode http stats enable stats uri / stats realm Strictly\ Private stats auth admin:adminpassword stats refresh 30s # stats admin if TRUE
Така нашият haproxy сървър слуша на всичките ни айпи адреси на порт 6379 и проверява master сървъра ни redis-server1 на принципа на ауторизацията чрез парола “password”.
Ако връзката до redis-server1 отпадне, до 15 секунди пуска трафика към redis-server2. Това се конфигурира от настройките за timeout, но по-ниските такива ще доведат до евентуални проблеми, ако има смущения по трасето. Когато връзката до redis-server1 се възтанови, трафика към него се връща по старо му.
На порт 8181 пък върви статистика, която позволява да наблюдаваме заявките към сървърите ни в реално време. Потребителското име за нея е admin, а паролата : adminpassword.
Това е!
Николай Николов Работа cpanel, http2, nginx, whm 0
Здравейте,
В тази публикация ще споделя за един много странен проблем който борих днес.
Става дума за apache2 http2 proxy problem, като накратко схемата ми беше следната :
Nginx конфигурацията при domain.com е следната :
location /blog/ { rewrite ^/blog/(.*) /$1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 90; proxy_pass https://blog.domain.com/; proxy_redirect https://blog.domain.com/ /blog/;
Тя се слага преди location
Така настроен domain.com/blog се отваря без проблем на всички браузъри без на safari. При safari върти и върти.. и накрая нищо. В логовете на WHM сървъра наблюдавах изключително много заявки от моя айпи адрес които все едно флудваха сървъра.
Решението на проблемът се оказа изключително просто. Бяхме сложили mod_http2 на WHM сървъра, след като прочетохме, че пичовете от Cpanel са го пуснали като stable модул за WHM. Оказа се , че именно в него беше и нашия проблем. След като го махнахме domain.com/blog започна да се зарежда без проблеми отново от safari.
До това решение стигнахме, след като тествахме с blog.domain.com от друг сървър който беше също изцяло на nginx.
Максимата “щом нещо работи, не го пипай” за пореден път се оказа вярна, особенно когато сървърната ни топология е толкова сложна.
Това е!