→
Он бо забони Rust навишта шуда, дар муқоиса бо аналогҳои худ бо иҷрои баланд ва истеъмоли ками RAM тавсиф мешавад. Илова бар ин, ба функсияҳои марбут ба дурустӣ, аз ҷумла қобилияти захира кардани рӯйдодҳои ирсолнашуда дар буфери диск ва гардиши файлҳо диққати зиёд дода мешавад.
Аз ҷиҳати меъморӣ, Вектор роутери рӯйдодҳост, ки аз як ё якчанд паёмҳо қабул мекунад сарчашмаҳо, ихтиёран ба болои ин паёмҳо муроҷиат кунед дигаргуниҳо, ва фиристодани онҳо ба як ё якчанд дренажхо.
Вектор ивазкунандаи filebeat ва logstash аст, он метавонад дар ҳарду нақш амал кунад (қабул ва фиристодани гузоришҳо), тафсилоти бештар дар бораи онҳо
Агар дар Logstash занҷир ҳамчун вуруд → филтр → баромад сохта шуда бошад, пас дар Вектор ин аст
Намунаҳоро дар ҳуҷҷатҳо дидан мумкин аст.
Ин дастур дастури аз нав дида баромадашуда мебошад
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=30
Агар касе ба коркарди geoip ниёз дошта бошад, пас ба дастурҳои аслии аз
Мо омезиши Nginx (Access logs) → Vector (Client | Filebeat) → Vector (Сервер | Logstash) → алоҳида дар Clickhouse ва алоҳида дар Elasticsearch танзим мекунем. Мо 4 серверро насб мекунем. Гарчанде ки шумо метавонед онро бо 3 сервер гузаред.
Схема чунин аст.
Selinux-ро дар ҳама серверҳои худ хомӯш кунед
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
reboot
Мо дар ҳама серверҳо эмулятори сервери HTTP + утилитҳоро насб мекунем
Ҳамчун эмулятори сервери HTTP мо истифода хоҳем кард
Nodejs-stub-server rpm надорад.
Анбори antonpatsev/nodejs-stub-server -ро илова кунед
yum -y install yum-plugin-copr epel-release
yes | yum copr enable antonpatsev/nodejs-stub-server
Дар ҳама серверҳо nodejs-stub-server, бенчмарк Apache ва мултиплекси терминали экранро насб кунед
yum -y install stub_http_server screen mc httpd-tools screen
Ман вақти вокуниши stub_http_server-ро дар файли /var/lib/stub_http_server/stub_http_server.js ислоҳ кардам, то гузоришҳо бештар бошанд.
var max_sleep = 10;
Биёед stub_http_server-ро оғоз кунем.
systemctl start stub_http_server
systemctl enable stub_http_server
Насби Clickhouse дар сервер 3
ClickHouse маҷмӯи дастурҳои SSE 4.2-ро истифода мебарад, бинобар ин, агар тартиби дигаре пешбинӣ нашуда бошад, дастгирии он дар протсессори истифодашуда талаботи иловагии система мегардад. Ин аст фармон барои санҷидани он, ки оё протсессори ҷорӣ SSE 4.2-ро дастгирӣ мекунад:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
Аввалан ба шумо лозим аст, ки ба анбори расмӣ пайваст шавед:
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_64
Барои насб кардани бастаҳо шумо бояд фармонҳои зеринро иҷро кунед:
sudo yum install -y clickhouse-server clickhouse-client
Ба clickhouse-server иҷозат диҳед, ки корти шабакаро дар файли /etc/clickhouse-server/config.xml гӯш кунад
<listen_host>0.0.0.0</listen_host>
Тағир додани сатҳи сабти ном аз пайгирӣ ба хатогиҳо
сознамоии
Танзимоти стандартии фишурдасозӣ:
min_compress_block_size 65536
max_compress_block_size 1048576
Барои фаъол кардани фишурдани Zstd, тавсия дода шуд, ки ба конфигуратсия даст нарасонед, балки DDL-ро истифода баред.
Ман наёфтам, ки чӣ тавр фишурдани zstd-ро тавассути DDL дар Google истифода барам. Пас, ман онро тавре гузоштам.
Ҳамкороне, ки фишурдани zstd-ро дар Clickhouse истифода мебаранд, лутфан дастурҳоро мубодила кунед.
Барои оғоз кардани сервер ҳамчун демон, иҷро кунед:
service clickhouse-server start
Акнун биёед ба таъсиси Clickhouse гузарем
Ба Clickhouse равед
clickhouse-client -h 172.26.10.109 -m
172.26.10.109 — IP сервере, ки дар он Clickhouse насб шудааст.
Биёед базаи векториро созем
CREATE DATABASE vector;
Биёед тафтиш кунем, ки базаи маълумот мавҷуд аст.
show databases;
Ҷадвали 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;
Мо тафтиш мекунем, ки ҷадвалҳо сохта шудаанд. Биёед оғоз кунем clickhouse-client
ва дархост кунед.
Биёед ба базаи векторӣ равем.
use vector;
Ok.
0 rows in set. Elapsed: 0.001 sec.
Биёед ба ҷадвалҳо назар андозем.
show tables;
┌─name────────────────┐
│ logs │
└─────────────────────┘
Насб кардани elasticsearch дар сервери 4-ум барои фиристодани ҳамон маълумот ба Elasticsearch барои муқоиса бо Clickhouse
Калиди оммавии rpm илова кунед
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Биёед 2 репо эҷод кунем:
/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-md
Elasticsearch ва kibana насб кунед
yum install -y kibana elasticsearch
Азбаски он дар 1 нусха хоҳад буд, шумо бояд ба файли /etc/elasticsearch/elasticsearch.yml зеринро илова кунед:
discovery.type: single-node
Пас, он вектор метавонад маълумотро ба elasticsearch аз сервери дигар фиристад, биёед network.host-ро иваз кунем.
network.host: 0.0.0.0
Барои пайваст шудан ба kibana, параметри server.host-ро дар файли /etc/kibana/kibana.yml тағир диҳед
server.host: "0.0.0.0"
Кӯҳна ва elasticsearch-ро дар autostart дохил кунед
systemctl enable elasticsearch
systemctl start elasticsearch
ва кибана
systemctl enable kibana
systemctl start kibana
Танзими Elasticsearch барои реҷаи як гиреҳи 1 пора, 0 нусха. Эҳтимол дорад, ки шумо кластери шумораи зиёди серверҳоро хоҳед дошт ва ба шумо ин кор лозим нест.
Барои индексатсияҳои оянда, қолаби пешфарзро навсозӣ кунед:
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"}}'
параметр Вектор ҳамчун ивазкунандаи Logstash дар сервер 2
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screen
Биёед Векторро ҳамчун ивазкунандаи Logstash насб кунем. Таҳрири файл /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"
Шумо метавонед бахши transforms.nginx_parse_add_defaults -ро танзим кунед.
соли
Масалан:
"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"
Агар ин вазъияти шумо набошад, пас ин бахшро содда кардан мумкин аст
Биёед танзимоти хидматро барои 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.target
Пас аз сохтани ҷадвалҳо, шумо метавонед Векторро иҷро кунед
systemctl enable vector
systemctl start vector
Сабтҳои векториро чунин дидан мумкин аст:
journalctl -f -u vector
Дар гузоришҳо бояд чунин сабтҳо мавҷуд бошанд
INFO vector::topology::builder: Healthcheck: Passed.
INFO vector::topology::builder: Healthcheck: Passed.
Дар муштарӣ (веб-сервер) - сервери 1
Дар сервер бо nginx, шумо бояд ipv6-ро хомӯш кунед, зеро ҷадвали гузоришҳо дар clickhouse майдонро истифода мебарад upstream_addr
IPv4, зеро ман IPv6-ро дар дохили шабака истифода намебарам. Агар ipv6 хомӯш карда нашавад, хатогиҳо пайдо мешаванд:
DB::Exception: Invalid IPv4 value.: (while read the value of key upstream_addr)
Шояд хонандагон, дастгирии ipv6-ро илова кунед.
Файлро эҷод кунед /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 = 1
Татбиқи танзимот
sysctl --system
Биёед nginx-ро насб кунем.
Иловаи файли анбори 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=true
Бастаи nginx -ро насб кунед
yum install -y nginx
Аввалан, мо бояд формати сабтро дар Nginx дар файли /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;
}
Барои он ки конфигуратсияи ҷории худро вайрон накунед, Nginx ба шумо имкон медиҳад, ки якчанд дастурҳои access_log дошта бошед
access_log /var/log/nginx/access.log main; # Стандартный лог
access_log /var/log/nginx/access.json.log vector; # Новый лог в формате json
Фаромӯш накунед, ки қоида барои воридшавӣ барои сабтҳои нав илова кунед (агар файли гузориш бо .log хотима наёбад)
default.conf-ро аз /etc/nginx/conf.d/ хориҷ кунед
rm -f /etc/nginx/conf.d/default.conf
Илова кардани мизбони виртуалӣ /etc/nginx/conf.d/vhost1.conf
server {
listen 80;
server_name vhost1;
location / {
proxy_pass http://172.26.10.106:8080;
}
}
Илова кардани мизбони виртуалӣ /etc/nginx/conf.d/vhost2.conf
server {
listen 80;
server_name vhost2;
location / {
proxy_pass http://172.26.10.108:8080;
}
}
Илова кардани мизбони виртуалӣ /etc/nginx/conf.d/vhost3.conf
server {
listen 80;
server_name vhost3;
location / {
proxy_pass http://172.26.10.109:8080;
}
}
Илова кардани мизбони виртуалӣ /etc/nginx/conf.d/vhost4.conf
server {
listen 80;
server_name vhost4;
location / {
proxy_pass http://172.26.10.116:8080;
}
}
Ба ҳамаи серверҳо ба файли /etc/hosts ҳостҳои виртуалӣ (172.26.10.106 ip сервере, ки дар он nginx насб шудааст) илова кунед:
172.26.10.106 vhost1
172.26.10.106 vhost2
172.26.10.106 vhost3
172.26.10.106 vhost4
Ва агар ҳама чиз омода бошад
nginx -t
systemctl restart nginx
Акнун биёед онро худамон насб кунем
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm
Биёед файли танзимотро барои 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.target
Ва иваз кардани Filebeat-ро дар конфигуратсияи /etc/vector/vector.toml танзим кунед. Суроғаи IP 172.26.10.108 суроғаи IP-и сервери лог (Вектор-Сервер) мебошад
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"
Фаромӯш накунед, ки корбари векторро ба гурӯҳи зарурӣ илова кунед, то ки ӯ файлҳои журналро хонад. Масалан, nginx дар centos гузоришҳоро бо ҳуқуқҳои гурӯҳи adm эҷод мекунад.
usermod -a -G adm vector
Биёед хидмати векториро оғоз кунем
systemctl enable vector
systemctl start vector
Сабтҳои векториро чунин дидан мумкин аст:
journalctl -f -u vector
Дар гузоришҳо бояд чунин сабт мавҷуд бошад
INFO vector::topology::builder: Healthcheck: Passed.
Санҷиши стресс
Мо озмоишро бо истифода аз Apache бенчмарк мегузаронем.
Бастаи httpd-tools дар ҳама серверҳо насб карда шуд
Мо озмоишро бо истифода аз меъёри Apache аз 4 серверҳои гуногун дар экран оғоз мекунем. Аввалан, мо мултиплексори терминали экранро ба кор меандозем ва сипас бо истифода аз меъёри Apache озмоишро оғоз мекунем. Чӣ тавр бо экран кор кардан мумкин аст, ки дар он пайдо кунед
Аз сервери 1
while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; done
Аз сервери 2
while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; done
Аз сервери 3
while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; done
Аз сервери 4
while true; do ab -H "User-Agent: 4server" -c 100 -n 10 -t 10 http://vhost4/; sleep 1; done
Биёед маълумотро дар Clickhouse тафтиш кунем
Ба Clickhouse равед
clickhouse-client -h 172.26.10.109 -m
Қабули дархости 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 │ │
└──────────────┴─────────────────────┴─────────────┴─────────┴────────────────┴────────────────────┴───────────────────┴─────────────┴────────────────┴────────────────┴────────────────┴──────────────┴──────────────────┴─────────────────┴──────────────────────────┴───────────────────────┴───────────────┴─────────────┴─────────────┴───────────────┴───────────────┴─────────────────────────┴─────────────────────┴───────────────────────┴───────────────────────┴──────────────────────┴──────────────────────────┴────────────────────────┴─────────────────┴───────────────────────
Андозаи ҷадвалҳоро дар 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;
Биёед бифаҳмем, ки дар Clickhouse чӣ қадар гузоришҳо ҷамъ шудаанд.
Андозаи ҷадвали гузоришҳо 857.19 МБ аст.
Андозаи ҳамон маълумот дар индекс дар Elasticsearch 4,5 ГБ аст.
Агар шумо маълумотро дар вектор дар параметрҳо нишон надиҳед, Clickhouse нисбат ба Elasticsearch 4500/857.19 = 5.24 маротиба камтар мегирад.
Дар вектор, майдони фишурда ба таври нобаёнӣ истифода мешавад.
Чати Telegram аз ҷониби
Чати Telegram аз ҷониби
Чати Telegram аз ҷониби "
Манбаъ: will.com