рдирдЧреНрдиреЗрдХреНрд╕ рд╡реАрдЯреАрдПрд╕ рд╕реНрдЯреИрдЯреНрд╕, рдореЙрдХреНрдпреВрдЗрдЬрд╝ - рдореЙрдХ рдПрдкреАрдЖрдИ, рд╡рд╛рдпрд░рдореЙрдХ рдФрд░ рдореЙрдХрд╛рдЗрдлрд╝ рддреБрд▓рдирд╛

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ Nginx VTS + Prometheus + Grafana рдХрд╛ рдбреЗрдореЛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╡рд┐рднрд┐рдиреНрди http рдХреЛрдб рдЬрд╛рд░реА рдХрд░ рд╕рдХреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдпрд╣ рдХрд░ рд╕рдХрддреА рд╣реИрдВ: рдореЙрдХреНрдпреВрдлрд╝ , рдЧреЛрд▓рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рдФрд░ рд╡рд╛рдпрд░рдореЙрдХ , рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ред


рд╕рд╛рдордЧреНрд░реА рдХреА рдПрдХ рдЫреЛрдЯреА рддрд╛рд▓рд┐рдХрд╛


  • Nginx VTS + рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ + рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕;
  • рдореЙрдХреНрдпреВрдлрд╝ рдПрдХ рд╣рд▓реНрдХрд╛, рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдПрдореБрд▓реЗрд╢рди рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕реЗ рдЧреЛрд▓рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ;
  • рдореЙрдХреНрдпреВрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдХреА рддреБрд▓рдирд╛, рдЧреЛрд▓рд╛рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рдФрд░ рд╡рд╛рдпрд░рдореЙрдХ, рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЯреЗрд╕реНрдЯ рд╕реНрдЯреИрдВрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди:


inxi CPU: 8x Single Core Intel Xeon E312xx (Sandy Bridge) (-SMP-) speed: 2594 MHz Kernel: 3.10.0-957.1.3.el7.x86_64 x86_64 Up: 58m Mem: 474.9/32011.6 MiB (1.5%) Storage: 80.00 GiB (2.7% used) Procs: 149 Shell: bash 4.2.46 inxi: 3.0.35 

рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕:


 global: scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'nginx_vts_exporter' static_configs: - targets: ['localhost:9913'] 

Grafana рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдбреИрд╢рдмреЛрд░реНрдб рдЖрдИрдбреА 2949ред


Nginx VTS рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ nginx-рдореЙрдбреНрдпреВрд▓-vts рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде nginx рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдирдЧреАрдиреЗрдХреНрд╕-рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕:


 nginx_version: 1.16.1 output_package: rpm modules: - module: name: nginx-module-vts git_url: https://github.com/vozlt/nginx-module-vts.git git_tag: v0.1.18 

рдЗрдХрдЯреНрдареЗ nginx рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ (vhost_traffic_status_zone;) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ;


 user nginx; worker_processes auto; worker_rlimit_nofile 40960; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { use epoll; worker_connections 1024; multi_accept on; } http { vhost_traffic_status_zone; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; access_log off; sendfile on; tcp_nodelay on; tcp_nopush on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; open_file_cache max=200000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; } 

рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВ:


 touch vhost1.conf vhost2.conf vhost3.conf vhost4.conf vhost5.conf 

рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА:


