Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

Vector, แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก, แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“, แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

โ†’ Github

Rust-แƒ˜แƒก แƒ”แƒœแƒแƒ–แƒ” แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜, แƒแƒœแƒแƒšแƒแƒ’แƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ RAM-แƒ˜แƒก แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒฎแƒแƒกแƒ˜แƒแƒ—แƒ“แƒ”แƒ‘แƒ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ“แƒ˜แƒ“แƒ˜ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ”แƒ—แƒ›แƒแƒ‘แƒ แƒกแƒ˜แƒกแƒฌแƒแƒ แƒ”แƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก, แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ’แƒแƒ›แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก.

แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒฃแƒšแƒแƒ“, Vector แƒแƒ แƒ˜แƒก แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ˜แƒก แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฆแƒ”แƒ‘แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒ˜ แƒแƒœ แƒ›แƒ”แƒขแƒ˜แƒกแƒ’แƒแƒœ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜, แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ  แƒ•แƒ แƒชแƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” แƒ’แƒแƒ แƒ“แƒแƒฅแƒ›แƒœแƒ”แƒ‘แƒ˜, แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒ”แƒ แƒ— แƒแƒœ แƒ›แƒ”แƒขแƒ—แƒแƒœ แƒกแƒแƒœแƒ˜แƒแƒฆแƒ•แƒ แƒ”แƒ”แƒ‘แƒ˜.

แƒ•แƒ”แƒฅแƒขแƒแƒ แƒ˜ แƒแƒ แƒ˜แƒก filebeat-แƒ˜แƒกแƒ แƒ“แƒ logstash-แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒแƒก แƒแƒ แƒ˜แƒ•แƒ” แƒ แƒแƒšแƒจแƒ˜ (แƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ), แƒ›แƒแƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ˜ แƒแƒœแƒšแƒแƒ˜แƒœแƒ˜.

แƒ—แƒฃ Logstash-แƒจแƒ˜ แƒฏแƒแƒญแƒ•แƒ˜ แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒ›แƒแƒ•แƒแƒšแƒ˜ โ†’ แƒคแƒ˜แƒšแƒขแƒ แƒ˜ โ†’ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ•แƒ”แƒฅแƒขแƒแƒ แƒจแƒ˜ แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜ โ†’ แƒ’แƒแƒ แƒ“แƒแƒฅแƒ›แƒœแƒ˜แƒก โ†’ แƒœแƒ˜แƒŸแƒแƒ แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜.

แƒ”แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ แƒ•แƒ˜แƒแƒฉแƒ”แƒกแƒšแƒแƒ• แƒ แƒแƒฎแƒ˜แƒœแƒกแƒ™แƒ˜. แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก geoip แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก. แƒจแƒ˜แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒ“แƒแƒœ แƒ’แƒ”แƒแƒ˜แƒžแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ•แƒ”แƒฅแƒขแƒแƒ แƒ›แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒแƒฃแƒจแƒ•แƒ.

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-แƒ˜แƒก แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก (แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜) โ†’ แƒ•แƒ”แƒฅแƒขแƒแƒ แƒ˜ (แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ | แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ แƒขแƒงแƒ›แƒ) โ†’ แƒ•แƒ”แƒฅแƒขแƒแƒ แƒ˜ (แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ | Logstash) โ†’ แƒชแƒแƒšแƒ™แƒ” Clickhouse-แƒจแƒ˜ แƒ“แƒ แƒชแƒแƒšแƒ™แƒ” Elasticsearch-แƒจแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— 4 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒ•แƒšแƒ˜แƒ— 3 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜.

Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

แƒกแƒฅแƒ”แƒ›แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒกแƒ”แƒ—แƒ˜แƒ.

แƒ’แƒแƒ›แƒแƒ แƒ—แƒ”แƒ— Selinux แƒงแƒ•แƒ”แƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
reboot

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— HTTP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒขแƒแƒ แƒก + แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”

