1

(1 ответов, оставленных в Иные программы.)

Инсталлируем ELKa (https://www.elastic.co) направляем туда все логи, и имеем централизованное хранилище, возможность от приходящей информации что-то делать и много еще чего...

2

(3 ответов, оставленных в Linux)

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

3

(3 ответов, оставленных в Linux)

Все как тут делаем Chapter 9. Installing a fully-virtualized Windows guest ?

4

(2 ответов, оставленных в Linux)

Можно, но как оказывается не все пропускается во всех сетях, и так проще попасть. А все не хочу так как это еще и фаервол.

5

(2 ответов, оставленных в Linux)

Вот понадобилось мне вывести наружу ftp, кстати, поднял очень даже не плохой роутер на Centos, совсем удалился я от FreeBSD..... Ну да ладно... Есть пулл входящих IP и куча серверов, проблема для любого FTP за натом стандартная - пассивные порты и ответ с другого внешнего IP (тот что GW по умолчанию)

Пример iptables

*nat
:PREROUTING ACCEPT [24159:1702354]
:INPUT ACCEPT [16402:1084803]
:OUTPUT ACCEPT [2046:158805]
:POSTROUTING ACCEPT [509:46875]
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 20 -j DNAT --to-destination 10.0.0.14:20
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.0.0.14:21
-A PREROUTING -d 193.333.222.111/32 -i ens5 -p tcp -m tcp --dport 1024:65535 -j DNAT --to-destination 10.0.0.14:1024-65535
-A POSTROUTING -s 10.0.0.14/32 -o ens5 -j SNAT --to-source 193.333.222.111
-A POSTROUTING -o ens5 -j MASQUERADE

Что тут происходит, все порты которые нужны для ftp пробрасываются на внутренний сервер, плюс все исходящее с внутреннего сервера привязывается к его IP, так как при переходе на пассивные порты сервер начинает отвечать с общего исходящего IP. Можно еще добавить 1024:65535 на postrouting и RELATED,ESTABLISHED на prerouting, но это все дело вкуса...

Настоятельно рекомендую Percona XtraDB Cluster, тот же MySQL, но много всего сверху, например wsrep, xtrabackup...

7

(0 ответов, оставленных в Иные программы.)

Последнее время, для своих нужд, я пересел на zabbix, как на основной софт для мониторинга. Есть плюсы и минусы, но в целом - все что мне надо он умеет и нет необходимости настраивать что-то через командную строку, все кликается через web панель.

А поделится я хочу примером как можно настроить динамический мониторинг для haproxy балансера. Система только готовится пойти в прод - поэтому метрики пока смешные, но не в них дело...

1. Скрипты для сбора метрик с haproxy (их можно применить и с другими программами, например Graphite)

Скрипт для определения потоков (vhost если брать за аналог apache)
/etc/zabbix/sh/haproxy-discovery.sh

#!/bin/sh
sock='/tmp/haproxy.sock'
loop1=0
loop2=0
ha_names_list=`echo 'show stat' | socat - UNIX-CLIENT:$sock | grep -v '^#' | grep -v '^$' | grep -v '^stats,' | awk -F ',' '{print $1","$2}'`
echo "{";
echo "  \"data\":["
echo $ha_names_list | sed 's/\(.\) /\1\n/g' \
  | while IFS=',' read name type; do
  echo 'show stat' | socat - UNIX-CLIENT:$sock | grep '^#' | sed 's/[#| ]//g' | sed 's/\(.\),/\1\n/g' | grep -v '^$' \
    | while read params; do
      if ! echo $params | egrep -q '^pxname|svname|status|last_chk|lastsess$'; then
        [ "$loop1" == "1" ] || [ "$loop2" == "1" ] && echo ","
        loop2=1
        echo -n "    {"
        echo -n "\"{#HANAME}\":\"$name\"",
        echo -n "\"{#HATYPE}\":\"$type\"",
        echo -n "\"{#HAPARAMS}\":\"$params\""
        echo -n "}"
      fi
    done
  loop1=1
  done
echo
echo "  ]"
echo "}"

На выходе получаем json по которому сработает автопоиск заббикса.

{
  "data":[
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"qcur"}, 
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"qmax"},
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"scur"},
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"smax"},
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"slim"},
    {"{#HANAME}":"http","{#HATYPE}":"FRONTEND","{#HAPARAMS}":"stot"},
