
, i krijuar për të mbledhur, transformuar dhe dërguar të dhëna regjistri, metrikë dhe ngjarje.
â
Duke qenë i shkruar në gjuhën Rust, karakterizohet nga performanca e lartë dhe konsumi i ulët i RAM-it në krahasim me analogët e tij. Për më tepër, shumë vëmendje i kushtohet funksioneve që lidhen me korrektësinë, në veçanti, aftësisë për të ruajtur ngjarjet e padërguara në një tampon në disk dhe për të rrotulluar skedarët.
Arkitekturisht, Vector është një ruter ngjarjesh që merr mesazhe nga një ose më shumë burimet, duke aplikuar opsionalisht mbi këto mesazhe transformimet, dhe dërgimi i tyre në një ose më shumë kullon.
Vektori është një zëvendësim për filebeat dhe logstash, ai mund të veprojë në të dy rolet (të marrë dhe të dërgojë regjistrat), më shumë detaje mbi to .
NĂ«se nĂ« Logstash zinxhiri ndĂ«rtohet si hyrje â filtĂ«r â dalje, atĂ«herĂ« nĂ« Vector Ă«shtĂ« â â
Shembujt mund të gjenden në dokumentacion.
Ky udhëzim është një udhëzim i rishikuar nga . Udhëzimet origjinale përmbajnë përpunimin geoip. Gjatë testimit të geoip nga një rrjet i brendshëm, vektori dha një gabim.
Aug 05 06:25:31.889 DEBUG transform{name=nginx_parse_rename_fields type=rename_fields}: vector::transforms::rename_fields: Field did not exist field=«geoip.country_name» rate_limit_secs=30Nëse dikush ka nevojë të përpunojë geoip, atëherë referojuni udhëzimeve origjinale nga .
Ne do tĂ« konfigurojmĂ« kombinimin e Nginx (Regjistrimet e hyrjes) â Vektori (Klienti | Filebeat) â Vektori (Serveri | Logstash) â veçmas nĂ« Clickhouse dhe veçmas nĂ« Elasticsearch. Do tĂ« instalojmĂ« 4 serverĂ«. Edhe pse mund ta anashkaloni me 3 serverĂ«.

Skema është diçka e tillë.
Ăaktivizoni Selinux nĂ« tĂ« gjithĂ« serverĂ«t tuaj
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
rebootNe instalojmë një emulator të serverit HTTP + shërbime në të gjithë serverët
Ne do të përdorim si një emulator të serverit HTTP nga
Nodejs-stub-server nuk ka një rpm. krijoni rpm për të. rpm do të përpilohet duke përdorur
Shtoni depon e serverit antonpatsev/nodejs-stub
yum -y install yum-plugin-copr epel-release
yes | yum copr enable antonpatsev/nodejs-stub-serverInstaloni serverin nodejs-stub, standardin Apache dhe multiplekserin e terminalit të ekranit në të gjithë serverët
yum -y install stub_http_server screen mc httpd-tools screenE korrigjova kohën e përgjigjes së stub_http_server në skedarin /var/lib/stub_http_server/stub_http_server.js në mënyrë që të kishte më shumë regjistra.
var max_sleep = 10;Le të hapim stub_http_server.
systemctl start stub_http_server
systemctl enable stub_http_servernë serverin 3
ClickHouse përdor grupin e instruksioneve SSE 4.2, kështu që nëse nuk specifikohet ndryshe, mbështetja për të në procesorin e përdorur bëhet një kërkesë shtesë e sistemit. Këtu është komanda për të kontrolluar nëse procesori aktual mbështet SSE 4.2:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"Së pari ju duhet të lidhni depon zyrtare:
sudo yum install -y yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64Për të instaluar paketat, duhet të ekzekutoni komandat e mëposhtme:
sudo yum install -y clickhouse-server clickhouse-clientLejo serverin clickhouse të dëgjojë kartën e rrjetit në skedarin /etc/clickhouse-server/config.xml
<listen_host>0.0.0.0</listen_host>Ndryshimi i nivelit të regjistrimit nga gjurmimi në korrigjim
rregulloj
Cilësimet standarde të kompresimit:
min_compress_block_size 65536
max_compress_block_size 1048576Për të aktivizuar kompresimin Zstd, këshillohej të mos prekni konfigurimin, por më tepër të përdorni DDL.

