
, журнал деректерін, көрсеткіштерді және оқиғаларды жинауға, түрлендіруге және жіберуге арналған.
→
Rust тілінде жазылғандықтан, аналогтарымен салыстырғанда жоғары өнімділікпен және жедел жадты аз тұтынумен ерекшеленеді. Сонымен қатар, дұрыстықпен байланысты функцияларға көп көңіл бөлінеді, атап айтқанда, жіберілмеген оқиғаларды дискідегі буферге сақтау және файлдарды айналдыру мүмкіндігі.
Архитектуралық тұрғыдан Вектор - бір немесе бірнеше хабарламаларды қабылдайтын оқиға маршрутизаторы ақпарат көздері, таңдау бойынша осы хабарларға қолданылады түрлендірулер, және оларды біреуіне немесе бірнешеуіне жіберу дренаждар.
Вектор - бұл файлдық жүйені және логсташты ауыстыру, ол екі рөлде де әрекет ете алады (журналдарды қабылдау және жіберу), олар туралы толығырақ .
Егер 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-серверінде айналым жылдамдығы жоқ. ол үшін айн / мин жасаңыз. 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Мен /var/lib/stub_http_server/stub_http_server.js файлындағы stub_http_server жауап уақытын түзетіп, журналдар көбірек болды.
var max_sleep = 10;stub_http_server іске қосайық.
systemctl start stub_http_server
systemctl enable stub_http_serverсерверде 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-clientClickhouse-серверіне /etc/clickhouse-server/config.xml файлындағы желі картасын тыңдауға рұқсат ету
<listen_host>0.0.0.0</listen_host>Тіркеу деңгейін бақылаудан жөндеуге өзгерту
Жөндеу
Стандартты қысу параметрлері:
min_compress_block_size 65536
max_compress_block_size 1048576Zstd қысуын белсендіру үшін конфигурацияға қол тигізбеу, керісінше DDL пайдалану ұсынылды.

Мен Google-да DDL арқылы zstd қысуды қалай пайдалану керектігін таба алмадым. Сондықтан мен оны сол күйінде қалдырдым.
Clickhouse бағдарламасында zstd қысуын қолданатын әріптестер нұсқауларды бөлісіңіз.
Серверді демон ретінде іске қосу үшін келесіні іске қосыңыз:
service clickhouse-server startЕнді Clickhouse орнатуға көшейік
Clickhouse сайтына өтіңіз
clickhouse-client -h 172.26.10.109 -m172.26.10.109 — Clickhouse орнатылған сервердің IP мекенжайы.
Векторлық мәліметтер қорын құрайық
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 │
└─────────────────────┘Clickhouse бағдарламасымен салыстыру үшін бірдей деректерді Elasticsearch қызметіне жіберу үшін 4-ші серверге elasticsearch орнату
Жалпыға ортақ rpm кілтін қосыңыз
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch2 репо жасайық:
/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-mdelasticsearch және kibana орнатыңыз
yum install -y kibana elasticsearchОл 1 көшірме болатындықтан, /etc/elasticsearch/elasticsearch.yml файлына келесіні қосу керек:
discovery.type: single-nodeБұл вектор деректерді басқа серверден elasticsearch қызметіне жібере алатындай, network.host файлын өзгертейік.
network.host: 0.0.0.0Kibana-ға қосылу үшін /etc/kibana/kibana.yml файлындағы server.host параметрін өзгертіңіз.
server.host: "0.0.0.0"Ескі және автоматты іске қосуға elasticsearch қосыңыз
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"}}' параметр 2 сервердегі Logstash орнына ауыстыру ретінде
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screenLogstash орнына Векторды орнатайық. /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 бөлімін реттеуге болады.
содан бері бұл конфигурацияларды шағын CDN үшін пайдаланады және upstream_* ішінде бірнеше мән болуы мүмкін
Мысалы:
"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Кестелерді жасағаннан кейін Vector бағдарламасын іске қосуға болады
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 --systemNginx орнатайық.
Қосылған 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=truenginx бумасын орнатыңыз
yum install -y nginxАлдымен, /etc/nginx/nginx.conf файлында Nginx жүйесінде журнал пішімін конфигурациялауымыз керек.
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 файлына барлық серверлерге виртуалды хосттарды (nginx орнатылған сервердің 172.26.10.106 ip) қосыңыз:
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.rpmsystemd /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Және /etc/vector/vector.toml конфигурациясында Filebeat ауыстыруды теңшеңіз. 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 in centos әкімші тобының құқықтарымен журналдар жасайды.
usermod -a -G adm vectorВекторлық қызметті бастайық
systemctl enable vector
systemctl start vectorВекторлық журналдарды келесідей көруге болады:
journalctl -f -u vectorЖурналдарда осындай жазба болуы керек
INFO vector::topology::builder: Healthcheck: Passed.Стресс тестілеу
Тестілеу Apache эталоны арқылы жүзеге асырылады.
httpd-tools бумасы барлық серверлерде орнатылды
Экрандағы 4 түрлі серверден Apache бенчмаркін пайдаланып тестілеуді бастаймыз. Алдымен экран терминалының мультиплексорын іске қосамыз, содан кейін Apache эталоны арқылы тестілеуді бастаймыз. Экранмен қалай жұмыс істеу керектігін мына жерден таба аласыз .
1-ші серверден
while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; done2-ші серверден
while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; done3-ші серверден
while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; done4-ші серверден
while true; do ab -H "User-Agent: 4server" -c 100 -n 10 -t 10 http://vhost4/; sleep 1; doneClickhouse ішіндегі деректерді тексерейік
Clickhouse сайтына өтіңіз
clickhouse-client -h 172.26.10.109 -mSQL сұранысын жасау
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 чаты ""
Ақпарат көзі: www.habr.com