... 
   {"{#HANAME}":"adx_static","{#HATYPE}":"BACKEND","{#HAPARAMS}":"ttime"}
  ]
}

Список потоков и всех метрик
/etc/zabbix/sh/haproxy-stat.sh

#!/bin/sh
sock='/tmp/haproxy.sock'
ha_params_list=`echo 'show stat' | socat - UNIX-CLIENT:$sock | grep '^#' | sed 's/[#| ]//g' | sed 's/\(.\),/\1\n/g' | grep -v '^$'`
echo 'show stat' | socat - UNIX-CLIENT:$sock \
  | while IFS=',' read ${ha_params_list}; do
    [ "$pxname" == '# pxname' ] && continue
    [ "$pxname" == '' ] || [ "$svname" == '' ] && continue
    [ "$status" == 'UP' ] || [ "$status" == 'OPEN' ] && tstatus="1" || tstatus="2"
    echo $ha_params_list | sed 's/\(.\) /\1\n/g' | while read params; do
      if ! echo $params | egrep -q '^pxname|svname|status|last_chk|lastsess$'; then
        echo "$pxname $svname ${params}:${!params:-0}" 
      fi
    done
    echo "$pxname $svname status:${tstatus:-0}"
  done

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

...
http FRONTEND slim:10000
http FRONTEND stot:161301
http FRONTEND bin:20078739
http FRONTEND bout:37266663
...

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

/etc/zabbix/zabbix_agentd.conf.d/haproxy.conf

# cron script needed for create /tmp/haproxy.stat
# $1 - F/B name
# $2 - type or server name
# $3 - value name
UserParameter=haproxy[*],HOME=/var/lib/zabbix cat /tmp/haproxy.stat | grep '$1' | grep '$2' | grep '$3' | awk -F ':' '{print $$2}'
UserParameter=haproxy.discovery,HOME=/var/lib/zabbix /etc/zabbix/sh/haproxy-discovery.sh

3. Cron

/etc/cron.d/haproxy-stat.cron

*  *  *  *  *  haproxy /etc/zabbix/sh/haproxy-stat.sh > /tmp/haproxy.stat