Nuk gjeta se si të përdor kompresimin zstd përmes DDL në Google. Kështu që e lashë ashtu siç ishte.
Kolegët që përdorin kompresimin zstd në Clickhouse, ju lutemi shpërndani udhëzimet.
Për të nisur serverin si një demon, ekzekutoni:
service clickhouse-server startTani le të kalojmë te konfigurimi i Clickhouse
Shkoni në Clickhouse
clickhouse-client -h 172.26.10.109 -m172.26.10.109 â IP e serverit ku Ă«shtĂ« instaluar Clickhouse.
Le të krijojmë një bazë të dhënash vektoriale
CREATE DATABASE vector;Le të kontrollojmë nëse baza e të dhënave ekziston.
show databases;Krijo një tabelë vector.logs.
/* ĐŃĐŸ ŃаблОŃа гЎД Ń
ŃĐ°ĐœŃŃŃŃ Đ»ĐŸĐłĐž ĐșаĐș Đ”ŃŃŃ */
CREATE TABLE vector.logs
(
`node_name` String,
`timestamp` DateTime,
`server_name` String,
`user_id` String,
`request_full` String,
`request_user_agent` String,
`request_http_host` String,
`request_uri` String,
`request_scheme` String,
`request_method` String,
`request_length` UInt64,
`request_time` Float32,
`request_referrer` String,
`response_status` UInt16,
`response_body_bytes_sent` UInt64,
`response_content_type` String,
`remote_addr` IPv4,
`remote_port` UInt32,
`remote_user` String,
`upstream_addr` IPv4,
`upstream_port` UInt32,
`upstream_bytes_received` UInt64,
`upstream_bytes_sent` UInt64,
`upstream_cache_status` String,
`upstream_connect_time` Float32,
`upstream_header_time` Float32,
`upstream_response_length` UInt64,
`upstream_response_time` Float32,
`upstream_status` UInt16,
`upstream_content_type` String,
INDEX idx_http_host request_http_host TYPE set(0) GRANULARITY 1
)
ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(timestamp)
ORDER BY timestamp
TTL timestamp + toIntervalMonth(1)
SETTINGS index_granularity = 8192;Kontrollojmë që tabelat janë krijuar. Le të nisim clickhouse-client dhe bëni një kërkesë.
Le të shkojmë në bazën e të dhënave vektoriale.
use vector;
Ok.
0 rows in set. Elapsed: 0.001 sec.Le të shohim tabelat.
show tables;
âânameâââââââââââââââââ
â logs â
âââââââââââââââââââââââInstalimi i elasticsearch nĂ« serverin e 4-tĂ« pĂ«r tĂ« dĂ«rguar tĂ« njĂ«jtat tĂ« dhĂ«na nĂ« Elasticsearch pĂ«r krahasim me Clickhouse
Shto një çelës publik rpm
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchLe të krijojmë 2 repo:
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md/etc/yum.repos.d/kibana.repo
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-mdInstaloni elasticsearch dhe kibana
yum install -y kibana elasticsearchMeqenëse do të jetë në 1 kopje, duhet të shtoni sa vijon në skedarin /etc/elasticsearch/elasticsearch.yml:
discovery.type: single-nodeKështu që ai vektor mund të dërgojë të dhëna në elasticsearch nga një server tjetër, le të ndryshojmë network.host.
network.host: 0.0.0.0Për t'u lidhur me kibana, ndryshoni parametrin server.host në skedarin /etc/kibana/kibana.yml
server.host: "0.0.0.0"I vjetër dhe përfshin elasticsearch në autostart
systemctl enable elasticsearch
systemctl start elasticsearchdhe kibana
systemctl enable kibana
systemctl start kibanaKonfigurimi i Elasticsearch për modalitetin me një nyje 1 copë, 0 kopje. Me shumë mundësi do të keni një grup me një numër të madh serverësh dhe nuk keni nevojë ta bëni këtë.
Për indekset e ardhshme, përditësoni shabllonin e paracaktuar:
curl -X PUT http://localhost:9200/_template/default -H 'Content-Type: application/json' -d '{"index_patterns": ["*"],"order": -1,"settings": {"number_of_shards": "1","number_of_replicas": "0"}}' Instalim si një zëvendësim për Logstash në serverin 2
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screenLe të vendosim Vector si një zëvendësim për Logstash. Redaktimi i skedarit /etc/vector/vector.toml
# /etc/vector/vector.toml
data_dir = "/var/lib/vector"
[sources.nginx_input_vector]
# General
type = "vector"
address = "0.0.0.0:9876"
shutdown_timeout_secs = 30
[transforms.nginx_parse_json]
inputs = [ "nginx_input_vector" ]
type = "json_parser"
[transforms.nginx_parse_add_defaults]
inputs = [ "nginx_parse_json" ]
type = "lua"
version = "2"
hooks.process = """
function (event, emit)
function split_first(s, delimiter)
result = {};
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end
return result[1];
end
function split_last(s, delimiter)
result = {};
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end
return result[#result];
end
event.log.upstream_addr = split_first(split_last(event.log.upstream_addr, ', '), ':')
event.log.upstream_bytes_received = split_last(event.log.upstream_bytes_received, ', ')
event.log.upstream_bytes_sent = split_last(event.log.upstream_bytes_sent, ', ')
event.log.upstream_connect_time = split_last(event.log.upstream_connect_time, ', ')
event.log.upstream_header_time = split_last(event.log.upstream_header_time, ', ')
event.log.upstream_response_length = split_last(event.log.upstream_response_length, ', ')
event.log.upstream_response_time = split_last(event.log.upstream_response_time, ', ')
event.log.upstream_status = split_last(event.log.upstream_status, ', ')
if event.log.upstream_addr == "" then
event.log.upstream_addr = "127.0.0.1"
end
if (event.log.upstream_bytes_received == "-" or event.log.upstream_bytes_received == "") then
event.log.upstream_bytes_received = "0"
end
if (event.log.upstream_bytes_sent == "-" or event.log.upstream_bytes_sent == "") then
event.log.upstream_bytes_sent = "0"
end
if event.log.upstream_cache_status == "" then
event.log.upstream_cache_status = "DISABLED"
end
if (event.log.upstream_connect_time == "-" or event.log.upstream_connect_time == "") then
event.log.upstream_connect_time = "0"
end
if (event.log.upstream_header_time == "-" or event.log.upstream_header_time == "") then
event.log.upstream_header_time = "0"
end
if (event.log.upstream_response_length == "-" or event.log.upstream_response_length == "") then
event.log.upstream_response_length = "0"
end
if (event.log.upstream_response_time == "-" or event.log.upstream_response_time == "") then
event.log.upstream_response_time = "0"
end
if (event.log.upstream_status == "-" or event.log.upstream_status == "") then
event.log.upstream_status = "0"
end
emit(event)
end
"""
[transforms.nginx_parse_remove_fields]
inputs = [ "nginx_parse_add_defaults" ]
type = "remove_fields"
fields = ["data", "file", "host", "source_type"]
[transforms.nginx_parse_coercer]
type = "coercer"
inputs = ["nginx_parse_remove_fields"]
types.request_length = "int"
types.request_time = "float"
types.response_status = "int"
types.response_body_bytes_sent = "int"
types.remote_port = "int"
types.upstream_bytes_received = "int"
types.upstream_bytes_send = "int"
types.upstream_connect_time = "float"
types.upstream_header_time = "float"
types.upstream_response_length = "int"
types.upstream_response_time = "float"
types.upstream_status = "int"
types.timestamp = "timestamp"
[sinks.nginx_output_clickhouse]
inputs = ["nginx_parse_coercer"]
type = "clickhouse"
database = "vector"
healthcheck = true
host = "http://172.26.10.109:8123" # ĐĐŽŃĐ”Ń Clickhouse
table = "logs"
encoding.timestamp_format = "unix"
buffer.type = "disk"
buffer.max_size = 104900000
buffer.when_full = "block"
request.in_flight_limit = 20
[sinks.elasticsearch]
type = "elasticsearch"
inputs = ["nginx_parse_coercer"]
compression = "none"
healthcheck = true
# 172.26.10.116 - ŃĐ”ŃĐČĐ”Ń ĐłĐŽĐ” ŃŃŃĐ°ĐœĐŸĐČĐ”Đœ elasticsearch
host = "http://172.26.10.116:9200"
index = "vector-%Y-%m-%d"Ju mund të rregulloni seksionin transforms.nginx_parse_add_defaults.
Si përdor këto konfigurime për një CDN të vogël dhe mund të ketë disa vlera në rrjedhën e sipërme_*
Për shembull:
"upstream_addr": "128.66.0.10:443, 128.66.0.11:443, 128.66.0.12:443"
"upstream_bytes_received": "-, -, 123"
"upstream_status": "502, 502, 200"Nëse kjo nuk është situata juaj, atëherë ky seksion mund të thjeshtohet
Le të krijojmë cilësimet e shërbimit për systemd /etc/systemd/system/vector.service
# /etc/systemd/system/vector.service
[Unit]
Description=Vector
After=network-online.target
Requires=network-online.target
[Service]
User=vector
Group=vector
ExecStart=/usr/bin/vector
ExecReload=/bin/kill -HUP $MAINPID
Restart=no
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vector
[Install]
WantedBy=multi-user.targetPas krijimit të tabelave, mund të ekzekutoni Vector
systemctl enable vector
systemctl start vectorRegjistrat e vektorit mund të shihen si kjo:
journalctl -f -u vectorDuhet të ketë shënime të tilla në regjistrat
INFO vector::topology::builder: Healthcheck: Passed.
INFO vector::topology::builder: Healthcheck: Passed.Në klient (server në internet) - serveri i parë
Në serverin me nginx, duhet të çaktivizoni ipv6, pasi tabela e regjistrave në clickhouse përdor fushën upstream_addr IPv4, pasi nuk e përdor ipv6 brenda rrjetit. Nëse ipv6 nuk fiket, do të ketë gabime:
DB::Exception: Invalid IPv4 value.: (while read the value of key upstream_addr)Ndoshta lexuesit, shtoni mbështetje ipv6.
Krijo skedarin /etc/sysctl.d/98-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1Aplikimi i cilësimeve
sysctl --systemLe të instalojmë nginx.
U shtua skedari i depove nginx /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=trueInstaloni paketën nginx
yum install -y nginxSë pari, duhet të konfigurojmë formatin e regjistrit në Nginx në skedarin /etc/nginx/nginx.conf
user nginx;
# you must set worker processes based on your CPU cores, nginx does not benefit from setting more than that
worker_processes auto; #some last versions calculate it automatically
# number of file descriptors used for nginx
# the limit for the maximum FDs on the server is usually set by the OS.
# if you don't set FD's then OS settings will be used which is by default 2000
worker_rlimit_nofile 100000;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# provides the configuration file context in which the directives that affect connection processing are specified.
events {
# determines how much clients will be served per worker
# max clients = worker_connections * worker_processes
# max clients is also limited by the number of socket connections available on the system (~64k)
worker_connections 4000;
# optimized to serve many clients with each thread, essential for linux -- for testing environment
use epoll;
# accept as many connections as possible, may flood worker connections if set too low -- for testing environment
multi_accept on;
}
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 vector escape=json
'{'
'"node_name":"nginx-vector",'
'"timestamp":"$time_iso8601",'
'"server_name":"$server_name",'
'"request_full": "$request",'
'"request_user_agent":"$http_user_agent",'
'"request_http_host":"$http_host",'
'"request_uri":"$request_uri",'
'"request_scheme": "$scheme",'
'"request_method":"$request_method",'
'"request_length":"$request_length",'
'"request_time": "$request_time",'
'"request_referrer":"$http_referer",'
'"response_status": "$status",'
'"response_body_bytes_sent":"$body_bytes_sent",'
'"response_content_type":"$sent_http_content_type",'
'"remote_addr": "$remote_addr",'
'"remote_port": "$remote_port",'
'"remote_user": "$remote_user",'
'"upstream_addr": "$upstream_addr",'
'"upstream_bytes_received": "$upstream_bytes_received",'
'"upstream_bytes_sent": "$upstream_bytes_sent",'
'"upstream_cache_status":"$upstream_cache_status",'
'"upstream_connect_time":"$upstream_connect_time",'
'"upstream_header_time":"$upstream_header_time",'
'"upstream_response_length":"$upstream_response_length",'
'"upstream_response_time":"$upstream_response_time",'
'"upstream_status": "$upstream_status",'
'"upstream_content_type":"$upstream_http_content_type"'
'}';
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/access.json.log vector; # ĐĐŸĐČŃĐč Đ»ĐŸĐł ĐČ ŃĐŸŃĐŒĐ°ŃĐ” json
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}Për të mos prishur konfigurimin tuaj aktual, Nginx ju lejon të keni disa direktiva access_log
access_log /var/log/nginx/access.log main; # ĐĄŃĐ°ĐœĐŽĐ°ŃŃĐœŃĐč Đ»ĐŸĐł
access_log /var/log/nginx/access.json.log vector; # ĐĐŸĐČŃĐč Đ»ĐŸĐł ĐČ ŃĐŸŃĐŒĐ°ŃĐ” jsonMos harroni tĂ« shtoni njĂ« rregull pĂ«r tĂ« logrotuar pĂ«r regjistrat e rinj (nĂ«se skedari i regjistrit nuk pĂ«rfundon me .log)
Hiq default.conf nga /etc/nginx/conf.d/
rm -f /etc/nginx/conf.d/default.confShto host virtual /etc/nginx/conf.d/vhost1.conf
server {
listen 80;
server_name vhost1;
location / {
proxy_pass http://172.26.10.106:8080;
}
}Shto host virtual /etc/nginx/conf.d/vhost2.conf
server {
listen 80;
server_name vhost2;
location / {
proxy_pass http://172.26.10.108:8080;
}
}Shto host virtual /etc/nginx/conf.d/vhost3.conf
server {
listen 80;
server_name vhost3;
location / {
proxy_pass http://172.26.10.109:8080;
}
}Shto host virtual /etc/nginx/conf.d/vhost4.conf
server {
listen 80;
server_name vhost4;
location / {
proxy_pass http://172.26.10.116:8080;
}
}Shtoni hostet virtualë (172.26.10.106 ip i serverit ku është instaluar nginx) te të gjithë serverët në skedarin /etc/hosts:
172.26.10.106 vhost1
172.26.10.106 vhost2
172.26.10.106 vhost3
172.26.10.106 vhost4Dhe nëse gjithçka është gati atëherë
nginx -t
systemctl restart nginxTani le ta instalojmë vetë
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpmLe të krijojmë një skedar cilësimesh për systemd /etc/systemd/system/vector.service
[Unit]
Description=Vector
After=network-online.target
Requires=network-online.target
[Service]
User=vector
Group=vector
ExecStart=/usr/bin/vector
ExecReload=/bin/kill -HUP $MAINPID
Restart=no
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vector
[Install]
WantedBy=multi-user.targetDhe konfiguroni zëvendësimin e Filebeat në konfigurimin /etc/vector/vector.toml. Adresa IP 172.26.10.108 është adresa IP e serverit të regjistrit (Vector-Server)
data_dir = "/var/lib/vector"
[sources.nginx_file]
type = "file"
include = [ "/var/log/nginx/access.json.log" ]
start_at_beginning = false
fingerprinting.strategy = "device_and_inode"
[sinks.nginx_output_vector]
type = "vector"
inputs = [ "nginx_file" ]
address = "172.26.10.108:9876"ĐĐ” забŃĐŽŃĐ” ĐŽĐŸĐ±Đ°ĐČĐžŃŃ ŃĐ·Đ”Ńа vector ĐČ ĐœŃĐ¶ĐœŃŃ ĐłŃŃĐżĐżŃ ŃŃĐŸ Đ±Ń ĐŸĐœ ĐŒĐŸĐł ŃĐžŃаŃŃ log ŃаĐčĐ»Ń. ĐапŃĐžĐŒĐ”Ń, nginx ĐČ centos ŃĐŸĐ·ĐŽĐ°Đ”Ń Đ»ĐŸĐłĐž Ń ĐżŃаĐČĐ°ĐŒĐž ĐłŃŃĐżĐżŃ adm.
usermod -a -G adm vectorLe të fillojmë shërbimin e vektorit
systemctl enable vector
systemctl start vectorRegjistrat e vektorit mund të shihen si kjo:
journalctl -f -u vectorDuhet të ketë një hyrje si kjo në regjistra
INFO vector::topology::builder: Healthcheck: Passed.Testimi i stresit
Ne kryejmë testimin duke përdorur standardin Apache.
Paketa httpd-tools u instalua në të gjithë serverët
Ne fillojmë të testojmë duke përdorur standardin Apache nga 4 serverë të ndryshëm në ekran. Së pari, ne lëshojmë multiplekserin e terminalit të ekranit dhe më pas fillojmë testimin duke përdorur standardin Apache. Si të punoni me ekranin që mund ta gjeni .
Nga serveri i parë
while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; doneNga serveri i parë
while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; doneNga serveri i parë
while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; doneNga serveri i parë
while true; do ab -H "User-Agent: 4server" -c 100 -n 10 -t 10 http://vhost4/; sleep 1; doneLe të kontrollojmë të dhënat në Clickhouse
Shkoni në Clickhouse
clickhouse-client -h 172.26.10.109 -mBërja e një pyetjeje SQL
SELECT * FROM vector.logs;
âânode_nameâââââŹâââââââââââtimestampââŹâserver_nameââŹâuser_idââŹârequest_fullââââŹârequest_user_agentââŹârequest_http_hostââŹârequest_uriââŹârequest_schemeââŹârequest_methodââŹârequest_lengthââŹârequest_timeââŹârequest_referrerââŹâresponse_statusââŹâresponse_body_bytes_sentââŹâresponse_content_typeââŹâââremote_addrââŹâremote_portââŹâremote_userââŹâupstream_addrââŹâupstream_portââŹâupstream_bytes_receivedââŹâupstream_bytes_sentââŹâupstream_cache_statusââŹâupstream_connect_timeââŹâupstream_header_timeââŹâupstream_response_lengthââŹâupstream_response_timeââŹâupstream_statusââŹâupstream_content_typeââ
â nginx-vector â 2020-08-07 04:32:42 â vhost1 â â GET / HTTP/1.0 â 1server â vhost1 â / â http â GET â 66 â 0.028 â â 404 â 27 â â 172.26.10.106 â 45886 â â 172.26.10.106 â 0 â 109 â 97 â DISABLED â 0 â 0.025 â 27 â 0.029 â 404 â â
ââââââââââââââââŽââââââââââââââââââââââŽââââââââââââââŽââââââââââŽâââââââââââââââââŽâââââââââââââââââââââŽââââââââââââââââââââŽââââââââââââââŽâââââââââââââââââŽâââââââââââââââââŽâââââââââââââââââŽâââââââââââââââŽâââââââââââââââââââŽââââââââââââââââââŽâââââââââââââââââââââââââââŽââââââââââââââââââââââââŽââââââââââââââââŽââââââââââââââŽââââââââââââââŽââââââââââââââââŽââââââââââââââââŽââââââââââââââââââââââââââŽââââââââââââââââââââââŽââââââââââââââââââââââââŽââââââââââââââââââââââââŽâââââââââââââââââââââââŽâââââââââââââââââââââââââââŽâââââââââââââââââââââââââŽââââââââââââââââââŽâââââââââââââââââââââââZbuloni madhĂ«sinĂ« e tabelave nĂ« Clickhouse
select concat(database, '.', table) as table,
formatReadableSize(sum(bytes)) as size,
sum(rows) as rows,
max(modification_time) as latest_modification,
sum(bytes) as bytes_size,
any(engine) as engine,
formatReadableSize(sum(primary_key_bytes_in_memory)) as primary_keys_size
from system.parts
where active
group by database, table
order by bytes_size desc;Le të zbulojmë se sa shkrime morën në Clickhouse.

Madhësia e tabelës së regjistrave është 857.19 MB.

Madhësia e të njëjtave të dhëna në indeksin në Elasticsearch është 4,5 GB.
Nëse nuk specifikoni të dhëna në vektor në parametra, Clickhouse merr 4500/857.19 = 5.24 herë më pak se në Elasticsearch.
Në vektor, fusha e kompresimit përdoret si parazgjedhje.
Biseda në telegram nga
Biseda në telegram nga
Biseda në telegram nga ""
Burimi: www.habr.com
