
, na idinisenyo upang mangolekta, magbago at magpadala ng data ng log, mga sukatan at mga kaganapan.
β
Ang pagiging nakasulat sa wikang Rust, ito ay nailalarawan sa pamamagitan ng mataas na pagganap at mababang pagkonsumo ng RAM kumpara sa mga analogue nito. Bilang karagdagan, maraming pansin ang binabayaran sa mga function na may kaugnayan sa kawastuhan, sa partikular, ang kakayahang mag-save ng mga hindi naipadalang kaganapan sa isang buffer sa disk at i-rotate ang mga file.
Sa arkitektura, ang Vector ay isang event router na tumatanggap ng mga mensahe mula sa isa o higit pa mga mapagkukunan, opsyonal na inilalapat sa mga mensaheng ito mga pagbabagong-anyo, at pagpapadala sa kanila sa isa o higit pa drains.
Ang Vector ay isang kapalit para sa filebeat at logstash, maaari itong kumilos sa parehong mga tungkulin (tumanggap at magpadala ng mga log), higit pang mga detalye sa mga ito .
Kung sa Logstash ang chain ay binuo bilang input β filter β output pagkatapos ay sa Vector ito β β
Ang mga halimbawa ay matatagpuan sa dokumentasyon.
Ang tagubiling ito ay isang binagong tagubilin mula sa . Ang orihinal na mga tagubilin ay naglalaman ng geoip processing. Kapag sinusubukan ang geoip mula sa isang panloob na network, nagbigay ng error ang vector.
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=30Kung kailangan ng sinuman na magproseso ng geoip, sumangguni sa orihinal na mga tagubilin mula sa .
Iko-configure namin ang kumbinasyon ng Nginx (Access logs) β Vector (Client | Filebeat) β Vector (Server | Logstash) β hiwalay sa Clickhouse at hiwalay sa Elasticsearch. Mag-i-install kami ng 4 na server. Bagama't maaari mong i-bypass ito gamit ang 3 server.

Ang scheme ay isang bagay tulad nito.
Huwag paganahin ang Selinux sa lahat ng iyong mga server
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
rebootNag-i-install kami ng HTTP server emulator + utility sa lahat ng server
Bilang isang HTTP server emulator ang gagamitin namin mula sa
Walang rpm ang Nodejs-stub-server. lumikha ng rpm para dito. rpm ay bubuuin gamit ang
Idagdag ang repositoryo ng antonpatsev/nodejs-stub-server
yum -y install yum-plugin-copr epel-release
yes | yum copr enable antonpatsev/nodejs-stub-serverI-install ang nodejs-stub-server, Apache benchmark at screen terminal multiplexer sa lahat ng server
yum -y install stub_http_server screen mc httpd-tools screenItinama ko ang oras ng pagtugon ng stub_http_server sa file na /var/lib/stub_http_server/stub_http_server.js upang magkaroon ng higit pang mga log.
var max_sleep = 10;Ilunsad natin ang stub_http_server.
systemctl start stub_http_server
systemctl enable stub_http_serversa server 3
Ginagamit ng ClickHouse ang set ng pagtuturo ng SSE 4.2, kaya maliban kung tinukoy, ang suporta para dito sa processor na ginamit ay nagiging karagdagang kinakailangan ng system. Narito ang utos upang suriin kung sinusuportahan ng kasalukuyang processor ang SSE 4.2:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"Una kailangan mong ikonekta ang opisyal na imbakan:
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_64Upang mag-install ng mga pakete kailangan mong patakbuhin ang mga sumusunod na command:
sudo yum install -y clickhouse-server clickhouse-clientPayagan ang clickhouse-server na makinig sa network card sa file /etc/clickhouse-server/config.xml
<listen_host>0.0.0.0</listen_host>Pagbabago sa antas ng pag-log mula sa bakas patungo sa pag-debug
mag-alis ng mga insekto
Mga karaniwang setting ng compression:
min_compress_block_size 65536
max_compress_block_size 1048576Upang i-activate ang Zstd compression, pinayuhan na huwag hawakan ang config, ngunit sa halip ay gumamit ng DDL.

