دا مقاله به د پروژې په اړه بحث وکړي
د لاګ پراساس د تحلیلونو لیدو لپاره ، موږ به د ګرافانا لپاره ډشبورډ رامینځته کړو.
هرڅوک علاقه لري ، بلی ته ښه راغلاست.
nginx، ګرافانا په معیاري ډول نصب کړئ.
د ځواب وړ لوبې کتاب په کارولو سره د کلک هاؤس کلستر نصب کول
په کلک هاؤس کې ډیټابیسونه او میزونه رامینځته کول
پدې کې
موږ هره غوښتنه په کلک هاؤس کلستر کې په هر سرور کې یو له بل سره کوو.
مهمه یادونه. په دې کرښه کې، logs_cluster ته اړتیا ده چې د "remote_servers" او "shard" ترمنځ د clickhouse_remote_servers.xml فایل څخه ستاسو د کلستر نوم سره بدل شي.
ENGINE = Distributed('logs_cluster', 'nginx', 'access_log_shard', rand())
د nginx-log-collector-rpm نصب او تنظیم کول
Nginx-log-collector rpm نلري. دلته
د rpm کڅوړه nginx-log-collector-rpm نصب کړئ
yum -y install yum-plugin-copr
yum copr enable antonpatsev/nginx-log-collector-rpm
yum -y install nginx-log-collector
systemctl start nginx-log-collector
config /etc/nginx-log-collector/config.yaml ایډیټ کړئ:
.......
upload:
table: nginx.access_log
dsn: http://ip-адрес-кластера-clickhouse:8123/
- tag: "nginx_error:"
format: error # access | error
buffer_size: 1048576
upload:
table: nginx.error_log
dsn: http://ip-адрес-кластера-clickhouse:8123/
د nginx تنظیم کول
عمومي nginx تشکیل:
user nginx;
worker_processes auto;
#error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
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"';
log_format avito_json escape=json
'{'
'"event_datetime": "$time_iso8601", '
'"server_name": "$server_name", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"http_x_real_ip": "$http_x_real_ip", '
'"status": "$status", '
'"scheme": "$scheme", '
'"request_method": "$request_method", '
'"request_uri": "$request_uri", '
'"server_protocol": "$server_protocol", '
'"body_bytes_sent": $body_bytes_sent, '
'"http_referer": "$http_referer", '
'"http_user_agent": "$http_user_agent", '
'"request_bytes": "$request_length", '
'"request_time": "$request_time", '
'"upstream_addr": "$upstream_addr", '
'"upstream_response_time": "$upstream_response_time", '
'"hostname": "$hostname", '
'"host": "$host"'
'}';
access_log syslog_server=unix:/var/run/nginx_log.sock,nohostname,tag=nginx avito_json; #ClickHouse
error_log syslog_server=unix:/var/run/nginx_log.sock,nohostname,tag=nginx_error; #ClickHouse
#access_log /var/log/nginx/access.log main;
proxy_ignore_client_abort on;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
یو مجازی کوربه:
vhost1.conf:
upstream backend {
server ip-адрес-сервера-с-stub_http_server:8080;
server ip-адрес-сервера-с-stub_http_server:8080;
server ip-адрес-сервера-с-stub_http_server:8080;
server ip-адрес-сервера-с-stub_http_server:8080;
server ip-адрес-сервера-с-stub_http_server:8080;
}
server {
listen 80;
server_name vhost1;
location / {
proxy_pass http://backend;
}
}
/etc/hosts فایل ته مجازی کوربه اضافه کړئ:
ip-адрес-сервера-с-nginx vhost1
د HTTP سرور ایمولیټر
د HTTP سرور ایمولیټر په توګه موږ به وکاروو
Nodejs-stub-server rpm نلري. دلته
په اپسټریم nginx rpm کې د نوډجز-سټب-سرور کڅوړه نصب کړئ
yum -y install yum-plugin-copr
yum copr enable antonpatsev/nodejs-stub-server
yum -y install stub_http_server
systemctl start stub_http_server
د فشار ازموینه
موږ د اپاچي بنچمارک په کارولو سره ازموینه ترسره کوو.
نصب یې کړئ:
yum install -y httpd-tools
موږ د 5 مختلف سرورونو څخه د اپاچي بنچمارک په کارولو ازموینه پیل کوو:
while true; do ab -H "User-Agent: 1server" -c 10 -n 10 -t 10 http://vhost1/; sleep 1; done
while true; do ab -H "User-Agent: 2server" -c 10 -n 10 -t 10 http://vhost1/; sleep 1; done
while true; do ab -H "User-Agent: 3server" -c 10 -n 10 -t 10 http://vhost1/; sleep 1; done
while true; do ab -H "User-Agent: 4server" -c 10 -n 10 -t 10 http://vhost1/; sleep 1; done
while true; do ab -H "User-Agent: 5server" -c 10 -n 10 -t 10 http://vhost1/; sleep 1; done
د ګرافانا تنظیم کول
تاسو به د ګرافانا رسمي ویب پا onه کې ډشبورډ ونه مومئ.
له همدې امله، موږ به دا د لاس په واسطه ترسره کړو.
تاسو کولی شئ زما خوندي شوی ډشبورډ ومومئ
تاسو اړتیا لرئ د مینځپانګو سره یو جدول متغیر جوړ کړئ nginx.access_log
.
د واحد سټیټ ټول غوښتنې:
SELECT
1 as t,
count(*) as c
FROM $table
WHERE $timeFilter GROUP BY t
د Singlestat ناکامې غوښتنې:
SELECT
1 as t,
count(*) as c
FROM $table
WHERE $timeFilter AND status NOT IN (200, 201, 401) GROUP BY t
Singlestat د ناکامۍ سلنه:
SELECT
1 as t, (sum(status = 500 or status = 499)/sum(status = 200 or status = 201 or status = 401))*100 FROM $table
WHERE $timeFilter GROUP BY t
Singlestat اوسط ځواب وخت:
SELECT
1, avg(request_time) FROM $table
WHERE $timeFilter GROUP BY 1
Singlestat Max غبرګون وخت:
SELECT
1 as t, max(request_time) as c
FROM $table
WHERE $timeFilter GROUP BY t
د شمېرنې حالت:
$columns(status, count(*) as c) from $table
د پای په څیر ډیټا تولیدولو لپاره ، تاسو اړتیا لرئ پلگ ان نصب کړئ او ګرافانا بیا پیل کړئ.
grafana-cli plugins install grafana-piechart-panel
service grafana-server restart
د پای 5 حالت:
SELECT
1, /* fake timestamp value */
status,
sum(status) AS Reqs
FROM $table
WHERE $timeFilter
GROUP BY status
ORDER BY Reqs desc
LIMIT 5
نور به زه د سکرین شاټونو پرته غوښتنې ورکړم:
شمېرنه http_user_agent:
$columns(http_user_agent, count(*) c) FROM $table
ښه نرخ / بد نرخ:
$rate(countIf(status = 200) AS good, countIf(status != 200) AS bad) FROM $table
د ځواب ورکولو مهال ویش:
$rate(avg(request_time) as request_time) FROM $table
د پورته پورته غبرګون وخت (د پورته پورته غبرګون لومړی وخت):
$rate(avg(arrayElement(upstream_response_time,1)) as upstream_response_time) FROM $table
د ټولو vhost لپاره د جدول شمېرنې حالت:
$columns(status, count(*) as c) from $table
د ډشبورډ عمومي لید
د اوسط () او مقدار () پرتله کول
اوسط()
مقدار()
پایله:
زه هیله لرم چې ټولنه د nginx-log-collector په جوړولو / ازموینې او کارولو کې ښکیل شي.
او کله چې یو څوک د nginx-log-collector پلي کوي، دوی به تاسو ته ووایي چې څومره ډیسک، RAM، او CPU یې خوندي کړي.
د ټیلیګرام چینلونه:
ملی ثانیه:
د چا لپاره چې ملیسیکنډ مهم دی، مهرباني وکړئ په دې کې ولیکئ یا رایه ورکړئ
سرچینه: www.habr.com