
, kas izstrÄdÄta, lai vÄktu, pÄrveidotu un nosÅ«tÄ«tu žurnÄla datus, metriku un notikumus.
ā
TÄ kÄ tÄ ir rakstÄ«ta Rust valodÄ, tai salÄ«dzinÄjumÄ ar analogiem ir raksturÄ«ga augsta veiktspÄja un zems RAM patÄriÅÅ”. TurklÄt liela uzmanÄ«ba tiek pievÄrsta funkcijÄm, kas saistÄ«tas ar pareizÄ«bu, jo Ä«paÅ”i iespÄjai saglabÄt nenosÅ«tÄ«tos notikumus diska buferÄ« un pagriezt failus.
ArhitektÅ«ras ziÅÄ Vector ir notikumu marÅ”rutÄtÄjs, kas saÅem ziÅojumus no viena vai vairÄkiem avotiem, pÄc izvÄles piemÄrojot Å”iem ziÅojumiem pÄrvÄrtÄ«basun nosÅ«tot tos vienam vai vairÄkiem notekas.
Vector aizstÄj filebeat un logstash, tas var darboties abÄs lomÄs (saÅemt un sÅ«tÄ«t žurnÄlus), sÄ«kÄka informÄcija par tiem .
Ja Logstash Ä·Äde ir veidota kÄ ievade ā filtrs ā izvade, tad Vector tÄ ir ā ā
PiemÄrus var atrast dokumentÄcijÄ.
Å Ä« instrukcija ir pÄrskatÄ«ta instrukcija no . SÄkotnÄjÄs instrukcijas satur geoip apstrÄdi. PÄrbaudot geoip no iekÅ”ÄjÄ tÄ«kla, vektors radÄ«ja kļūdu.
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=30Ja kÄdam ir jÄapstrÄdÄ geoip, skatiet oriÄ£inÄlos norÄdÄ«jumus no .
MÄs konfigurÄsim kombinÄciju Nginx (piekļuves žurnÄli) ā Vector (klients | Filebeat) ā Vector (serveris | Logstash) ā atseviŔķi pakalpojumÄ Clickhouse un atseviŔķi programmÄ Elasticsearch. MÄs uzstÄdÄ«sim 4 serverus. Lai gan to var apiet ar 3 serveriem.

ShÄma ir apmÄram Å”Äda.
AtspÄjojiet Selinux visos savos serveros
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
rebootUz visiem serveriem instalÄjam HTTP servera emulatoru + utilÄ«tas
MÄs izmantosim kÄ HTTP servera emulatoru no
Nodejs-stub-server nav rpm. izveidojiet tam apgriezienus. apgr./min tiks veidots, izmantojot
Pievienojiet repozitoriju antonpatsev/nodejs-stub-server
yum -y install yum-plugin-copr epel-release
yes | yum copr enable antonpatsev/nodejs-stub-serverInstalÄjiet nodejs-stub-server, Apache etalonu un ekrÄna terminÄļa multipleksoru visos serveros
yum -y install stub_http_server screen mc httpd-tools screenEs izlaboju stub_http_server reakcijas laiku /var/lib/stub_http_server/stub_http_server.js failÄ, lai bÅ«tu vairÄk žurnÄlu.
var max_sleep = 10;Palaidīsim stub_http_serveri.
systemctl start stub_http_server
systemctl enable stub_http_serverserverī 3
ClickHouse izmanto SSE 4.2 instrukciju kopu, tÄpÄc, ja vien nav norÄdÄ«ts citÄdi, atbalsts tam izmantotajÄ procesorÄ kļūst par papildu sistÄmas prasÄ«bu. Å eit ir komanda, lai pÄrbaudÄ«tu, vai paÅ”reizÄjais procesors atbalsta SSE 4.2:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"Vispirms jums ir jÄpievieno oficiÄlais repozitorijs:
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_64Lai instalÄtu pakotnes, ir jÄizpilda Å”Ädas komandas:
sudo yum install -y clickhouse-server clickhouse-clientAtļaut clickhouse-server klausÄ«ties tÄ«kla karti failÄ /etc/clickhouse-server/config.xml
<listen_host>0.0.0.0</listen_host>ReÄ£istrÄcijas lÄ«meÅa maiÅa no izsekoÅ”anas uz atkļūdoÅ”anu
atkļūdoŔanas
Standarta saspieŔanas iestatījumi:
min_compress_block_size 65536
max_compress_block_size 1048576Lai aktivizÄtu Zstd saspieÅ”anu, tika ieteikts nepieskarties konfigurÄcijai, bet gan izmantot DDL.