Hindi ko mahanap kung paano gamitin ang zstd compression sa pamamagitan ng DDL sa Google. Kaya hinayaan ko nalang.
Mga kasamahan na gumagamit ng zstd compression sa Clickhouse, mangyaring ibahagi ang mga tagubilin.
Upang simulan ang server bilang isang daemon, patakbuhin ang:
service clickhouse-server startNgayon ay magpatuloy tayo sa pag-set up ng Clickhouse
Pumunta sa Clickhouse
clickhouse-client -h 172.26.10.109 -m172.26.10.109 β IP ng server kung saan naka-install ang Clickhouse.
Gumawa tayo ng vector database
CREATE DATABASE vector;Suriin natin na ang database ay umiiral.
show databases;Gumawa ng vector.logs table.
/* ΠΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ° Π³Π΄Π΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΊ Π΅ΡΡΡ */
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;Sinusuri namin na ang mga talahanayan ay nalikha na. Ilunsad natin clickhouse-client at gumawa ng isang kahilingan.
Pumunta tayo sa database ng vector.
use vector;
Ok.
0 rows in set. Elapsed: 0.001 sec.Tingnan natin ang mga talahanayan.
show tables;
ββnameβββββββββββββββββ
β logs β
βββββββββββββββββββββββPag-install ng elasticsearch sa ika-4 na server upang ipadala ang parehong data sa Elasticsearch para sa paghahambing sa Clickhouse
Magdagdag ng pampublikong rpm key
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchGumawa tayo ng 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-mdI-install ang elasticsearch at kibana
yum install -y kibana elasticsearchDahil ito ay nasa 1 kopya, kailangan mong idagdag ang sumusunod sa /etc/elasticsearch/elasticsearch.yml file:
discovery.type: single-nodePara makapagpadala ang vector ng data sa elasticsearch mula sa ibang server, baguhin natin ang network.host.
network.host: 0.0.0.0Para kumonekta sa kibana, baguhin ang server.host parameter sa file /etc/kibana/kibana.yml
server.host: "0.0.0.0"Luma at isama ang elasticsearch sa autostart
systemctl enable elasticsearch
systemctl start elasticsearchat kibana
systemctl enable kibana
systemctl start kibanaPag-configure ng Elasticsearch para sa single-node mode 1 shard, 0 replica. Malamang na magkakaroon ka ng isang kumpol ng isang malaking bilang ng mga server at hindi mo kailangang gawin ito.
Para sa mga index sa hinaharap, i-update ang default na template:
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"}}' Instalasyon bilang kapalit ng Logstash sa server 2
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screenI-set up natin ang Vector bilang kapalit ng Logstash. Pag-edit ng file /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"Maaari mong isaayos ang seksyong transforms.nginx_parse_add_defaults.
Bilang ginagamit ang mga config na ito para sa isang maliit na CDN at maaaring mayroong ilang mga halaga sa upstream_*
Halimbawa:
"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"Kung hindi ito ang iyong sitwasyon, maaaring gawing simple ang seksyong ito
Gumawa tayo ng mga setting ng serbisyo para sa 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.targetPagkatapos gawin ang mga talahanayan, maaari mong patakbuhin ang Vector
systemctl enable vector
systemctl start vectorAng mga vector log ay maaaring matingnan nang ganito:
journalctl -f -u vectorDapat may mga entry na ganito sa logs
INFO vector::topology::builder: Healthcheck: Passed.
INFO vector::topology::builder: Healthcheck: Passed.Sa client (Web server) - 1st server
Sa server na may nginx, kailangan mong i-disable ang ipv6, dahil ang logs table sa clickhouse ay gumagamit ng field upstream_addr IPv4, dahil hindi ako gumagamit ng ipv6 sa loob ng network. Kung hindi naka-off ang ipv6, magkakaroon ng mga error:
DB::Exception: Invalid IPv4 value.: (while read the value of key upstream_addr)Marahil mga mambabasa, magdagdag ng suporta sa ipv6.
Lumikha ng file /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 = 1Paglalapat ng mga setting
sysctl --systemI-install natin ang nginx.
Idinagdag ang nginx repository file /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=trueI-install ang nginx package
yum install -y nginxUna, kailangan nating i-configure ang format ng log sa Nginx sa file /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;
}Upang hindi masira ang iyong kasalukuyang configuration, pinapayagan ka ng Nginx na magkaroon ng ilang access_log na mga direktiba
access_log /var/log/nginx/access.log main; # Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π»ΠΎΠ³
access_log /var/log/nginx/access.json.log vector; # ΠΠΎΠ²ΡΠΉ Π»ΠΎΠ³ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ jsonHuwag kalimutang magdagdag ng panuntunan upang mag-logrotate para sa mga bagong log (kung ang log file ay hindi nagtatapos sa .log)
Alisin ang default.conf mula sa /etc/nginx/conf.d/
rm -f /etc/nginx/conf.d/default.confMagdagdag ng virtual host /etc/nginx/conf.d/vhost1.conf
server {
listen 80;
server_name vhost1;
location / {
proxy_pass http://172.26.10.106:8080;
}
}Magdagdag ng virtual host /etc/nginx/conf.d/vhost2.conf
server {
listen 80;
server_name vhost2;
location / {
proxy_pass http://172.26.10.108:8080;
}
}Magdagdag ng virtual host /etc/nginx/conf.d/vhost3.conf
server {
listen 80;
server_name vhost3;
location / {
proxy_pass http://172.26.10.109:8080;
}
}Magdagdag ng virtual host /etc/nginx/conf.d/vhost4.conf
server {
listen 80;
server_name vhost4;
location / {
proxy_pass http://172.26.10.116:8080;
}
}Magdagdag ng mga virtual host (172.26.10.106 ip ng server kung saan naka-install ang nginx) sa lahat ng server sa /etc/hosts file:
172.26.10.106 vhost1
172.26.10.106 vhost2
172.26.10.106 vhost3
172.26.10.106 vhost4At kung handa na ang lahat
nginx -t
systemctl restart nginxNgayon, i-install natin ito sa ating sarili
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpmGumawa tayo ng file ng mga setting para sa 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.targetAt i-configure ang kapalit na Filebeat sa /etc/vector/vector.toml config. Ang IP address na 172.26.10.108 ay ang IP address ng log server (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"Huwag kalimutang idagdag ang user vector sa naaangkop na grupo upang mabasa nito ang mga log file. Halimbawa, ang nginx sa centos lumilikha ng mga log na may mga karapatan sa adm group.
usermod -a -G adm vectorSimulan natin ang serbisyo ng vector
systemctl enable vector
systemctl start vectorAng mga vector log ay maaaring matingnan nang ganito:
journalctl -f -u vectorDapat may entry na ganito sa logs
INFO vector::topology::builder: Healthcheck: Passed.Pagsusuri ng Stress
Nagsasagawa kami ng pagsubok gamit ang benchmark ng Apache.
Ang pakete ng httpd-tools ay na-install sa lahat ng mga server
Sinimulan namin ang pagsubok gamit ang Apache benchmark mula sa 4 na magkakaibang server sa screen. Una, inilunsad namin ang screen terminal multiplexer, at pagkatapos ay sisimulan namin ang pagsubok gamit ang Apache benchmark. Paano gumana sa screen na makikita mo sa .
Mula sa 1st server
while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; doneMula sa 2st server
while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; doneMula sa 3st server
while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; doneMula sa 4st server
while true; do ab -H "User-Agent: 4server" -c 100 -n 10 -t 10 http://vhost4/; sleep 1; doneSuriin natin ang data sa Clickhouse
Pumunta sa Clickhouse
clickhouse-client -h 172.26.10.109 -mGumagawa ng SQL query
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 β β
ββββββββββββββββ΄ββββββββββββββββββββββ΄ββββββββββββββ΄ββββββββββ΄βββββββββββββββββ΄βββββββββββββββββββββ΄ββββββββββββββββββββ΄ββββββββββββββ΄βββββββββββββββββ΄βββββββββββββββββ΄βββββββββββββββββ΄βββββββββββββββ΄βββββββββββββββββββ΄ββββββββββββββββββ΄βββββββββββββββββββββββββββ΄ββββββββββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββββββββββββ΄ββββββββββββββββββββββ΄ββββββββββββββββββββββββ΄ββββββββββββββββββββββββ΄βββββββββββββββββββββββ΄βββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ΄ββββββββββββββββββ΄βββββββββββββββββββββββAlamin ang laki ng mga talahanayan sa 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;Alamin natin kung gaano karaming mga log ang kinuha sa Clickhouse.

Ang laki ng talahanayan ng mga log ay 857.19 MB.

Ang laki ng parehong data sa index sa Elasticsearch ay 4,5GB.
Kung hindi mo tinukoy ang data sa vector sa mga parameter, ang Clickhouse ay tumatagal ng 4500/857.19 = 5.24 beses na mas mababa kaysa sa Elasticsearch.
Sa vector, ang compression field ay ginagamit bilang default.
Telegram chat ni
Telegram chat ni
Telegram chat ni ""
Pinagmulan: www.habr.com
