āĻ¸āĻŦāĻžāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĨ¤
āĻ āĻŦāĻļā§āĻ¯āĻ, āĻŦāĻ¸ā§ āĻĨāĻžāĻāĻž āĻāĻŦāĻ āĻā§āĻ°āĻžāĻĢā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ¨ā§ āĻāĻŦāĻ āĻ āĻ¸āĻā§āĻāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻŋāĻā§ āĻāĻā§āĻā§ (āĻŦāĻž āĻ āĻŋāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§) āĻ¤āĻāĻ¨ āĻ āĻŦāĻšāĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻ āĻ¨ā§āĻ āĻāĻžāĻ˛āĨ¤
āĻāĻ° āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ āĻā§āĻ˛āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸ āĻāĻā§āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĨā§āĻā§ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ āĻāĻŦāĻ āĻāĻŋāĻā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻĒāĻŖā§āĻ¯ āĻā§āĻ°ā§āĻĒ āĻĨā§āĻā§ vmalertāĨ¤ Grafana āĻŽāĻ§ā§āĻ¯ā§ Zabbix āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻāĻŦāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž. āĻŦā§āĻ¯āĻžāĻļ āĻāĻŦāĻ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻŦāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸ā§āĻŦ-āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯āĻž āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§ āĻāĻŋāĻā§ URL āĻā§āĻ¨ā§ āĻāĻ¨ā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻā§āĻ˛ āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛ā§āĨ¤ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ.
āĻāĻŽāĻ°āĻž, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽā§āĻĒāĻžāĻ¨ā§āĻ¤ā§, āĻāĻāĻŋāĻ˛āĻ¤āĻž, āĻŦāĻž, āĻŦāĻ°āĻ, āĻāĻāĻŋāĻ˛, āĻ¯ā§āĻāĻŋāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¤ā§āĻ°āĻŋāĻ° āĻ
āĻ¸āĻŽā§āĻāĻŦāĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨āĻž āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯āĻž āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¯āĻž āĻļā§āĻˇ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻž āĻāĻžāĻāĻžāĻ° āĻ¨ā§āĻā§āĨ¤ āĻāĻŋāĻāĻ˛āĻĄāĻŋāĻāĻ°: āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻāĻžāĻŦā§āĻ āĻšāĻžāĻāĻŋāĻ° āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻŦā§āĻļ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ§āĻ°ā§ āĻāĻŽāĻ°āĻž Grafana-āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻŦāĻ¸āĻŦāĻžāĻ¸ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻŋ āĻ¸ā§āĻ°āĻž āĻāĻĒāĻžāĻ¯āĻŧ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻŋāĻā§ āĻŦāĻŋāĻļā§āĻˇ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ AlertmanagerāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻ°āĻžāĻ āĻāĻāĻžāĻ§āĻŋāĻāĻŦāĻžāĻ° āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ˛āĻžāĻŽāĨ¤ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻ§ā§āĻ°ā§ āĻ§ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻ°ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ.
āĻŦāĻ˛ā§āĻ¨ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ°ā§āĻ XX% āĻāĻŽā§/āĻŦā§āĻĄāĻŧā§āĻā§ āĻāĻŦāĻ M āĻāĻ¨ā§āĻāĻžāĻ° āĻāĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ N āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§? āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻāĻĒāĻ¨āĻŋ Grafana āĻŦāĻž Alertmanager āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻ āĻ¨āĻ¯āĻŧāĨ¤ (āĻ āĻĨāĻŦāĻž āĻāĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¨āĻ¯āĻŧ, āĻāĻāĻ¨ āĻŦāĻ˛āĻŦ āĻ¨āĻž)
āĻŦāĻŋāĻˇāĻ¯āĻŧāĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻšāĻ¯āĻŧā§ āĻāĻ ā§ āĻ¯āĻāĻ¨ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§āĨ¤ āĻ˛āĻžāĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ:
āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻŋ āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ā§āĻ° āĻāĻŋāĻā§ āĻĄā§āĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻāĨ¤ āĻ¸āĻāĻā§āĻ¤ āĻŦāĻž āĻŦāĻžāĻ¤āĻŋāĻ˛
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻāĻā§āĻāĻž āĻ āĻ¨ā§āĻ āĻ¸āĻā§āĻāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§. āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž/āĻā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻž āĻāĻāĻ¨āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤
-
āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄā§āĻāĻž āĻāĻ¤ā§āĻ¸ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°ā§āĻ¨āĨ¤ āĻ¯ā§āĻŽāĻ¨ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸, āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸
-
āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§ āĻ¸āĻ¤āĻ°ā§āĻāĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨ - āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ, āĻ¸ā§āĻ˛ā§āĻ¯āĻžāĻ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤
-
āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ, āĻāĻāĻž āĻ¸ā§āĻĒāĻˇā§āĻ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ āĻ¯ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻā§āĻˇāĻŖāĻžāĻŽā§āĻ˛āĻ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻžāĻ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛ā§āĻāĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻžāĻ
-
āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ˛āĻŽāĻžāĻ¨
-
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻ¨āĻž āĻāĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻšāĻ āĻāĻĒāĻĄā§āĻ
-
āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄāĻā§āĻ˛āĻŋ āĻĨā§āĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ¨āĻž āĻāĻ°ā§ āĻā§āĻ¨āĻāĻāĻžāĻŦā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž
āĻāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻāĻŋ āĻāĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻā§āĻŦ āĻ¸āĻ āĻŋāĻ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŋāĻā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŋāĻā§ āĻŽāĻžāĻ°āĻž āĻā§āĻā§āĨ¤ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¯āĻĨāĻžāĻ°ā§āĻ¤āĻŋāĨ¤
āĻāĻ¸āĻ˛ā§, āĻāĻāĻžāĻŦā§āĻ āĻŦā§āĻ¯āĻžāĻ˛āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¤āĻŋāĻšāĻžāĻ¸ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻā§ āĻāĻā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻāĻŽāĻŋ āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦāĨ¤ (āĻšā§āĻ¯āĻžāĻ, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻāĻžāĻ¨ā§āĻ āĻļā§āĻˇ āĻ¨āĻ¯āĻŧāĨ¤ āĻĒāĻŖā§āĻ¯ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāĻā§ āĻĨāĻžāĻŽāĻŦ)
āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§?
āĻāĻĒāĻ¨āĻŋ āĻ˛ā§āĻ¯āĻŧāĻžāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻā§āĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¨ (āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸, āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻŦā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻ°āĻāĻŽ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°ā§āĻ¨āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻā§āĻ¨ā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻāĻžāĻ˛ā§/āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨āĨ¤ Balerter āĻ¨āĻŋāĻā§āĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻŦā§ (āĻāĻŽā§āĻ˛, āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ, āĻ¸ā§āĻ˛ā§āĻ¯āĻžāĻ, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻŋāĻ°āĻ¤āĻŋāĻ¤ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻāĻŦāĻ... āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻāĻžāĻ)
āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻš āĻĻā§āĻāĻžāĻ¨ā§ āĻāĻžāĻ˛:
-- @interval 10s
-- @name script1
local minRequestsRPS = 100
local log = require("log")
local ch1 = require("datasource.clickhouse.ch1")
local res, err = ch1.query("SELECT sum(requests) AS rps FROM some_table WHERE date = now()")
if err ~= nil then
log.error("clickhouse 'ch1' query error: " .. err)
return
end
local resultRPS = res[1].rps
if resultRPS < minResultRPS then
alert.error("rps-min-limit", "Requests RPS are very small: " .. tostring(resultRPS))
else
alert.success("rps-min-limit", "Requests RPS ok")
end
āĻāĻāĻžāĻ¨ā§ āĻāĻŋ āĻšāĻā§āĻā§:
-
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋ 10 āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤
-
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĻ¨ (āĻāĻĒāĻŋāĻāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ˛āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯)
-
āĻ˛āĻ āĻāĻāĻāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
-
āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
ch1
(āĻ¸āĻāĻ¯ā§āĻ āĻ¨āĻŋāĻā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§) -
āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¨
-
āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻ˛āĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŋ
-
āĻāĻāĻāĻŋ āĻ§ā§āĻ°ā§āĻŦāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°ā§āĻ¨ (āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻāĻ āĻŽāĻžāĻ¨āĻāĻŋ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§)
-
āĻāĻāĻĄāĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻž āĻ āĻā§āĻˇāĻŽ āĻāĻ°ā§āĻ¨
rps-min-limit
-
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻŦā§āĻ¨
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻŦā§āĻļ āĻ¸āĻšāĻ āĻāĻŦāĻ āĻŦā§āĻ§āĻāĻŽā§āĻ¯āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻā§āĻŦāĻ¨ā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻļ āĻĻā§āĻ°ā§āĻ āĻāĻŦāĻ āĻāĻāĻŋāĻ˛ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻā§āĻ˛ āĻāĻ°āĻž āĻ¸āĻšāĻāĨ¤
āĻ āĻ¤āĻāĻŦ, āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻāĻā§āĻāĻž āĻĒāĻ°āĻŋāĻĒāĻā§āĻ āĻšāĻ¯āĻŧā§āĻā§ - āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻŦāĻ v0.4.0 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻāĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻā§āĻ¸ā§āĻāĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ
āĻāĻĒāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒāĻ°ā§āĻā§āĻˇāĻž:
-- @test script1
-- @name script1-test
test = require('test')
local resp = {
{
rps = 10
}
}
test.datasource('clickhouse.ch1').on('query', 'SELECT sum(requests) AS rps FROM some_table WHERE date = now()').response(resp)
test.alert().assertCalled('error', 'rps-min-limit', 'Requests RPS are very small: 10')
test.alert().assertNotCalled('success', 'rps-min-limit', 'Requests RPS ok')
āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ:
-
āĻ¯ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻžāĻ° āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĻ¨
-
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¨āĻžāĻŽ (āĻ˛āĻā§āĻ° āĻāĻ¨ā§āĻ¯)
-
āĻā§āĻ¸ā§āĻāĻŋāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
-
āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻā§āĻ˛āĻŋāĻāĻšāĻžāĻāĻ¸ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
ch1
-
āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ¸āĻš āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž (āĻ¤ā§āĻ°ā§āĻāĻŋ) rps-min-limit āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
-
āĻā§āĻ āĻāĻ°ā§āĻ¨ āĻ¯ā§ rps-min-limit āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ (āĻ¸āĻĢāĻ˛)
Balerter āĻāĻ° āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨?
āĻāĻŽāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻāĻĒāĻ° āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦ, āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§, Balerter āĻĻāĻā§āĻˇāĻ¤āĻž. āĻāĻĒāĻ¨āĻŋ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
-
āĻĨā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻā§āĻ°āĻšāĻŖ
-
āĻā§āĻ˛āĻŋāĻ āĻšāĻžāĻāĻ¸
-
postgres
-
āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛
-
āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸
-
āĻ˛ā§āĻāĻŋ
-
-
āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨
-
āĻĸāĻŋāĻ˛āĻž
-
āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ
-
syslog- āĻ°
-
āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ (āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°ā§ UI āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ)
-
āĻāĻŽā§āĻāĻ˛
-
āĻ āĻ¨ā§āĻā§āĻ¯
-
-
āĻāĻĒāĻ¨āĻžāĻ° āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻā§āĻ°āĻžāĻĢ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, S3 āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻā§āĻ°ā§āĻā§ āĻāĻŽā§āĻ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋāĻ¤ā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ (
āĻāĻŦāĻŋ āĻ¸āĻš āĻāĻĻāĻžāĻšāĻ°āĻŖ ) -
āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ - āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻā§/āĻŽāĻžāĻ¨ āĻ¸ā§āĻā§āĻ°ā§āĻ
-
āĻ˛ā§āĻ¯āĻŧāĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ (āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻ˛ā§āĻ¯āĻŧāĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋ json, csv-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻž āĻšāĻ¯āĻŧ)
-
āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĨā§āĻā§ HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¨ (āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻŦā§āĻ¨)
-
āĻāĻāĻāĻŋ API āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ (āĻāĻāĻ¨āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻāĻ¨ā§āĻĻ āĻŽāĻ¤ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¨āĻ¯āĻŧ)
-
āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻā§ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻāĻ°ā§
āĻāĻĒāĻ¨āĻŋ āĻāĻ° āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¤ā§ āĻāĻžāĻ¨?
āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ˛āĻā§āĻ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻžāĻā§ˇ āĻāĻ¨ā§āĻ¯ cron. āĻāĻāĻŋ v1.0.0 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻā§ āĻāĻ°āĻž āĻšāĻŦā§
āĻāĻŽāĻŋ āĻāĻ°āĻ āĻĄā§āĻāĻž āĻāĻ¤ā§āĻ¸ āĻāĻŦāĻ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§ˇ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻā§āĻ āĻ āĻŦāĻļā§āĻ¯āĻ MongoDB āĻŽāĻŋāĻ¸ āĻāĻ°āĻŦā§āĨ¤ āĻāĻŋāĻā§ āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻžāĻ¸ā§āĻāĻŋāĻ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨. āĻāĻ¸āĻāĻŽāĻāĻ¸ āĻĒāĻžāĻ āĻžāĻ¨ āĻāĻŦāĻ/āĻ āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĢā§āĻ¨ā§ āĻāĻ˛ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¤ā§ āĻāĻžāĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§. āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ°āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§-āĻŦāĻžāĻ¨ā§āĻ§āĻŦ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻžāĻāĨ¤
āĻā§āĻ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻŋāĻā§ āĻŽāĻŋāĻ¸ āĻāĻ°āĻā§) āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻĒāĻ˛āĻŦā§āĻ§āĻŋ āĻāĻ°āĻž
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ° āĻāĻ¨
āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ
āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¸ā§āĻ¯ā§ āĻāĻŦāĻ āĻĒāĻŋāĻāĻ° āĻ¸āĻš āĻ¸ā§āĻŦāĻžāĻāĻ¤āĻŽāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com