Es nevarÄju atrast, kÄ Google tÄ«klÄ izmantot zstd saspieÅ”anu, izmantojot DDL. TÄpÄc es atstÄju to kÄ ir.
KolÄÄ£us, kuri Clickhouse izmanto zstd saspieÅ”anu, lÅ«dzu, dalieties ar instrukcijÄm.
Lai sÄktu serveri kÄ dÄmonu, palaidiet:
service clickhouse-server startTagad pÄriesim pie Clickhouse iestatīŔanas
Dodieties uz Clickhouse
clickhouse-client -h 172.26.10.109 -m172.26.10.109 ā tÄ servera IP, kurÄ ir instalÄts Clickhouse.
Izveidosim vektoru datu bÄzi
CREATE DATABASE vector;PÄrbaudÄ«sim, vai datu bÄze pastÄv.
show databases;Izveidojiet tabulu 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;MÄs pÄrbaudÄm, vai tabulas ir izveidotas. SÄksim palaist clickhouse-client un iesniedziet pieprasÄ«jumu.
Dosimies uz vektoru datu bÄzi.
use vector;
Ok.
0 rows in set. Elapsed: 0.001 sec.Apskatīsim tabulas.
show tables;
āānameāāāāāāāāāāāāāāāāā
ā logs ā
āāāāāāāāāāāāāāāāāāāāāāāElasticsearch instalÄÅ”ana ceturtajÄ serverÄ«, lai nosÅ«tÄ«tu tos paÅ”us datus Elasticsearch salÄ«dzinÄÅ”anai ar Clickhouse
Pievienojiet publisku apgriezienu skaita atslÄgu
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchIzveidosim 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-mdUzstÄdiet elasticsearch un kibana
yum install -y kibana elasticsearchTÄ kÄ tas bÅ«s vienÄ eksemplÄrÄ, failam /etc/elasticsearch/elasticsearch.yml jÄpievieno tÄlÄk norÄdÄ«tais:
discovery.type: single-nodeLai Å”is vektors varÄtu nosÅ«tÄ«t datus uz elasticsearch no cita servera, mainÄ«sim network.host.
network.host: 0.0.0.0Lai izveidotu savienojumu ar kibana, mainiet server.host parametru failÄ /etc/kibana/kibana.yml
server.host: "0.0.0.0"Vecs un ietver elasticsearch automÄtiskajÄ palaiÅ”anÄ
systemctl enable elasticsearch
systemctl start elasticsearchun kibana
systemctl enable kibana
systemctl start kibanaElasticsearch konfigurÄÅ”ana viena mezgla režīmam 1 shard, 0 replika. VisticamÄk, jums bÅ«s liels serveru skaits, un jums tas nav jÄdara.
TurpmÄkajiem indeksiem atjauniniet noklusÄjuma veidni:
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"}}' UzstÄdīŔana kÄ Logstash aizstÄjÄju serverÄ« 2
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screenIestatÄ«sim Vector kÄ Logstash aizstÄjÄju. Faila /etc/vector/vector.toml rediÄ£ÄÅ”ana
# /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"Varat pielÄgot sadaļu transforms.nginx_parse_add_defaults.
KÄ izmanto Ŕīs konfigurÄcijas nelielam CDN, un augÅ”pusÄ var bÅ«t vairÄkas vÄrtÄ«bas_*
PiemÄram:
"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"Ja tÄ nav jÅ«su situÄcija, tad Å”o sadaļu var vienkÄrÅ”ot
Izveidosim servisa iestatījumus 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.targetPÄc tabulu izveides varat palaist Vector
systemctl enable vector
systemctl start vectorVektoru žurnÄlus var skatÄ«t Å”Ädi:
journalctl -f -u vectorŽurnÄlos vajadzÄtu bÅ«t Å”Ädiem ierakstiem
INFO vector::topology::builder: Healthcheck: Passed.
INFO vector::topology::builder: Healthcheck: Passed.KlientÄ (tÄ«mekļa serverÄ«) - 1. serveris
ServerÄ« ar nginx ir jÄatspÄjo ipv6, jo žurnÄlu tabulÄ Clickhouse tiek izmantots lauks upstream_addr IPv4, jo es neizmantoju ipv6 tÄ«klÄ. Ja ipv6 nav izslÄgts, tiks parÄdÄ«tas kļūdas:
DB::Exception: Invalid IPv4 value.: (while read the value of key upstream_addr)VarbÅ«t lasÄ«tÄji, pievienojiet ipv6 atbalstu.
Izveidojiet failu /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 = 1IestatÄ«jumu piemÄroÅ”ana
sysctl --systemInstalÄsim nginx.
Pievienots nginx repozitorija fails /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=trueInstalÄjiet nginx pakotni
yum install -y nginxPirmkÄrt, mums ir jÄkonfigurÄ Å¾urnÄla formÄts Nginx failÄ /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;
}Lai nesabojÄtu jÅ«su paÅ”reizÄjo konfigurÄciju, Nginx ļauj jums izmantot vairÄkas access_log direktÄ«vas
access_log /var/log/nginx/access.log main; # Š”ŃŠ°Š½Š“аŃŃŠ½Ńй лог
access_log /var/log/nginx/access.json.log vector; # ŠŠ¾Š²Ńй лог в ŃŠ¾ŃŠ¼Š°ŃŠµ jsonNeaizmirstiet pievienot kÄrtulu logrotate jauniem žurnÄliem (ja žurnÄla fails nebeidzas ar .log)
NoÅemiet default.conf no /etc/nginx/conf.d/
rm -f /etc/nginx/conf.d/default.confPievienojiet virtuÄlo resursdatoru /etc/nginx/conf.d/vhost1.conf
server {
listen 80;
server_name vhost1;
location / {
proxy_pass http://172.26.10.106:8080;
}
}Pievienojiet virtuÄlo resursdatoru /etc/nginx/conf.d/vhost2.conf
server {
listen 80;
server_name vhost2;
location / {
proxy_pass http://172.26.10.108:8080;
}
}Pievienojiet virtuÄlo resursdatoru /etc/nginx/conf.d/vhost3.conf
server {
listen 80;
server_name vhost3;
location / {
proxy_pass http://172.26.10.109:8080;
}
}Pievienojiet virtuÄlo resursdatoru /etc/nginx/conf.d/vhost4.conf
server {
listen 80;
server_name vhost4;
location / {
proxy_pass http://172.26.10.116:8080;
}
}Pievienojiet virtuÄlos saimniekdatorus (172.26.10.106 ip serverÄ«, kurÄ ir instalÄts nginx) visiem serveriem failÄ /etc/hosts:
172.26.10.106 vhost1
172.26.10.106 vhost2
172.26.10.106 vhost3
172.26.10.106 vhost4Un ja viss ir gatavs, tad
nginx -t
systemctl restart nginxTagad uzstÄdÄ«sim to paÅ”i
yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpmIzveidosim iestatījumu failu 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.targetUn konfigurÄjiet Filebeat aizstÄÅ”anu /etc/vector/vector.toml konfigurÄcijÄ. IP adrese 172.26.10.108 ir žurnÄla servera (vektoru servera) IP adrese.
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 vectorSÄksim vektora pakalpojumu
systemctl enable vector
systemctl start vectorVektoru žurnÄlus var skatÄ«t Å”Ädi:
journalctl -f -u vectorŽurnÄlos vajadzÄtu bÅ«t Å”Ädam ierakstam
INFO vector::topology::builder: Healthcheck: Passed.Stresa testÄÅ”ana
TestÄÅ”ana tiek veikta, izmantojot Apache etalonu.
httpd-tools pakotne tika instalÄta visos serveros
MÄs sÄkam testÄÅ”anu, izmantojot Apache etalonu no 4 dažÄdiem ekrÄna serveriem. Vispirms mÄs palaižam ekrÄna terminÄļa multipleksoru un pÄc tam sÄkam testÄÅ”anu, izmantojot Apache etalonu. KÄ strÄdÄt ar ekrÄnu, varat atrast .
No 1. servera
while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; doneNo 2. servera
while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; doneNo 3. servera
while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; doneNo 4. servera
while true; do ab -H "User-Agent: 4server" -c 100 -n 10 -t 10 http://vhost4/; sleep 1; donePÄrbaudÄ«sim datus Clickhouse
Dodieties uz Clickhouse
clickhouse-client -h 172.26.10.109 -mSQL vaicÄjuma veikÅ”ana
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 ā ā
āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāā“āāāāāāāāāā“āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāā“āāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāUzziniet Clickhouse galdu izmÄrus
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;Noskaidrosim, cik daudz baļķu aizÅÄma Clickhouse.

ŽurnÄlu tabulas izmÄrs ir 857.19 MB.

To paÅ”u datu lielums Elasticsearch rÄdÄ«tÄjÄ ir 4,5 GB.
Ja parametros nenorÄdÄ«siet datus vektorÄ, Clickhouse aizÅem 4500/857.19 = 5.24 reizes mazÄk nekÄ Elasticsearch.
VektorÄ pÄc noklusÄjuma tiek izmantots saspieÅ”anas lauks.
Telegram tÄrzÄÅ”ana ar
Telegram tÄrzÄÅ”ana ar
Telegrammas tÄrzÄÅ”ana ar ""
Avots: www.habr.com