vhost1.conf:


 server { listen 80; server_name vhost1; location / { proxy_pass http://127.0.0.1:8001/102; } } 

vhost2.conf:


 server { listen 80; server_name vhost2; location / { proxy_pass http://127.0.0.1:8001/204; } } 

vhost3.conf:


 server { listen 80; server_name vhost3; location / { proxy_pass http://localhost:8001/304; } } 

vhost4.conf:


 server { listen 80; server_name vhost4; location / { proxy_pass http://localhost:8001/403; } } 

vhost5.conf:


 server { listen 80; server_name vhost5; location / { proxy_pass http://localhost:8001/503; } } 

Nginx-vts- рдирд┐рд░реНрдпрд╛рддрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz tar zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz cp nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter /usr/local/bin/nginx-vts-exporter 

рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ /etc/systemd/system/nginx_vts_exporter.service:


 [Unit] Description=Nginx vts exporter Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/local/bin/nginx-vts-exporter -nginx.scrape_uri=http://localhost:7070/status/format/json Restart=always RestartSec=3 [Install] WantedBy=default.target 

VTS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /etc/nginx/conf.d/vts-exporter.conf рдмрдирд╛рдПрдБ


 server { listen 7070; listen [::]:7070; location / { } location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } 

рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХрд╛ DNS / etc / рд╣реЛрд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:


 127.0.0.1 vhost1 127.0.0.1 vhost2 127.0.0.1 vhost3 127.0.0.1 vhost4 127.0.0.1 vhost5 

рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдпрд░рдореЙрдХ рдиреЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рджрд┐рдпрд╛ рдерд╛ред рдЕрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ /etc/sysctl.d/90-nginx.conf рдмрдирд╛рдПрдВ:


 fs.file-max=100000 net.netfilter.nf_conntrack_max=1548576 net.ipv4.ip_local_port_range=10000 65000 net.ipv4.tcp_tw_reuse=1 net.core.somaxconn=15600 net.ipv4.tcp_fin_timeout=15 net.ipv4.tcp_tw_recycle=1 net.core.rmem_default=31457280 net.core.rmem_max=12582912 net.core.wmem_default=31457280 net.core.wmem_max=12582912 net.core.netdev_max_backlog=65536 net.core.optmem_max=25165824 net.ipv4.tcp_rmem=8192 87380 16777216 net.ipv4.udp_rmem_min=16384 net.ipv4.tcp_wmem=8192 65536 16777216 

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ


 sysctl -p /etc/sysctl.d/90-nginx.conf 

Mockify-rpm рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


 yum -y install yum-plugin-copr yum copr enable antonpatsev/mockify-rpm yum -y install mockify systemctl start mockify 

рдЕрдкрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 yum install -y httpd-tools 

рд╣рдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ nginx рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


 while true; do ab -c 1 -n 1 -t 1 http://vhost1/; sleep 2; done while true; do ab -c 1 -n 1 -t 1 http://vhost2/; sleep 2; done while true; do ab -c 1 -n 1 -t 1 http://vhost3/; sleep 2; done while true; do ab -c 1 -n 1 -t 1 http://vhost4/; sleep 2; done while true; do ab -c 1 -n 1 -t 1 http://vhost5/; sleep 2; done 

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:






рд╡рд╛рдпрд░рдореЙрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 yum -y install yum-plugin-copr yum copr enable antonpatsev/wiremock-rpm yum -y install wiremock wiremock-popular-json systemctl start wiremock 

Nginx рдореЗрдВ vhost1-vhost5 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреА рдЖрдкрдХреЛ 8001 рд╕реЗ 8080 рддрдХ рдкреЛрд░реНрдЯ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдореИрдВ рджрд╛рдВрддреЗрджрд╛рд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред


рдиреАрдЪреЗ vhost1-vhost5 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рд╕реАрдкреАрдпреВ рдФрд░ рдПрдордИрдПрдо рдореЙрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ



рдиреАрдЪреЗ vhost1 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп CPU рд▓реЛрдб рдФрд░ MEM рд╡рд╛рдпрд░рдореЙрдХ рд╣реЛрддрд╛ рд╣реИ



рдиреАрдЪреЗ vhost1-vhost2 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рд╕реАрдкреАрдпреВ рд▓реЛрдб рдФрд░ рдореЗрдо рд╡рд╛рдпрд░рдореЙрдХ рд╣реИ



рдиреАрдЪреЗ vhost1-vhost3 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп CPU рдФрд░ MEM рд╡рд╛рдпрд░рдореЙрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ



рдиреАрдЪреЗ vhost1-vhost4 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп CPU рд▓реЛрдб рдФрд░ MEM рд╡рд╛рдпрд░рдореЙрдХ рд╣реИ



рдиреАрдЪреЗ vhost1-vhost5 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп CPU рдФрд░ MEM рд╡рд╛рдпрд░рдореЙрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рд╕реАрдкреАрдпреВ рдкрд░ рд▓реЛрдб 700% рддрдХ рдмрдврд╝ рдЧрдпрд╛ред



рдирд┐рд╖реНрдХрд░реНрд╖:


Nginx VTS рдХреЗ рдЕрдиреБрд╕рд╛рд░ , рдореИрдВ рдПрдбрд┐рдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред


рд╡рд╛рдпрд░рдореЙрдХ рдмрдирд╛рдо рдореЙрдХреНрдпреБрдлрд╝рд╛рдЗ рджреНрд╡рд╛рд░рд╛: рдореЙрдХрд╛рдЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ CPU рдФрд░ MEM рдХрд╛ рдХрдо рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИред


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореЛрдХреЛрдЗрдЬрд╝ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлреЗрдбреЛрд░рд╛ рдХреЛрдкреНрд░ рдореЗрдВ рдЧреЛрд▓рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА https://github.com/patsevanton/mockify-rpm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi476428/


All Articles