4. Ну и самое неприятное, накликать все в zabbix-server (но можно и xml имрортировать)

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
    <version>2.0</version>
    <date>2016-02-07T16:19:15Z</date>
    <groups>
        <group>
            <name>Templates</name>
        </group>
    </groups>
    <templates>
        <template>
            <template>Template HAPR</template>
            <name>Template HAPR</name>
            <groups>
                <group>
                    <name>Templates</name>
                </group>
            </groups>
            <applications>
                <application>
                    <name>Haproxy</name>
                </application>
            </applications>
            <items/>
            <discovery_rules>
                <discovery_rule>
                    <name>Haproxy discovery</name>
                    <type>0</type>
                    <snmp_community/>
                    <snmp_oid/>
                    <key>haproxy.discovery</key>
                    <delay>30</delay>
                    <status>0</status>
                    <allowed_hosts/>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <filter>{#HAPARAMS}:^(qcur|qmax|scur|smax|rate|rate_max|hrsp.*)$</filter>
                    <lifetime>30</lifetime>
                    <description/>
                    <item_prototypes>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} bytes in</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},bin]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>B</units>
                            <delta>1</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} bytes out</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},bout]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>B</units>
                            <delta>1</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_1xx</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_1xx]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_2xx</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_2xx]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_3xx</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_3xx]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_4xx</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_4xx]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_5xx</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_5xx]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} hrsp_other</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},hrsp_other]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>2</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} Session Total Time</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},ttime]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>ms</units>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} status</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},status]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                        <item_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} {#HAPARAMS}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>haproxy[{#HANAME},{#HATYPE},{#HAPARAMS}]</key>
                            <delay>45</delay>
                            <history>7</history>
                            <trends>365</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description/>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Haproxy</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                        </item_prototype>
                    </item_prototypes>
                    <trigger_prototypes/>
                    <graph_prototypes>
                        <graph_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} HTTP responses codes</name>
                            <width>900</width>
                            <height>200</height>
                            <yaxismin>0.0000</yaxismin>
                            <yaxismax>100.0000</yaxismax>
                            <show_work_period>1</show_work_period>
                            <show_triggers>1</show_triggers>
                            <type>0</type>
                            <show_legend>1</show_legend>
                            <show_3d>0</show_3d>
                            <percent_left>0.0000</percent_left>
                            <percent_right>0.0000</percent_right>
                            <ymin_type_1>0</ymin_type_1>
                            <ymax_type_1>0</ymax_type_1>
                            <ymin_item_1>0</ymin_item_1>
                            <ymax_item_1>0</ymax_item_1>
                            <graph_items>
                                <graph_item>
                                    <sortorder>0</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>C8C800</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_other]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>1</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>00C8C8</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_5xx]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>2</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>C800C8</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_4xx]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>3</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>0000C8</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_3xx]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>4</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>00C800</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_2xx]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>5</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>C80000</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},hrsp_1xx]</key>
                                    </item>
                                </graph_item>
                            </graph_items>
                        </graph_prototype>
                        <graph_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} Network Traffic</name>
                            <width>900</width>
                            <height>200</height>
                            <yaxismin>0.0000</yaxismin>
                            <yaxismax>100.0000</yaxismax>
                            <show_work_period>1</show_work_period>
                            <show_triggers>1</show_triggers>
                            <type>0</type>
                            <show_legend>1</show_legend>
                            <show_3d>0</show_3d>
                            <percent_left>0.0000</percent_left>
                            <percent_right>0.0000</percent_right>
                            <ymin_type_1>0</ymin_type_1>
                            <ymax_type_1>0</ymax_type_1>
                            <ymin_item_1>0</ymin_item_1>
                            <ymax_item_1>0</ymax_item_1>
                            <graph_items>
                                <graph_item>
                                    <sortorder>0</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>C80000</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},bin]</key>
                                    </item>
                                </graph_item>
                                <graph_item>
                                    <sortorder>1</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>00C800</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},bout]</key>
                                    </item>
                                </graph_item>
                            </graph_items>
                        </graph_prototype>
                        <graph_prototype>
                            <name>Haproxy {#HANAME}/{#HATYPE} Session Total Time</name>
                            <width>900</width>
                            <height>200</height>
                            <yaxismin>0.0000</yaxismin>
                            <yaxismax>100.0000</yaxismax>
                            <show_work_period>1</show_work_period>
                            <show_triggers>1</show_triggers>
                            <type>0</type>
                            <show_legend>1</show_legend>
                            <show_3d>0</show_3d>
                            <percent_left>0.0000</percent_left>
                            <percent_right>0.0000</percent_right>
                            <ymin_type_1>0</ymin_type_1>
                            <ymax_type_1>0</ymax_type_1>
                            <ymin_item_1>0</ymin_item_1>
                            <ymax_item_1>0</ymax_item_1>
                            <graph_items>
                                <graph_item>
                                    <sortorder>0</sortorder>
                                    <drawtype>0</drawtype>
                                    <color>C80000</color>
                                    <yaxisside>0</yaxisside>
                                    <calc_fnc>2</calc_fnc>
                                    <type>0</type>
                                    <item>
                                        <host>Template HAPR</host>
                                        <key>haproxy[{#HANAME},{#HATYPE},ttime]</key>
                                    </item>
                                </graph_item>
                            </graph_items>
                        </graph_prototype>
                    </graph_prototypes>
                    <host_prototypes/>
                </discovery_rule>
            </discovery_rules>
            <macros/>
            <templates/>
            <screens/>
        </template>
    </templates>
</zabbix_export>

5. Результат
http://s23.postimg.org/oktz440aj/hrsp.png

Разница примерно как между дядей который замешивает бетон и дядей который строит стену... По сути не умеющий программировать администратор никому не нужен, и чаще всего является виндоусистом. А вот если вы знаете технологии, стандарты и основные технические решения, да еще и покодить можете, вот такие много где нужны. Во общем после окончания вуза вы можете раздувать мангал дипломом, так как скорее всего он и знания которые вы получите только для этого и сгодятся. Админом или программистам вас не возьмут, лучше всего устроится в службе технической поддержки в большую компанию, где есть много систем. Так вы узнаете поверхностно технологию и получите навыки обладания телепатией. А дальше все зависит от вас, чаше всего талантливых замечают и дают им больше возможностей, в итоге можно перейти как стажер в администраторы или программисты, где вас и подпустят напрямую к тому где получают реальный опыт. Во общем 2-4 года, а дальше пожизненное само совершенство, так как технология не стоит на месте. Так же к тому времени определитесь с направлением, например: программирование и на каком языке, администрирование базы данных, хостинг, виртуализация, хранилища, сеть, дата центры, безопасность... всего очень много и все интересно.

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

9

(8 ответов, оставленных в Все HTTPD 80-й порт.)

1. При поморщи SSL мы защищаем данные которые передаются между клиентом и сервером путем их кодирования.
2. Виртуальный-реальный, фигня для рекламы, как и облако... Суть в том что для обычного SSL вам нужно иметь уникальную пару IP-DOMEN, нельзя повесить на один IP несколько доменов с разными SSL сертификатом. Для того чтобы это можно было реализовать в новых веб серверах добавлена поддержка SNI. Сильно не вдаюсь, тут https://en.wikipedia.org/wiki/Server_Name_Indication хорошо описана проблема.

Добавлено: 13-10-2015 17:08:31

А да,

Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

пере генерируйте сертификат без пароля.

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

1. Создаем KS файл для Centos

auth --enableshadow --passalgo=sha512
text
firstboot --enable
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
rootpw --iscrypted $6$QfZ0...wrap...nmr0
timezone Europe/Copenhagen --isUtc
ignoredisk --only-use=vda
bootloader --location=mbr --boot-drive=vda
clearpart --all --drives=vda
part / --fstype="xfs" --ondisk=vda --size=1 --grow
part swap --fstype="swap" --ondisk=vda --size=1024
reboot
%packages
@core
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end

2. Пример установочного скрипта

# cat vm-install-centos-example.sh 
virt-install \
--autostart \
--name snbdhcpv0001l00 \
--ram 4096 \
--disk path=/var/lib/libvirt/images/snbdhcpv0001l00.qcow2,bus=virtio,format=qcow2,size=20 \
--vcpus 2 \
--noautoconsole \
--os-type linux \
--os-variant rhel7 \
--network bridge=br0.131 \
--network network=ovs-br1 \
--graphics vnc,listen=0.0.0.0,password=PASSSSSS,port=5923 \
--location 'http://mirror.fysik.dtu.dk/linux/centos/7/os/x86_64/' \
--extra-args='ks=http://10.8.31.51/ks/ks_default.txt ksdevice=eth0 ip=10.8.31.23 netmask=255.255.255.0 dns=172.22.25.3 gateway=10.8.31.1' 

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

11

(4 ответов, оставленных в PHP)

Такой и алгоритм

yum install php-gd

yum обновит весь php до последней 5.3.3 и поставит php-gd. Но перед тем как писать "Y" убедитесь что все-таки php обновляется в 5.3.3, так как в какую версию обновлять указано в самом rpm файле, так однажды был обновлен php c 5.2 в 5.3 на 100 хостинго серверах, так как в Atomic Rocket Turtle посчитали что это нормально.

Есть https://unix-forum.ru/topic1841.html сеть со всеми vlan'ами, теперь надо выделить один и подать его в виртуалку. Для этого создаем отдельный бридж.

# ovs-vsctl add-br vlan236
    Bridge "vlan236"
        Port "vlan236"
            Interface "vlan236"
                type: internal

создаем в нем порт, через который в него подадим весь трафик и указываем что через этот порт мы соединяемся с br0 бриджем, где есть все vlan'ы

# ovs-vsctl add-port vlan236 vlan236-br0 -- set interface vlan236-br0 type=patch options={peer=br0-vlan236}

и тоже самое делаем со стороны br0, только ограничиваем какой vlan подать

# ovs-vsctl add-port br0 br0-vlan236 tag=236 -- set interface br0-vlan236 type=patch options={peer=vlan236-br0}

Все, сеть настроена, надо только добавить ее в KVM через "virsh net-define"

# ovs-vsctl show 
7a0c9d14-3166-4173-8813-bb43a01e39f0
    Bridge "vlan236"
        Port "vnet4"
            Interface "vnet4"
        Port "vlan236"
            Interface "vlan236"
                type: internal
        Port "vlan236-br0"
            Interface "vlan236-br0"
                type: patch
                options: {peer="br0-vlan236"}
    Bridge "br0"
        Port "vnet2"
            Interface "vnet2"
        Port "br0"
            Interface "br0"
                type: internal
        Port "bond0"
            Interface "bond0"
        Port "br0-vlan236"
            tag: 236
            Interface "br0-vlan236"
                type: patch
                options: {peer="vlan236-br0"}
        Port "vnet0"
            Interface "vnet0"
    ovs_version: "2.3.1"

13

(1 ответов, оставленных в Windows)

Как настроен кербирос на centos сервере? (/etc/krb.conf)

Есть задача, внутри KVM виртуалки работать с vlan'ами. Оказывается linux-bridge успешно режет все теги. Было решено воспользоваться openvswitch'ом.

openvswitch взят из openstack-kilo
libvirt взят из ovirt

На физическом сервере настраиваем bonding и на прямую от него сеть обслуживание. Как бы не говорили документации что очень правильно это делать через openvswitch - врут. Он иногда дохнет, и тогда уже не подсоединится к серверу.

# cat /etc/sysconfig/network-scripts/ifcfg-eno49 
DEVICE="eno49"
ONBOOT=yes
NETBOOT=yes
UUID="bf732870-bc03-4a62-a1e5-686fd958928d"
IPV6INIT=yes
BOOTPROTO=none
HWADDR="8c:dc:d4:ac:dd:cc"
TYPE=Ethernet
NAME="eno49"
MASTER=bond0
SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-eno50
DEVICE="eno50"
ONBOOT=yes
NETBOOT=yes
UUID="8bd8d8fb-9392-4028-a8be-b7b808fe6cdd"
IPV6INIT=yes
BOOTPROTO=none
HWADDR="8c:dc:d4:ac:dd:cd"
TYPE=Ethernet
NAME="eno50"
MASTER=bond0
SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS="miimon=100 updelay=0 downdelay=0 mode=802.3ad"
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond0.222 
DEVICE=bond0.222
ONBOOT=yes
BOOTPROTO=none
VLAN=yes
NM_CONTROLLED=no
IPADDR=111.111.111.2
PREFIX=24
GATEWAY=111.111.111.1
DNS1=1.1.1.1
DNS2=1.1.2.2

Выключаем NetworkManager и Firewalld

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl stop firewalld
systemctl disable firewalld

Теперь инсталлируем openvswitch и запускаем его. Она сам возьмет всю конфигурацию.

systemctl enable openvswitch.service
systemctl start openvswitch.service

Добавляем bridge и указываем через какой порт получаем сеть.

ovs-vsctl add-br br0
ovs-vsctl add-port br0 bond0
# ovs-vsctl show
7a0c9d14-3166-4173-8813-bb43a01e39f0
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "bond0"
            Interface "bond0"
    ovs_version: "2.3.1"

К сожалению это не все, нельзя использовать br0, так как он DOWN

9: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 8c:dc:d4:ac:dd:cc brd ff:ff:ff:ff:ff:ff

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

# cat /etc/libvirt/my-ovsnet.xml 
<network>
  <name>ovs-br0</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
  <virtualport type='openvswitch'/>
</network>

Показываем где файл

virsh net-define /etc/libvirt/my-ovsnet.xml
virsh net-list
virsh net-start ovs-br0
virsh net-autostart ovs-br0

Проверяем

# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 ovs-br0              active     yes           yes

Все. Можно инсталлировать. Так подается сеть через virsh-install

--network network=ovs-br0

А так в конфиге

    <interface type='network'>
      <mac address='52:54:00:b7:ae:99'/>
      <source network='ovs-br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Само собой это не единственное решение, но мне понравилось. Проблема только в том что нету нормального алертинга для всего этого дела. Есть проект seyren, но назвать его нормальным как-то язык не поворачивается.

Давайте поговорим о Graphite, Grafana, Collectd, Diamond, Carbon, Whisper, Apache. Вот пример как это все смотрится в реале. Это графики жизнедеятельности CEPH 

http://s8.postimg.org/hl9y4mgit/grafana.png

Я тут покажу как просто и быстро можно создать нестандартные метрики на этой системе и если кому-то это будет интересно то опишу как это все настраивается.

Задача - показать рост OpenStack'a - это наш внутренний клауд.

Сам опенстак имеет достаточно удобный коммандлайновый интерфейс, api - полная опа! Вот она наша статистика, которую я хочу показать широкой общественности

$ nova hypervisor-stats
+----------------------+---------+
| Property             | Value   |
+----------------------+---------+
| count                | 25      |
| current_workload     | 7       |
| disk_available_least | 695206  |
| free_disk_gb         | 1228026 |
| free_ram_mb          | 1523170 |
| local_gb             | 1247272 |
| local_gb_used        | 19246   |
| memory_mb            | 5649902 |
| memory_mb_used       | 4126732 |
| running_vms          | 357     |
| vcpus                | 760     |
| vcpus_used           | 1674    |
+----------------------+---------+

Отправлять в Carbon можно несколькими способами, на Debian мы используем Diamond, на Centos Collectd.

$ cat /etc/collectd/collectd.d/write_graphite.conf 
LoadPlugin write_graphite
<Plugin write_graphite>
    <Carbon>
        Host "1.1.1.1"
        Port "2003"
        StoreRates true
        AlwaysAppendDS false
        EscapeCharacter "_"
    </Carbon>
</Plugin>

А вот и "плугин" для отправки метрик, есть и другой способ, но этот быстрый, с условием что не надо отправлять часто метрики.

$ cat /etc/collectd/collectd.d/exec.conf 
LoadPlugin exec
<Plugin exec>
  Exec "nova" "/etc/collectd/sh/openstack.sh"
</Plugin>

Суть скрипта openstack.sh - выдать параметры в виде

PUTVAL server/openstack/key interval=XXX N:XXX
$ cat /etc/collectd/sh/openstack.sh
#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
INTERVAL="${COLLECTD_INTERVAL:-60}"
export OS_USERNAME=xxx
export OS_PASSWORD=xxx
export OS_TENANT_NAME=xxx
export OS_AUTH_URL=http://2.2.2.2:35357/v2.0
while sleep "$INTERVAL"
do
    TMP_K=""
    TMP_V=""
    declare -A arr
    CMD=`/usr/bin/nova hypervisor-stats | grep -v '| Pro' | grep '|' | awk '{print ""$2"="$4}'`
    while read line; do    
    TMP_K=`echo "$line" | cut -d "=" -sf 1`
    TMP_V=`echo "$line" | cut -d "=" -sf 2-`
        arr["$TMP_K"]=$TMP_V
    done <<-EOL
    $CMD
    EOL
    for key in ${!arr[@]}; do
    echo "PUTVAL $HOSTNAME/openstack/${key} interval=$INTERVAL N:${arr[${key}]}"
    done
    unset arr 
done

Все новые типы (ключи) должны быть описаны в Collectd.

$ diff /usr/share/collectd/types.db /usr/share/collectd/types.db_copy
192,204d191
< 
< current_workload value:GAUGE:U:U
< memory_mb_used value:GAUGE:U:U
< free_ram_mb value:GAUGE:U:U
< running_vms value:GAUGE:U:U
< local_gb_used value:GAUGE:U:U
< count value:GAUGE:U:U
< vcpus value:GAUGE:U:U
< vcpus_used value:GAUGE:U:U
< free_disk_gb value:GAUGE:U:U
< local_gb value:GAUGE:U:U
< memory_mb value:GAUGE:U:U
< disk_available_least value:GAUGE:U:U

Метрики дошли до базы
http://s15.postimg.org/6arv6rhdn/os_grap.png

Можно создавать графики, это делается очень просто, либо клик-клик-клик, либо просто пишем строку запроса
http://s3.postimg.org/s6b7o7ng3/os_graf_edit.png

Все.
http://s3.postimg.org/p7vvbjm9f/os_graf.png

16

(0 ответов, оставленных в Базы данных)

Вот как можно написать интерпретатор чтобы такой запрос вообще прокатил?

mysql> (select host from db limit 1) limit 2;
+-----------+
| host      |
+-----------+
| localhost |
| localhost |
+-----------+
2 rows in set (0.00 sec)

17

(3 ответов, оставленных в FreeBSD & BSD)

"ifconfig" на роутере и "netstat -ran" таблицу покажите, так же какой GW у пользователя на Win7 прописан?

18

(2 ответов, оставленных в Linux)

Я даже не знаю как ответить, со звуком "у-лю-лю-лю-лю" наверное. Во общем какой вопрос, такой и ответ.

19

(3 ответов, оставленных в FreeBSD & BSD)

ps fauxwww покажите

20

(2 ответов, оставленных в Linux)

на 192.168.56.1 поднять nginx-proxy

21

(3 ответов, оставленных в FreeBSD & BSD)

Проверьте часы и дату. Так же есть ли файл и какие у него права "/usr/ports/devel/gmake". Какая у вас версия freebsd?

22

(1 ответов, оставленных в Разное)

В корне неправильное решение! Вы найдете много того что является хорошим и не успеете обновлять списки. Получается что вы найдете всегда не 100% файлов, следовательно - задача не решена. Ну 100% никто не найдет smile но в любом случае это более правильно:

1. Берем любой антивирус (я пробовал drweb, clamav, maldet) и натравливаем его на все файлы, можно разбирать по типам и размеру, раз в неделю достаточно, задача не лечить, а именно найти.
2. ModSecurity работает в двух режимах, блокировки и нахождения, фиксирует непосредственно факт нелегальных операций. Так же как и антивирусы обновляется и поддерживает свои списки
3. DNSBL можно использовать как дополнительный фильтр, отбрасывать сети с плохой репутацией из стран которые не нужны для проекта.

23

(2 ответов, оставленных в Linux)

Проверьте память.

24

(3 ответов, оставленных в FreeBSD & BSD)

в rc.local

sleep 60 ; mount /net &

25

(3 ответов, оставленных в FreeBSD & BSD)

Она монтируется до того как появляется сеть. Можно добавить noauto и "mount /net" в /etc/rc.local