هي مضمون هن منصوبي تي بحث ڪندو
لاگن جي بنياد تي تجزياتي ڏسڻ لاءِ، اسان Grafana لاءِ ڊيش بورڊ ٺاهينداسين.
ڪنهن کي به دلچسپي، ٻلي ۾ ڀليڪار.
انسٽال ڪريو nginx، گرافانا معياري طريقي سان.
جوابي-پلے بڪ مان استعمال ڪندي ڪلڪ هائوس ڪلسٽر کي انسٽال ڪرڻ
Clickhouse ۾ ڊيٽابيس ۽ ٽيبل ٺاهڻ
هن ۾
اسان ڪلڪ هاؤس ڪلستر ۾ هر سرور تي هڪ هڪ ڪري هر درخواست ڪريون ٿا.
اهم نوٽ. هن لائن ۾، logs_cluster کي "remote_servers" ۽ "shard" جي وچ ۾ clickhouse_remote_servers.xml فائل مان توهان جي ڪلستر جي نالي سان تبديل ڪرڻ جي ضرورت آهي.
ENGINE = Distributed('logs_cluster', 'nginx', 'access_log_shard', rand())
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 ڪونهي. هتي
انسٽال ڪريو nodejs-stub-server package upstream 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 مختلف سرورز کان Apache بينچ مارڪ استعمال ڪندي جاچ شروع ڪندا آهيون:
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
گرافانا کي ترتيب ڏيڻ
توهان سرڪاري گرافانا ويب سائيٽ تي ڊيش بورڊ نه ڳوليندا.
تنهن ڪري، اسان اهو هٿ سان ڪنداسين.
توھان ڳولي سگھوٿا منھنجو محفوظ ڪيل ڊيش بورڊ
توهان کي مواد سان گڏ ٽيبل متغير ٺاهڻ جي ضرورت آهي 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
سنگل اسٽيٽ ناڪامي جو سيڪڙو:
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
سنگل اسٽيٽ اوسط جوابي وقت:
SELECT
1, avg(request_time) FROM $table
WHERE $timeFilter GROUP BY 1
سنگل اسٽيٽ ميڪس جوابي وقت:
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-collecter لاڳو ڪندو، اهي توهان کي ٻڌائيندا ته انهن ڊسڪ، ريم، ۽ سي پي يو تي ڪيترو محفوظ ڪيو.
ٽيليگرام چينل:
ملي سيڪنڊ:
جنهن لاءِ مليس سيڪنڊ اهم آهن، مهرباني ڪري هن ۾ لکو يا ووٽ ڏيو
جو ذريعو: www.habr.com