แƒ แƒแƒ’แƒแƒ แƒช HTTP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒขแƒแƒ แƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— nodejs-stub-server แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ›แƒแƒฅแƒกแƒ˜แƒ› แƒ˜แƒ’แƒœแƒแƒขแƒ”แƒœแƒ™แƒ

Nodejs-stub-server-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก rpm. แƒแƒฅ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ‘แƒ แƒฃแƒœแƒ˜ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. rpm แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Fedora Copr

แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— 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-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ›แƒแƒฃแƒกแƒ›แƒ˜แƒœแƒแƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜ /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.

Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ”, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ 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 แƒแƒ•แƒขแƒแƒกแƒขแƒแƒ แƒขแƒจแƒ˜

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"}}' 

แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก Vector แƒ แƒแƒ’แƒแƒ แƒช Logstash-แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ•แƒšแƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” 2

yum install -y https://packages.timber.io/vector/0.9.X/vector-x86_64.rpm mc httpd-tools screen

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— Vector, แƒ แƒแƒ’แƒแƒ แƒช 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 แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒ•แƒ˜แƒแƒฉแƒ”แƒกแƒšแƒแƒ• แƒ แƒแƒฎแƒ˜แƒœแƒกแƒ™แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ›แƒชแƒ˜แƒ แƒ” 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 --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;
    }
}

แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ˜ (แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก 172.26.10.106 ip, แƒกแƒแƒ“แƒแƒช nginx แƒแƒ แƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜) แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก /etc/hosts แƒคแƒแƒ˜แƒšแƒจแƒ˜:

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

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ—แƒ•แƒ˜แƒ—แƒแƒœ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— Vector

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 แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ (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"

แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒ•แƒ”แƒฅแƒขแƒแƒ แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒฏแƒ’แƒฃแƒคแƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒแƒœ แƒจแƒ”แƒซแƒšแƒแƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, nginx in 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-แƒ˜แƒก แƒกแƒแƒแƒ แƒ˜แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒœแƒ˜แƒจแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ แƒแƒ’แƒแƒ  แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒแƒ— แƒ”แƒ™แƒ แƒแƒœแƒ—แƒแƒœ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ›แƒฃแƒฎแƒšแƒ˜.

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ

while true; do ab -H "User-Agent: 1server" -c 100 -n 10 -t 10 http://vhost1/; sleep 1; done

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ

while true; do ab -H "User-Agent: 2server" -c 100 -n 10 -t 10 http://vhost2/; sleep 1; done

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ

while true; do ab -H "User-Agent: 3server" -c 100 -n 10 -t 10 http://vhost3/; sleep 1; done

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ

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-แƒจแƒ˜.

Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒแƒ 857.19 แƒ›แƒ‘.

Nginx json แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Vector-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Clickhouse-แƒกแƒ แƒ“แƒ Elasticsearch-แƒจแƒ˜

แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒจแƒ˜ Elasticsearch-แƒจแƒ˜ แƒแƒ แƒ˜แƒก 4,5 GB.

แƒ—แƒฃ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ แƒแƒ  แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ•แƒ”แƒฅแƒขแƒแƒ แƒจแƒ˜, Clickhouse แƒ˜แƒฆแƒ”แƒ‘แƒก 4500/857.19 = 5.24-แƒฏแƒ”แƒ  แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒก, แƒ•แƒ˜แƒ“แƒ แƒ” Elasticsearch-แƒจแƒ˜.

แƒ•แƒ”แƒฅแƒขแƒแƒ แƒจแƒ˜, แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“.

Telegram แƒฉแƒแƒขแƒ˜ แƒ›แƒ˜แƒ”แƒ  clickhouse
Telegram แƒฉแƒแƒขแƒ˜ แƒ›แƒ˜แƒ”แƒ  แƒ”แƒšแƒแƒกแƒขแƒ˜แƒฃแƒ แƒ˜ แƒซแƒ”แƒ‘แƒœแƒ
Telegram แƒฉแƒแƒขแƒ˜ แƒ›แƒ˜แƒ”แƒ  "แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒžแƒแƒกแƒขแƒ˜"

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