แแแแฅแกแแ แแแแฃแแแแ, MKB-แก แกแแแแคแแ แแแชแแ แขแแฅแแแแแแแแแแก แแแ แแฅแขแแ แแขแแก แแแกแขแแแชแแฃแ แ แแแแกแแฎแฃแ แแแแก แแ แฎแแแแก แแแแแแขแแแชแแแก แชแแแขแ แแก แฎแแแแซแฆแแแแแแ
แ แแแแ แช ELK แกแขแแแแก แแแขแแ แแแขแแแ (ElasticSearch, Logstash, Kibana), แฉแแแ แแแแแแแแ แแแแแแแก ClickHouse แแแแแชแแแแ แแแแแก แแแแแงแแแแแแแ, แ แแแแ แช แแแแแชแแแแแแก แจแแกแแแแฎแแ แแฃแ แแแแแแแกแแแแก.
แแ แกแขแแขแแแจแ แแแแแแ แแแกแแฃแแ แแ ClickHouse แแแแแชแแแแ แแแแแก แแแแแงแแแแแแก แฉแแแแก แแแแแชแแแแแแแแ แแ แกแแแแแแขแ แแแแ แแชแแแก แฌแแแแกแฌแแ แจแแแแแแแแ. แแแฃแงแแแแแแแแ แฃแแแ แแฆแแแแจแแแก, แ แแ แจแแแแแแแ แจแแแแแแญแแแแ แแงแ.
แจแแแแแแ, แฉแแแ แฃแคแ แ แแแขแแแฃแ แแ แแฆแแฌแแ แ, แแฃ แ แแแแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ แฉแแแแ แกแแกแขแแแ แแ แ แ แแแแแแแแแขแแแแกแแแ แจแแแแแแ. แแแแ แแ แแฎแแ แแกแฃแ แก แชแแขแ แแแกแแฃแแ แ แแ แแแแแชแแแแ แแแแแก แแแแแแแแแแแ แแ แแแแแ, แแฃ แ แแขแแ แฆแแ แก แงแฃแ แแแฆแแแแก แแแฅแชแแแ. ClickHouse แแแแแชแแแแ แแแแ แแ แแก Yandex-แแก แแแฆแแแ แฎแแ แแกแฎแแก แแแแแแขแแแฃแ แ แกแแแขแแแแแ แแแแแชแแแแ แแแแ. แแก แแแแแแงแแแแแ Yandex-แแก แกแแ แแแกแแแจแ, แแแแแแแแ แแแแแ แแก แแ แแก Yandex.Metrica-แก แซแแ แแแแแ แแแแแชแแแแ แกแแชแแแ. แฆแแ แแแแแก แกแแกแขแแแ, แฃแคแแกแ. แแแแแแแแแ แแแแก แแแแแกแแแ แแกแแ, แแ แงแแแแแแแแก แแแแแขแแ แแกแแแแ แ แแแแ แแแแแฎแแ แชแแแแแก แแก, แ แแแแแ แคแแแขแแกแขแแแฃแ แแ แแแแ แแแแแชแแแแแแ. แแ แแแแแ Metrica-แก แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแ แซแแแแแ แแแฅแแแแ แแ แกแฌแ แแคแแ. แแ แแแแแชแแแแ แแแแแก แแแ แแแแ แแแชแแแแแกแแก แจแแแแแญแแแแแแ แ แฉแแแ: โแแแ แแ, แแแแแก แแ แแแแแก! แจแแฅแแแแแ แฎแแแฎแแกแแแแก! แแแกแขแแแแชแแแก แแ แแชแแกแแแแ แแแฌแงแแแฃแแ แแ แแแแฎแแแแแแแก แแแแแแแแแ แแแแแแแ แแแฃแแ.
แแ แแแแแชแแแแ แแแแแก แแฅแแก แซแแแแแ แแแแแแ แจแแกแแแแก แแแ แแแ แ. แกแแจแฃแแแ แแแแแก แแแแแแแแแ แกแแช แแ แจแแฃแซแแแ แแแแแแกแขแแแแ แแก แแก แแแแแชแแแแ แแแแ แ แแแแแแแแ แฌแฃแแจแ แแ แแแแฌแงแแก แแแกแ แแแแแงแแแแแ. แงแแแแแคแแ แ แแแ แแแแแแ แแฃแจแแแแก. แแ แแแแแแแแแแกแแช แแ, แ แแแแแแแช แแฎแแแแ Linux-แจแ, แจแแฃแซแแแแ แกแฌแ แแคแแ แแแฃแแแแแแแแแ แแแกแขแแแแชแแแก แแ แจแแแกแ แฃแแแ แฃแแแ แขแแแแกแ แแแแ แแชแแแแ. แแฃ แแแ แ, แกแแขแงแแแแแ Big Data, Hadoop, Google BigTable, HDFS, แฉแแแฃแแแแ แแ แแแแแแแแแ แก แฐแฅแแแแ แฌแแ แแแแแแแ, แ แแ แแก แแงแ แ แแแแแแแแ แขแแ แแแแแขแ, แแแขแแแแแขแ, แ แแ แแแแแแ แแ แแแแแแแแแแ แแแแแแแแฃแแ แแงแ แแ แกแแกแขแแแแแแก แแแ แแแแขแ แแแจแ แแ แแแแแแแแ แแแแจแ, แแแจแแ ClickHouse-แแก แแแกแแแแกแแแ แแ แแแ. แแแแแชแแแแ แแแแแจแ, แฉแแแ แแแแแฆแแ แแแ แขแแแ, แแแกแแแแแ แแแกแขแ แฃแแแแขแ, แ แแแแแแแช แจแแแแซแแแแ แแแแฎแกแแแ แแแ แ แแแฃแฌแแแแแแแ แแแแชแแแแแแก แกแแแฅแขแ แ. แแแกแขแแแแชแแแก แแฎแแแแ แแ แแ แกแแแแแแ แกแแจแฃแแแ แแแแฅแแแ แแ แฎแฃแแ แฌแฃแแ แกแญแแ แแแแ. แแแฃ, แฉแแแ แแแแแฆแแ แแกแแแ แแแแแชแแแแ แแแแ, แ แแแแ แแชแแ, แแแแแแแแแ, MySql, แแแแ แแ แแฎแแแแ แแแแแแ แแแแแ แฉแแแแฌแแ แแก แจแแกแแแแฎแแ! แแแ แแแแฃแแ แกแฃแแแ -แแ แฅแแแแ แ SQL แแแแ. แแแแฅแแก แฎแแแฎแก แแแแแกแชแแก แฃแชแฎแแแแแแแขแแแแแแก แแแ แแฆแ.
แฉแแแแ แฎแ-แขแงแแก แกแแกแขแแแแก แจแแกแแฎแแ
แแแคแแ แแแชแแแก แจแแกแแแ แแแแแแแ แแแแแแงแแแแแ แกแขแแแแแ แขแฃแแ แคแแ แแแขแแก แแแ แแแแแแแชแแแแแก IIS แแฃแ แแแแแก แคแแแแแแ (แแแแแแแ แฉแแแ แแกแแแ แแแแแแแแแแแ แแแแแแแชแแแแแก แแฃแ แแแแแแก, แแแแ แแ แกแแแแแแขแ แแขแแแแ แแแแแแ แ แแแแแแแ IIS แแฃแ แแแแแแแก แจแแแ แแแแแ).
แกแฎแแแแแกแฎแแ แแแแแแแก แแแแ, แฉแแแ แแแ แจแแแซแแแแ ELK แกแขแแแแก แกแ แฃแแแ แแแขแแแแแ แแ แแแแ แซแแแแแ LogStash แแ Filebeat แแแแแแแแแขแแแแก แแแแแงแแแแแแก, แ แแแแแแแแช แแแ แแแ แแแแแขแแแชแ แแแแ แแ แแฃแจแแแแก แกแแแแแแ แกแแแแแแแ แแ แแ แแแแแแแ แแแแ.
แญแ แแก แแแแแแ แกแฅแแแ แแแฉแแแแแแแ แฅแแแแแ แแแชแแแฃแ แคแแแฃแ แแจแ:
ClickHouse แแแแแชแแแแ แแแแแจแ แแแแแชแแแแแแก แฉแแฌแแ แแก แแแฎแแกแแแแแแแแแ แฉแแแแฌแแ แแแแก แแจแแแแแแ (แฌแแแจแ แแ แแฎแแ) แฉแแกแแ แแแ แแแ แขแแแแจแ. แแก, แ แแแแ แช แฉแแแก, แงแแแแแแ โแแ แแแแแแฃแ แโ แแแฌแแแแ, แ แแแแแกแแช แฌแแแฌแงแแแแแ, แ แแแแกแแช แแแ แแแแแ แแแแแชแแแ ClickHouse แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแแก: แกแฅแแแ แชแแขแ แฃแคแ แ แ แแฃแแ แฎแแแแ.
LogStash-แแก แแแแฃแแ, แ แแแแแแช แแแ แแแแแ แแแแแกแแแก แแแแแชแแแแแก ClickHouse-แจแ, แแฅ แซแแแแแ แแแแฎแแแ แ. แแก แแแแแแแแแขแ แแแแแแแแแฃแแแ แแแแแ แกแแ แแแ แแ, แ แแแแ แช แแแแแ แแแแแชแแแแ แแแแ. แแกแ แ แแ, แแแแแแแ แ แแ แแแฅแแแ, แแ แแ แแก แ แแแแแแแแแแฃแแ แแแแก แแแแแแแแ, แแแแ แแ แแ แแฅแขแแแฃแแ แแแแแกแแแ แแกแแ, แแกแ, แ แแ แแ แจแแแฅแแแแก แชแแแแ แกแแ แแแ แแแ, แ แแแแกแแช แแก แแแแแแแแแฃแแแ แแแแแ แกแแ แแแ แแ. แฉแแแ แแ แแแคแแฅแกแแ แแแฃแแ แ แแแแ แฌแแ แฃแแแขแแแแแแ แแ แ แแกแฃแ แกแแก แแแแคแแแฅแขแ แแแแแชแแแแ แแแแแกแแแ. แแแ แแ แแแแกแ, แฃแแแ แแฆแแแแจแแแก, แ แแ แแแแแแแขแก แแฅแแก แฎแแแแฎแแแ แชแแแก แแแฅแแแแแแ แจแแชแแแแแก แจแแแแฎแแแแแจแ. แแ แจแแชแแแแแแแก แจแแแแฎแแแแแจแ, แแแแแแแขแ แฌแแ แก แแแกแแแ แแแแแชแแแแแแก แแแ แขแแแก, แ แแแแแก แฉแแกแแแช แจแแฃแซแแแแแแแ (แคแแแแแก แคแแ แแแขแ แแแกแแฎแแ แฎแแแแแแ: แ แแแแฅแขแแ แแแแก แจแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแ แขแแแแ แฉแแกแแแ แจแแกแฌแแ แแแฃแแ แแแ แขแแ clickhouse-client-แแก แแแแแงแแแแแแ).
แกแฅแแแแจแ แแแแแงแแแแแฃแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แกแ แฃแแ แกแแ แแแชแแแฃแแแ แชแฎแ แแแจแ:
แแแแแงแแแแแฃแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แกแแ
แกแแฎแแแ
แแฆแฌแแ แ
แกแแแแกแขแ แแแฃแชแแ แแแฃแแ
NGINX
แกแแแแ แแกแแแ แ แแ แแฅแกแ แแแ แขแแแแก แฌแแแแแแก แจแแแฆแฃแแแแกแ แแ แแแขแแ แแแแชแแแก แแ แแแแแแแแแกแแแแก
แแแแแแแ แแ แแแแแแงแแแแแ แกแฅแแแแจแ
FileBeat
แคแแแแแแแก แแฃแ แแแแแแแก แแแแแชแแแ.
logstash
แแฃแ แแแแแก แจแแแแ แแแแแแแ.
แแแแแแงแแแแแ แแฃแ แแแแแแแก แจแแกแแแ แแแแแแแ FileBeat-แแแ, แแแ แแแแ แแฃแ แแแแแแแก แจแแกแแแ แแแแแแแ RabbitMQ แ แแแแแแ (แกแแ แแแ แแแแกแแแแก, แ แแแแแแแช DMZ-แจแแ.)
Logstash-output-clickhouse
Loagstash แแแแฃแแ, แแฃแ แแแแแแแก ClickHouse แแแแแชแแแแ แแแแแจแ แฏแแฃแคแฃแ แแ แแแแแกแแขแแแแ
/usr/share/logstash/bin/logstash-plugin install logstash-output-clickhouse
/usr/share/logstash/bin/logstash-plugin install logstash-filter-prune
/usr/share/logstash/bin/logstash-plugin install logstash-filter-multiline
clickhouse
แแฃแ แแแแแก แจแแแแฎแแ
แฒจแแแแจแแแ. 2018 แฌแแแก แแแแแกแขแแแแ, Yandex-แแก แกแแชแแแจแ แแแแแฉแแแ RHEL-แแก โแแแ แแแแฃแ แโ rpm-แแก แแแแแแแแแแ, แแกแ แ แแ แแฅแแแ แจแแแแซแแแแ แกแชแแแแ แแแแ แแแแแงแแแแแ. แแแกแขแแแแชแแแก แแ แแก แฉแแแ แแแงแแแแแแแ Altinity-แแก แแแแ แแจแแแแแฃแ แแแแแขแแแก.
แแ แแคแแแ
แแฃแ แแแแแก แแแแฃแแแแแแชแแ. แแแคแแแแก แแแงแแแแแ
Redhat & Centos (64 แแแขแ) - แฃแแฎแแแกแ แแแ แกแแ
ClickHouse แแแแแชแแแแ แฌแงแแ แ Grafana 4.6+-แแกแแแแก
แแแแฃแแ Grafana-แกแแแแก ClickHouse แแแแแชแแแแ แฌแงแแ แแแ
logstash
แฉแแฌแแ แแ แ แแฃแขแแ แ FileBeat-แแแ RabbitMQ แ แแแจแ.
แฒจแแแแจแแแ. แกแแแฌแฃแฎแแ แแ, FileBeat-แก แแ แแฅแแก แแแแแแแแแแ แแแ แแแแแ RabbitMQ, แแแแขแแ แกแแญแแ แแ แจแฃแแแแแฃแ แ แแแฃแแ Logstash-แแก แกแแฎแแ
แแฃแ แแฆแแแ MQ
แจแแขแงแแแแแแแแก แ แแแ. แแก แแ แแก แแฃแ แแแแแก แแฃแคแแ แ DMZ-แจแ
Erlang Runtime (แแฃแชแแแแแแแแ RabbitMQ)
แแแจแแแแแก แแ แ. แกแแญแแ แแ RabbitMQ แแฃแจแแแแแกแแแแก
แกแแ แแแ แแก แแแแคแแแฃแ แแชแแ ClickHouse แแแแแชแแแแ แแแแแจแ แฌแแ แแแแแแแแแแ แจแแแแแ แชแฎแ แแแจแ:
แกแแฎแแแ
แฆแแ แแแฃแแแแ
แจแแแแจแแแ
แแแแคแแแฃแ แแชแแ
HDD: 40 แแ
แแแแ แแขแแฃแแ แแแฎแกแแแ แแแ: 8GB
แแ แแชแแกแแ แ: Core 2 2Ghz
แแฃแชแแแแแแแแ แงแฃแ แแแฆแแแ แแแแฅแชแแแ ClickHouse แแแแแชแแแแ แแแแแก แแฃแจแแแแแก แ แฉแแแแแก (
แแแแแแ แกแแกแขแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ
แแแแ แแชแแฃแแ แกแแกแขแแแ: Red Hat Enterprise Linux แกแแ แแแ แ (Maipo)
JRE (Java 8)
แ แแแแ แช แฎแแแแแ, แแก แแ แแก แฉแแแฃแแแแ แแแ แกแแแฃแจแแ แกแแแแฃแ แ.
แแแ แแแแก แจแแกแแแแฎแ แชแฎแ แแแแก แกแขแ แฃแฅแขแฃแ แ แแกแแแแ:
log_web.sql
CREATE TABLE log_web (
logdate Date,
logdatetime DateTime CODEC(Delta, LZ4HC),
fld_log_file_name LowCardinality( String ),
fld_server_name LowCardinality( String ),
fld_app_name LowCardinality( String ),
fld_app_module LowCardinality( String ),
fld_website_name LowCardinality( String ),
serverIP LowCardinality( String ),
method LowCardinality( String ),
uriStem String,
uriQuery String,
port UInt32,
username LowCardinality( String ),
clientIP String,
clientRealIP String,
userAgent String,
referer String,
response String,
subresponse String,
win32response String,
timetaken UInt64
, uriQuery__utm_medium String
, uriQuery__utm_source String
, uriQuery__utm_campaign String
, uriQuery__utm_term String
, uriQuery__utm_content String
, uriQuery__yclid String
, uriQuery__region String
) Engine = MergeTree()
PARTITION BY toYYYYMM(logdate)
ORDER BY (fld_app_name, fld_app_module, logdatetime)
SETTINGS index_granularity = 8192;
แฉแแแ แแแงแแแแแ แแแแฃแแแกแฎแแแ แแแงแแคแแก (แแแแจแ) แแ แแแแแฅแกแแก แแ แแแฃแแแ แแแแก. แงแแแแ แแแแ แแ แแฅแขแแแฃแแแ แจแแแกแแแแแแแ IIS แแฃแ แแแแแก แฉแแแแฌแแ แแแก http แแแแฎแแแแแแแก แจแแกแแแแกแแแแก. แชแแแแ แแฆแแแแจแแแแ, แ แแ แแ แกแแแแแก แชแแแแแฃแแ แแแแแแ utm-แขแแแแแแก แจแแกแแแแฎแแ (แแกแแแ แแแแแแแแแแ แชแฎแ แแแจแ แฉแแกแแแก แแขแแแแ แจแแแแแฎแแแก แกแขแ แแฅแแแแก แแแแแแแ).
แแกแแแ, แชแฎแ แแแก แแแแแแขแ แ แแแแแแแแ แกแแกแขแแแแก แแแแ แกแแกแขแแแแแแก, แแแแแแแแแขแแแแก, แกแแ แแแ แแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แจแแกแแแแฎแแ. แแฎแแแแ แฅแแแแแ แแแชแแแฃแแ แชแฎแ แแแ แแ แแแแแแแก แแฆแฌแแ แแกแแแแก. แแ แ แชแฎแ แแแจแ แฉแแแ แแแแแฎแแแ แแฃแ แแแแแแก แ แแแแแแแแ แกแแกแขแแแแกแแแแก.
แกแแฎแแแ
แแฆแฌแแ แ
แแแแแแแแ
fld_app_name
แแแแแแแชแแแก/แกแแกแขแแแแก แกแแฎแแแ
แแแฅแแแแ แแแแจแแแแแแแแแ:
- site1.domain.com แแแ แ แกแแแขแ 1
- site2.domain.com แแแ แ แกแแแขแ 2
- interior-site1.domain.local แจแแแ แกแแแขแ 1
site1.domain.com
fld_app_module
แกแแกแขแแแแก แแแแฃแแ
แแแฅแแแแ แแแแจแแแแแแแแแ:
- แแแ โ แกแแแขแ
- svc - แแแ แกแแแขแแก แกแแ แแแกแ
- intgr - แแแขแแแ แแชแแแก แแแ แกแแ แแแกแ
- bo - แแแแแแแกแขแ แแขแแ แ (BackOffice)
แแแ
fld_website_name
แกแแแขแแก แกแแฎแแแ IIS-แจแ
แ แแแแแแแแ แกแแกแขแแแ แจแแแซแแแแ แแแแแแแกแแแก แแ แ แกแแ แแแ แแ, แแ แแฃแแแแช แแ แแ แกแแกแขแแแแก แแแแฃแแแก แ แแแแแแแแ แแแแแแแแ
แแแ แแแแแแ แ
fld_server_name
แฒกแแ แแแ แแก แกแแฎแแแ
web1.domain.com
fld_log_file_name
แแแ แกแแ แแแ แแ แแฃแ แแแแแก แคแแแแแกแแแ
C:inetpublogsLogFiles
W3SVC1u_ex190711.log
แแก แกแแจแฃแแแแแแก แแแซแแแแ แแคแแฅแขแฃแ แแ แจแแฅแแแแ แแ แแคแแแแแ Grafana-แจแ. แแแแแแแแแ, แแแฎแแ แแแแฎแแแแแแ แแแแแ แแขแฃแแ แกแแกแขแแแแก แฌแแแ แแแฌแแแแแแ. แแก แฐแแแแก แกแแแขแแก แแ แแชแฎแแแแก Yandex.Metrica-แจแ.
แแฅ แแแชแแแฃแแแ แ แแแแแแแแ แกแขแแขแแกแขแแแ แแแแแชแแแแ แแแแแก แแแแแงแแแแแแก แจแแกแแฎแแ แแ แ แแแแก แแแแแแแแแแแจแ.
แกแแกแขแแแแแแก แแ แแแแ แแแแแแแแแขแแแแก แแแฎแแแแแ แแแงแแคแแแ แฉแแแแฌแแ แแแแก แ แแแแแแแแ
SELECT
fld_app_name,
fld_app_module,
count(fld_app_name) AS rows_count
FROM log_web
GROUP BY
fld_app_name,
fld_app_module
WITH TOTALS
ORDER BY
fld_app_name ASC,
rows_count DESC
โโfld_app_nameโโโโโโฌโfld_app_moduleโโฌโrows_countโโ
โ site1.domain.ru โ web โ 131441 โ
โ site2.domain.ru โ web โ 1751081 โ
โ site3.domain.ru โ web โ 106887543 โ
โ site3.domain.ru โ svc โ 44908603 โ
โ site3.domain.ru โ intgr โ 9813911 โ
โ site4.domain.ru โ web โ 772095 โ
โ site5.domain.ru โ web โ 17037221 โ
โ site5.domain.ru โ intgr โ 838559 โ
โ site5.domain.ru โ bo โ 7404 โ
โ site6.domain.ru โ web โ 595877 โ
โ site7.domain.ru โ web โ 27778858 โ
โโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Totals:
โโfld_app_nameโโฌโfld_app_moduleโโฌโrows_countโโ
โ โ โ 210522593 โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
11 rows in set. Elapsed: 4.874 sec. Processed 210.52 million rows, 421.67 MB (43.19 million rows/s., 86.51 MB/s.)
แแแกแแแ แแ แกแแแฃแแ แแแแแชแแแแแแก แ แแแแแแแแ
SELECT
formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed,
formatReadableSize(sum(data_compressed_bytes)) AS compressed,
sum(rows) AS total_rows
FROM system.parts
WHERE table = 'log_web'
โโuncompressedโโฌโcompressedโโฌโtotal_rowsโโ
โ 54.50 GiB โ 4.86 GiB โ 211427094 โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโ
1 rows in set. Elapsed: 0.035 sec.
แแแแแชแแแแ แจแแแฃแแจแแแก แฎแแ แแกแฎแ แกแแแขแแแจแ
SELECT
name,
formatReadableSize(data_uncompressed_bytes) AS uncompressed,
formatReadableSize(data_compressed_bytes) AS compressed,
data_uncompressed_bytes / data_compressed_bytes AS compress_ratio
FROM system.columns
WHERE table = 'log_web'
โโnameโโโโโโโโโโโโโโโโโโโโฌโuncompressedโโฌโcompressedโโฌโโโโโcompress_ratioโโ
โ logdate โ 401.53 MiB โ 1.80 MiB โ 223.16665968777315 โ
โ logdatetime โ 803.06 MiB โ 35.91 MiB โ 22.363966401202305 โ
โ fld_log_file_name โ 220.66 MiB โ 2.60 MiB โ 84.99905736932571 โ
โ fld_server_name โ 201.54 MiB โ 50.63 MiB โ 3.980924816977078 โ
โ fld_app_name โ 201.17 MiB โ 969.17 KiB โ 212.55518183686877 โ
โ fld_app_module โ 201.17 MiB โ 968.60 KiB โ 212.67805817411906 โ
โ fld_website_name โ 201.54 MiB โ 1.24 MiB โ 162.7204926761546 โ
โ serverIP โ 201.54 MiB โ 50.25 MiB โ 4.010824061219731 โ
โ method โ 201.53 MiB โ 43.64 MiB โ 4.617721053304486 โ
โ uriStem โ 5.13 GiB โ 832.51 MiB โ 6.311522291936919 โ
โ uriQuery โ 2.58 GiB โ 501.06 MiB โ 5.269731450124478 โ
โ port โ 803.06 MiB โ 3.98 MiB โ 201.91673864241824 โ
โ username โ 318.08 MiB โ 26.93 MiB โ 11.812513794583598 โ
โ clientIP โ 2.35 GiB โ 82.59 MiB โ 29.132328640073343 โ
โ clientRealIP โ 2.49 GiB โ 465.05 MiB โ 5.478382297052563 โ
โ userAgent โ 18.34 GiB โ 764.08 MiB โ 24.57905114484208 โ
โ referer โ 14.71 GiB โ 1.37 GiB โ 10.736792723669906 โ
โ response โ 803.06 MiB โ 83.81 MiB โ 9.582334090987247 โ
โ subresponse โ 399.87 MiB โ 1.83 MiB โ 218.4831068635027 โ
โ win32response โ 407.86 MiB โ 7.41 MiB โ 55.050315514606815 โ
โ timetaken โ 1.57 GiB โ 402.06 MiB โ 3.9947395692010637 โ
โ uriQuery__utm_medium โ 208.17 MiB โ 12.29 MiB โ 16.936148912472955 โ
โ uriQuery__utm_source โ 215.18 MiB โ 13.00 MiB โ 16.548367623199912 โ
โ uriQuery__utm_campaign โ 381.46 MiB โ 37.94 MiB โ 10.055156353418509 โ
โ uriQuery__utm_term โ 231.82 MiB โ 10.78 MiB โ 21.502540454070672 โ
โ uriQuery__utm_content โ 441.34 MiB โ 87.60 MiB โ 5.038260760449327 โ
โ uriQuery__yclid โ 216.88 MiB โ 16.58 MiB โ 13.07721335008116 โ
โ uriQuery__region โ 204.35 MiB โ 9.49 MiB โ 21.52661903446796 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโ
28 rows in set. Elapsed: 0.005 sec.
แแแแแงแแแแแฃแแ แแแแแแแแแขแแแแก แแฆแฌแแ แ
FileBeat. แคแแแแแแแก แแฃแ แแแแแแแก แแแแแขแแแ
แแก แแแแแแแแแขแ แแแแแงแฃแ แก แแแแแแแแก แแแกแแแ แแฃแ แแแแแก แคแแแแแแแก แชแแแแแแแแแก แแ แแแคแแ แแแชแแแก แแแแแกแชแแแก LogStash-แก. แแแแแกแขแแแแ แแแฃแแแ แงแแแแ แกแแ แแแ แแ, แกแแแแช แแฌแแ แแแ แแฃแ แแแแแก แคแแแแแแ (แฉแแแฃแแแแ แแ IIS). แแฃแจแแแแก แแฃแแแก แ แแแแแจแ (แแแฃ แแแแแกแชแแแก แแฎแแแแ แแแแแขแแแฃแ แฉแแแแฌแแ แแแก แคแแแแจแ). แแแแ แแ แชแแแแ, แแแกแ แแแแคแแแฃแ แแชแแ แจแแกแแซแแแแแแแ แแแแแ แคแแแแแแแก แแแแแกแแขแแแแ. แแก แกแแกแแ แแแแแแ, แ แแแแกแแช แแญแแ แแแแแ แฌแแแ แแแแแแแก แแแแแชแแแแแแก แฉแแแแขแแแ แแแ. แฃแแ แแแแ แฉแแแแ แแฃแ แแแแแก แคแแแแ แกแแฅแแฆแแแแแจแ แแ แแก แฌแแแแแแฎแแแก แแแก แแแแแแแแ.
แ แแแแกแแช แกแแ แแแกแ แจแแฉแแ แแแฃแแแ, แแแแแชแแแแแ แแฆแแ แแแแแแแก แกแแชแแแจแ.
แแแแคแแแฃแ แแชแแแก แแแแแแแแ แแกแ แแแแแแงแฃแ แแแ:
filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- C:/inetpub/logs/LogFiles/W3SVC1/*.log
exclude_files: ['.gz$','.zip$']
tail_files: true
ignore_older: 24h
fields:
fld_server_name: "site1.domain.ru"
fld_app_name: "site1.domain.ru"
fld_app_module: "web"
fld_website_name: "web-main"
- type: log
enabled: true
paths:
- C:/inetpub/logs/LogFiles/__Import/access_log-*
exclude_files: ['.gz$','.zip$']
tail_files: false
fields:
fld_server_name: "site2.domain.ru"
fld_app_name: "site2.domain.ru"
fld_app_module: "web"
fld_website_name: "web-main"
fld_logformat: "logformat__apache"
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
reload.period: 2s
output.logstash:
hosts: ["log.domain.com:5044"]
ssl.enabled: true
ssl.certificate_authorities: ["C:/filebeat/certs/ca.pem", "C:/filebeat/certs/ca-issuing.pem"]
ssl.certificate: "C:/filebeat/certs/site1.domain.ru.cer"
ssl.key: "C:/filebeat/certs/site1.domain.ru.key"
#================================ Processors =====================================
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
logstash. แแฃแ แแแแแก แแแแแฅแขแแ แ
แแก แแแแแแแแแขแ แจแแฅแแแแแแ แแแแกแแแแก, แ แแ แแแแฆแแก แแฃแ แแแแแก แฉแแแแฌแแ แแแ FileBeat-แแแ (แแ RabbitMQ แ แแแแก แแแจแแแแแแ), แแแแแแแแแก แแ แฉแแกแแแก แแแ แขแแแแ ClickHouse แแแแแชแแแแ แแแแแจแ.
ClickHouse-แจแ แฉแแกแแ แแแแแ แแแแแแงแแแแแ Logstash-output-clickhouse แแแแฃแแ. Logstash แแแแฃแแก แแฅแแก แแแแฎแแแแแก แแแแแแแ แแแแแ แชแแแก แแแฅแแแแแแ, แแแแ แแ แ แแแฃแแแ แฃแแ แแแแแ แแแแ, แฃแแฏแแแแกแแ แแแแแ แจแแฌแงแแแขแแ แกแแ แแแกแ. แ แแแแกแแช แจแแฉแแ แแแแ, แจแแขแงแแแแแแแแแ แแแแ แแแแแแ RabbitMQ แ แแแจแ, แแกแ แ แแ, แแฃ แแแฉแแ แแแ แแแแ แฎแแแก แแแแแแแแแแแจแแ, แแแจแแ แฃแแฏแแแแกแแ แจแแแฉแแ แแ Filebeats แกแแ แแแ แแแแ. แกแฅแแแแจแ, แกแแแแช RabbitMQ แแ แแแแแแงแแแแแ (แแแแแแฃแ แฅแกแแแจแ, Filebeat แแแ แแแแแ แแแแแแแแก แแฃแ แแแแแแก Logstash-แจแ), Filebeats แแฃแจแแแแก แกแแแแแแ แแแกแแฆแแแ แแ แฃแกแแคแ แแฎแแ, แแแแขแแ แแแแแแแก แแแแแแแแแแ แแแฃแฌแแแแแแแแ แแแแแก แจแแแแแแแแก แแแ แแจแ.
แแแแคแแแฃแ แแชแแแก แแแแแแแแ แแกแ แแแแแแงแฃแ แแแ:
log_web__filebeat_clickhouse.conf
input {
beats {
port => 5044
type => 'iis'
ssl => true
ssl_certificate_authorities => ["/etc/logstash/certs/ca.cer", "/etc/logstash/certs/ca-issuing.cer"]
ssl_certificate => "/etc/logstash/certs/server.cer"
ssl_key => "/etc/logstash/certs/server-pkcs8.key"
ssl_verify_mode => "peer"
add_field => {
"fld_server_name" => "%{[fields][fld_server_name]}"
"fld_app_name" => "%{[fields][fld_app_name]}"
"fld_app_module" => "%{[fields][fld_app_module]}"
"fld_website_name" => "%{[fields][fld_website_name]}"
"fld_log_file_name" => "%{source}"
"fld_logformat" => "%{[fields][fld_logformat]}"
}
}
rabbitmq {
host => "queue.domain.com"
port => 5671
user => "q-reader"
password => "password"
queue => "web_log"
heartbeat => 30
durable => true
ssl => true
#ssl_certificate_path => "/etc/logstash/certs/server.p12"
#ssl_certificate_password => "password"
add_field => {
"fld_server_name" => "%{[fields][fld_server_name]}"
"fld_app_name" => "%{[fields][fld_app_name]}"
"fld_app_module" => "%{[fields][fld_app_module]}"
"fld_website_name" => "%{[fields][fld_website_name]}"
"fld_log_file_name" => "%{source}"
"fld_logformat" => "%{[fields][fld_logformat]}"
}
}
}
filter {
if [message] =~ "^#" {
drop {}
}
if [fld_logformat] == "logformat__iis_with_xrealip" {
grok {
match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IP:serverIP} %{WORD:method} %{NOTSPACE:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:userAgent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:win32response} %{NUMBER:timetaken} %{NOTSPACE:xrealIP} %{NOTSPACE:xforwarderfor}"]
}
} else {
grok {
match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IP:serverIP} %{WORD:method} %{NOTSPACE:uriStem} %{NOTSPACE:uriQuery} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clientIP} %{NOTSPACE:userAgent} %{NOTSPACE:referer} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:win32response} %{NUMBER:timetaken}"]
}
}
date {
match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ]
timezone => "Etc/UTC"
remove_field => [ "log_timestamp", "@timestamp" ]
target => [ "log_timestamp2" ]
}
ruby {
code => "tstamp = event.get('log_timestamp2').to_i
event.set('logdatetime', Time.at(tstamp).strftime('%Y-%m-%d %H:%M:%S'))
event.set('logdate', Time.at(tstamp).strftime('%Y-%m-%d'))"
}
if [bytesSent] {
ruby {
code => "event['kilobytesSent'] = event['bytesSent'].to_i / 1024.0"
}
}
if [bytesReceived] {
ruby {
code => "event['kilobytesReceived'] = event['bytesReceived'].to_i / 1024.0"
}
}
ruby {
code => "event.set('clientRealIP', event.get('clientIP'))"
}
if [xrealIP] {
ruby {
code => "event.set('clientRealIP', event.get('xrealIP'))"
}
}
if [xforwarderfor] {
ruby {
code => "event.set('clientRealIP', event.get('xforwarderfor'))"
}
}
mutate {
convert => ["bytesSent", "integer"]
convert => ["bytesReceived", "integer"]
convert => ["timetaken", "integer"]
convert => ["port", "integer"]
add_field => {
"clientHostname" => "%{clientIP}"
}
}
useragent {
source=> "useragent"
prefix=> "browser"
}
kv {
source => "uriQuery"
prefix => "uriQuery__"
allow_duplicate_values => false
field_split => "&"
include_keys => [ "utm_medium", "utm_source", "utm_campaign", "utm_term", "utm_content", "yclid", "region" ]
}
mutate {
join => { "uriQuery__utm_source" => "," }
join => { "uriQuery__utm_medium" => "," }
join => { "uriQuery__utm_campaign" => "," }
join => { "uriQuery__utm_term" => "," }
join => { "uriQuery__utm_content" => "," }
join => { "uriQuery__yclid" => "," }
join => { "uriQuery__region" => "," }
}
}
output {
#stdout {codec => rubydebug}
clickhouse {
headers => ["Authorization", "Basic abcdsfks..."]
http_hosts => ["http://127.0.0.1:8123"]
save_dir => "/etc/logstash/tmp"
table => "log_web"
request_tolerance => 1
flush_size => 10000
idle_flush_time => 1
mutations => {
"fld_log_file_name" => "fld_log_file_name"
"fld_server_name" => "fld_server_name"
"fld_app_name" => "fld_app_name"
"fld_app_module" => "fld_app_module"
"fld_website_name" => "fld_website_name"
"logdatetime" => "logdatetime"
"logdate" => "logdate"
"serverIP" => "serverIP"
"method" => "method"
"uriStem" => "uriStem"
"uriQuery" => "uriQuery"
"port" => "port"
"username" => "username"
"clientIP" => "clientIP"
"clientRealIP" => "clientRealIP"
"userAgent" => "userAgent"
"referer" => "referer"
"response" => "response"
"subresponse" => "subresponse"
"win32response" => "win32response"
"timetaken" => "timetaken"
"uriQuery__utm_medium" => "uriQuery__utm_medium"
"uriQuery__utm_source" => "uriQuery__utm_source"
"uriQuery__utm_campaign" => "uriQuery__utm_campaign"
"uriQuery__utm_term" => "uriQuery__utm_term"
"uriQuery__utm_content" => "uriQuery__utm_content"
"uriQuery__yclid" => "uriQuery__yclid"
"uriQuery__region" => "uriQuery__region"
}
}
}
แแแแกแแแแแแแ.yml
# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
- pipeline.id: log_web__filebeat_clickhouse
path.config: "/etc/logstash/log_web__filebeat_clickhouse.conf"
clickhouse. แแฃแ แแแแแก แจแแแแฎแแ
แงแแแแ แกแแกแขแแแแก แแฃแ แแแแ แแแแฎแแแ แแ แ แชแฎแ แแแจแ (แแฎแแแแ แกแขแแขแแแก แแแกแแฌแงแแกแจแ). แแก แแแแแฃแแแแแแแ แแแแฎแแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แจแแกแแแแฎแแ: แงแแแแ แแแ แแแแขแ แ แแกแแแแกแแ แกแฎแแแแแกแฎแแ แคแแ แแแขแแแแกแแแแก, แ แแแแ แแชแแ IIS แแฃแ แแแแแแ, apache แแ nginx แแฃแ แแแแแแ. แแแแแชแฎแแแแก แแฃแ แแแแแแแกแแแแก, แ แแแแแแจแแช, แแแแแแแแแ, แฉแแฌแแ แแแแ แจแแชแแแแแแ, แกแแแแคแแ แแแชแแ แจแแขแงแแแแแแแแแ, แแแคแ แแฎแแแแแแแ, แชแแแแ แชแฎแ แแแ แแฅแแแแ แแแฌแแแแแฃแแ แจแแกแแแแแแกแ แกแขแ แฃแฅแขแฃแ แแ (แแแแแแแ แแแแแแแแก แแขแแแแแ).
แชแฎแ แแแแก แจแแฅแแแแกแแก แซแแแแแ แแแแจแแแแแแแแแแ แแแแแฌแงแแแขแแ แแแ แแแแแแ แแแกแแฆแแแ (แ แแแแแแแช แแแฎแแแแ แแแแแชแแแแแแก แแแฎแแ แแกแฎแแแ แจแแแแฎแแแกแแก). แแแแแชแแแแ แจแแแฃแแจแแแก แฎแแ แแกแฎแ แแ แจแแแแแฎแแแก แกแแฉแฅแแ แ แแแแแแ แแแแแแแแแแฃแแ. แฉแแแแก แแแแแแแแจแ แแแแแแ แแ
แจแแแแแแ (fld_app_name, fld_app_module, logdatetime)
แแแฃ แกแแกแขแแแแก แกแแฎแแแแ, แกแแกแขแแแแก แแแแแแแแแขแแก แกแแฎแแแแ แแ แแแแแแแแก แแแ แแฆแแ. แแแแแแแแ แแแแแ, แฆแแแแกแซแแแแแก แแแ แแฆแ แแแ แแแแ แแงแ. แแแแ แแแแแแแ แแแแแขแแแแก แจแแแแแ, แจแแแแแฎแแแแแ แแแแฌแงแ แแฃแจแแแแ แแแแฎแแแแแแ แแ แฏแแ แฃแคแ แ แกแฌแ แแคแแ. แแแ แแแแแแ แแแกแแฆแแแแก แจแแชแแแ แกแแญแแ แแแแก แชแฎแ แแแแก แฎแแแแฎแแ แจแแฅแแแแก แแ แแแแแชแแแแแแก แฎแแแแฎแแ แฉแแขแแแ แแแแก, แ แแแ ClickHouse-แแ แฎแแแแฎแแ แแแแฎแแ แแกแฎแแก แแแแแชแแแแแ แแแกแแแ. แแก แแซแแแ แแแแ แแชแแแ, แแแแขแแ แแแ แแ แแแแแ แแแแ แ แแคแแฅแ แแ แแแแแ, แแฃ แ แ แฃแแแ แแงแแก แจแแขแแแแแ แแแแแแแแแก แแแแแแจแจแ.
แแกแแแ แฃแแแ แแฆแแแแจแแแก, แ แแ LowCardinality แแแแแชแแแแ แขแแแ แแแแแฉแแแ แจแแแแ แแแแ แฃแแฎแแแก แแแ แกแแแแจแ. แแแกแ แแแแแงแแแแแแกแแก, แจแแแฃแแจแฃแแ แแแแแชแแแแแแก แแแแ แแแแแแ แแ แแชแแ แแแแ แแ แแแแแแแกแแแแก, แ แแแแแแกแแช แแฅแแ แแแแแแ แแแ แแแแแแฃแ แแแ (แ แแแแแแแแ แแแ แแแแขแ).
แแแ แกแแ 19.6 แแแแแแแ แแแแแแงแแแแแ แแ แฉแแแ แแแแแแแแ แกแชแแแแ แแแแแฎแแแแ แฃแแฎแแแก แแแ แกแแแแ. แแแ แแฅแแ แแกแแแ แแจแแแแแแ แ แคแฃแแฅแชแแแแ, แ แแแแ แแชแแ แแแแแขแฃแ แ แแ แแแฃแแแ แแแ, แแแแแขแแแแแแก แแแแแฅแกแแแ แแ DoubleDelta แแแแแแ, แแแแแแแแแ.
แแแแฃแแแกแฎแแแแแ, แแแกแขแแแแชแแแก แแ แแก, แแฃแ แแแแแก แแแแ แแแงแแแแแฃแแแ แแแแแแ. แแฃแ แแแแแแ แแ แฃแแแแก แแ แแแแ แฅแแแแแฃแแแ, แแแแ แแ แแแแแ แแ แแก แแกแแแ แแคแแ แแแแแแ แแแแแแแแขแแแแ. แแฃ แแ แแ แแก แกแแญแแ แ, แแแจแแ แจแแแแซแแแแ แแแแงแแแแ แแแคแ แแฎแแแแแแก แแแแ, แแแจแแ แแฃแ แแแแแก แแแแ แแแแแแ แแ แจแแแชแแ แแแแ. แแฃแ แแแแแก แแแ แแแแขแ แ แแแงแแแแแฃแแแ config.xml แคแแแแจแ:
<!-- Possible levels: https://github.com/pocoproject/poco/blob/develop/Foundation/include/Poco/Logger. h#L105 -->
<level>warning</level>
แ แแแแแแแแ แกแแกแแ แแแแแ แแ แซแแแแแ
ะะพัะบะพะปัะบั ะพัะธะณะธะฝะฐะปัะฝัะต ะฟะฐะบะตัั ัััะฐะฝะพะฒะบะธ ัะพะฑะธัะฐัััั ะฟะพ Debian, ัะพ ะดะปั ะดััะณะธั
ะฒะตััะธะน Linux ะฝะตะพะฑั
ะพะดะธะผะพ ะธัะฟะพะปัะทะพะฒะฐัั ะฟะฐะบะตัั ัะพะฑัะฐะฝะฝัะต ะบะพะผะฟะฐะฝะธะตะน Altinity.
ะะพั ะฟะพ ััะพะน ัััะปะบะต ะตััั ะธะฝััััะบัะธะธ ั ัััะปะบะฐะผะธ ะฝะฐ ะธั
ัะตะฟะพะทะธัะพัะธะน: https://www.altinity.com/blog/2017/12/18/logstash-with-clickhouse
sudo yum search clickhouse-server
sudo yum install clickhouse-server.noarch
1. ะฟัะพะฒะตัะบะฐ ััะฐัััะฐ
sudo systemctl status clickhouse-server
2. ะพััะฐะฝะพะฒะบะฐ ัะตัะฒะตัะฐ
sudo systemctl stop clickhouse-server
3. ะทะฐะฟััะบ ัะตัะฒะตัะฐ
sudo systemctl start clickhouse-server
ะะฐะฟััะบ ะดะปั ะฒัะฟะพะปะฝะตะฝะธั ะทะฐะฟัะพัะพะฒ ะฒ ะผะฝะพะณะพัััะพัะฝะพะผ ัะตะถะธะผะต (ะฒัะฟะพะปะฝะตะฝะธะต ะฟะพัะปะต ะทะฝะฐะบะฐ ";")
clickhouse-client --multiline
clickhouse-client --multiline --host 127.0.0.1 --password pa55w0rd
clickhouse-client --multiline --host 127.0.0.1 --port 9440 --secure --user default --password pa55w0rd
ะะปะฐะณะธะฝ ะบะปะธะบะปะฐัะทะฐ ะดะปั ะปะพะณััะตั ะฒ ัะปััะฐะต ะพัะธะฑะบะธ ะฒ ะพะดะฝะพะน ัััะพะบะต ัะพั
ัะฐะฝัะตั ะฒัั ะฟะฐัะบั ะฒ ัะฐะนะป /tmp/log_web_failed.json
ะะพะถะฝะพ ะฒัััะฝัั ะธัะฟัะฐะฒะธัั ััะพั ัะฐะนะป ะธ ะฟะพะฟัะพะฑะพะฒะฐัั ะทะฐะปะธัั ะตะณะพ ะฒ ะะ ะฒัััะฝัั:
clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /tmp/log_web_failed__fixed.json
sudo mv /etc/logstash/tmp/log_web_failed.json /etc/logstash/tmp/log_web_failed__fixed.json
sudo chown user_dev /etc/logstash/tmp/log_web_failed__fixed.json
sudo clickhouse-client --host 127.0.0.1 --password password --query="INSERT INTO log_web FORMAT JSONEachRow" < /etc/logstash/tmp/log_web_failed__fixed.json
sudo mv /etc/logstash/tmp/log_web_failed__fixed.json /etc/logstash/tmp/log_web_failed__fixed_.json
ะฒัั
ะพะด ะธะท ะบะพะผะฐะฝะดะฝะพะน ัััะพะบะธ
quit;
## ะะฐัััะพะนะบะฐ TLS
https://www.altinity.com/blog/2019/3/5/clickhouse-networking-part-2
openssl s_client -connect log.domain.com:9440 < /dev/null
logstash. แฉแแฌแแ แแ แ แแฃแขแแ แ FileBeat-แแแ RabbitMQ แ แแแจแ
แแก แแแแแแแแแขแ แแแแแแงแแแแแ FileBeat-แแแ RabbitMQ แ แแแจแ แแแกแฃแ แแฃแ แแแแแแแก แแแแแกแแขแแแแ. แแฅ แแ แแก แแ แ แฌแแ แขแแแ:
- แกแแแฌแฃแฎแแ แแ, FileBeat-แก แแ แแฅแแก แแแแแแแแแแ แแแแฃแแ, แ แแแแแแช แแแ แแแแแ RabbitMQ-แแ แแแกแแฌแแ แแ. แแ แแกแแแ แคแฃแแฅแชแแแแแ แแแ, แแแแ github-แแก แกแแแแแฎแแก แแแฎแแแแแ, แแ แแ แแก แแแแแแแแแ แแแแฎแแ แชแแแแแแแกแแแแก. แแ แแก แแแคแแแก แแแแแแแขแ, แแแแ แแ แ แแขแแแฆแแช แแแก แกแแฎแแจแ แแแ แแแงแแแแแ.
- DMZ-แจแ แแแ แแแแก แจแแแ แแแแแแก แแแแฎแแแแแแ แแ แกแแแแแก. แแแแแ แแแงแ แแแแแแ, แแฃแ แแแแแแ แฏแแ แฃแแแ แแแแแแขแแก แ แแแจแ แแ แจแแแแแ LogStash แแแแฎแฃแแแแก แฉแแแแฌแแ แแแก แ แแแแแแ แแแ แแแแ.
แแแแขแแ, แแ แจแแแแฎแแแแแกแแแแก, แ แแแแกแแช แกแแ แแแ แแแ แแแแแแแแแฃแแแ DMZ-แจแ, แฃแแแ แแแแแแงแแแแ แแกแแแ แแแแแ แ แแฃแแ แกแฅแแแ. แแแแคแแแฃแ แแชแแแก แแแแแแแแ แแกแ แแแแแแงแฃแ แแแ:
iis_w3c_logs__filebeat_rabbitmq.conf
input {
beats {
port => 5044
type => 'iis'
ssl => true
ssl_certificate_authorities => ["/etc/pki/tls/certs/app/ca.pem", "/etc/pki/tls/certs/app/ca-issuing.pem"]
ssl_certificate => "/etc/pki/tls/certs/app/queue.domain.com.cer"
ssl_key => "/etc/pki/tls/certs/app/queue.domain.com-pkcs8.key"
ssl_verify_mode => "peer"
}
}
output {
#stdout {codec => rubydebug}
rabbitmq {
host => "127.0.0.1"
port => 5672
exchange => "monitor.direct"
exchange_type => "direct"
key => "%{[fields][fld_app_name]}"
user => "q-writer"
password => "password"
ssl => false
}
}
RabbitMQ. แจแแขแงแแแแแแแแก แ แแแ
แแก แแแแแแแแแขแ แแแแแแงแแแแแ แแฃแคแแ แฃแแ แฉแแแแฌแแ แแแแก DMZ-แจแ. แฉแแฌแแ แ แฎแแแแ Filebeat โ LogStash-แแก แแแจแแแแแแ. แแแแฎแแ แฎแแแแ DMZ-แแก แแแ แแแแ LogStash-แแก แกแแจแฃแแแแแแ. RabboitMQ-แแก แกแแจแฃแแแแแแ แแฃแจแแแแแกแแก แแฃแจแแแแแแ แแแแฎแแแแแแ 4 แแแแกแ แจแแขแงแแแแแแแ แฌแแแจแ.
แจแแขแงแแแแแแแแแแก แแแ แจแ แฃแขแ แแแแคแแแฃแ แแแฃแแแ แกแแกแขแแแแก แกแแฎแแแแ, แแแฃ FileBeat-แแก แแแแคแแแฃแ แแชแแแก แแแแแชแแแแแแ แแแงแ แแแแแแ. แงแแแแ แจแแขแงแแแแแแแ แแแแแก แแ แ แ แแแจแ. แแฃ แ แแแแ แแแแแแแ แจแแฉแแ แแแฃแแแ แ แแแแก แกแแ แแแกแ, แแแจแแ แแก แแ แแแแแแฌแแแแก แจแแขแงแแแแแแแแแแก แแแแแ แแแแก: FileBeats แแแแฆแแแก แจแแชแแแแแแก แแแแจแแ แแก แจแแกแแฎแแ แแ แแ แแแแแ แจแแแฉแแ แแแก แแแแแแแแแก. แแ LogStash, แ แแแแแแช แแแแฎแฃแแแแก แ แแแแแแ, แแกแแแ แแแแฆแแแก แฅแกแแแแก แจแแชแแแแแแก แแ แแแแแแแแแ แแแแจแแ แแก แแฆแแแแแแก. แแ แจแแแแฎแแแแแจแ, แแแแแชแแแแแ, แ แ แแฅแแ แฃแแแ, แแฆแแ แฉแแแฌแแ แแแ แแแแแชแแแแ แแแแแจแ.
แจแแแแแแ แแแกแขแ แฃแฅแชแแแแ แแแแแแงแแแแแ แ แแแแแแก แจแแกแแฅแแแแแแ แแ แแแแคแแแฃแ แแชแแแกแแแแก:
sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin declare exchange --vhost=/ name=monitor.direct type=direct sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin declare queue --vhost=/ name=web_log durable=true
sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin --vhost="/" declare binding source="monitor.direct" destination_type="queue" destination="web_log" routing_key="site1.domain.ru"
sudo /usr/local/bin/rabbitmqadmin/rabbitmqadmin --vhost="/" declare binding source="monitor.direct" destination_type="queue" destination="web_log" routing_key="site2.domain.ru"
แแ แแคแแแ. แแแคแแแ
แแก แแแแแแแแแขแ แแแแแแงแแแแแ แแแแแขแแ แแแแแก แแแแแชแแแแแแก แแแแฃแแแแแแชแแแกแแแแก. แแ แจแแแแฎแแแแแจแ, แแฅแแแ แฃแแแ แแแแแแกแขแแแแ แแ ClickHouse แแแแแชแแแแ แฌแงแแ แ Grafana 4.6+ แแแแฃแแแกแแแแก. แฉแแแ แชแแขแ แจแแแแแฎแแแฌแ, แ แแแ แแแฃแแฏแแแแกแแแฃแแแงแ SQL แคแแแขแ แแแแก แแแแฃแจแแแแแแก แแคแแฅแขแฃแ แแแ แแแคแแแ.
แแแแแแแแแ, แฉแแแ แแแงแแแแแ แชแแแแแแแก แแ แแฃ แแกแแแ แแ แแ แแก แแแแแแแแฃแแ แคแแแขแ แแก แแแแจแ, แแแจแแ แแแกแฃแ แก, แ แแ แแ แฌแแ แแแฅแแแแก แแแ แแแ แคแแ แแแก WHERE-แจแ ( uriStem = ยป AND uriStem != ยป ). แแ แจแแแแฎแแแแแจแ, ClickHouse แฌแแแแแแฎแแแก uriStem แกแแแขแก. แแแแแแแ, แฉแแแ แแชแแแแ แกแฎแแแแแกแฎแแ แแแ แแแแขแแแ แแ แกแแแแแแแ แฉแแแแกแฌแแ แแ แแแแแแแขแ ($valueIfEmpty แแแแ แ) แแกแ, แ แแ แชแแ แแแแ แแแแจแแแแแแแแก แจแแแแฎแแแแแจแ แแก แแแ แฃแแแแก 1-แก, แแแแแ แกแแแขแแก แฎแกแแแแแแก แแแ แแจแ.
แแฎแแ แแ แจแแแแซแแแแ แแแแแแงแแแแ แแก แแแแฎแแแแ แแ แแคแแแแกแแแแก
$columns(response, count(*) c) from $table where $adhoc
and $valueIfEmpty($fld_app_name, 1, fld_app_name = '$fld_app_name')
and $valueIfEmpty($fld_app_module, 1, fld_app_module = '$fld_app_module') and $valueIfEmpty($fld_server_name, 1, fld_server_name = '$fld_server_name') and $valueIfEmpty($uriStem, 1, uriStem like '%$uriStem%')
and $valueIfEmpty($clientRealIP, 1, clientRealIP = '$clientRealIP')
แ แแช แแแแ แแแแแแ แแ SQL-แแ (แแแแแแแแแกแฌแแแแ, แ แแ แชแแ แแแแ uriStem แแแแแแ แแแแแแแแแ แแฎแแแแ 1-แแ)
SELECT
t,
groupArray((response, c)) AS groupArr
FROM (
SELECT
(intDiv(toUInt32(logdatetime), 60) * 60) * 1000 AS t, response,
count(*) AS c FROM default.log_web
WHERE (logdate >= toDate(1565061982)) AND (logdatetime >= toDateTime(1565061982)) AND 1 AND (fld_app_name = 'site1.domain.ru') AND (fld_app_module = 'web') AND 1 AND 1 AND 1
GROUP BY
t, response
ORDER BY
t ASC,
response ASC
)
GROUP BY t ORDER BY t ASC
แแแกแแแแ
ClickHouse แแแแแชแแแแ แแแแแก แแแแแฉแแแ แแแฎแแ แกแแแขแแแ แแแแแแแ แแแแแ แแ. แซแแแแ แฌแแ แแแกแแแแแแแ, แ แแ แกแ แฃแแแแ แฃแคแแกแแ, แแงแแกแแแ แแ แจแแแแแ แแฆแแแ แแแ แแแแแชแแแแแแแ แแฃแจแแแแแก แแซแแแแ แ แแ แแ แแฅแขแแแฃแแ แฎแแแกแแฌแงแแแ. แ แ แแฅแแ แฃแแแ, แแแแ แแ แกแแญแแ แแแแแแแ (แแแแแแแแแ, แแแคแแแขแแ แแ แแ แแแแ แกแแ แแแ แแ แ แแแแแแแชแแ), แกแฅแแแ แฃแคแ แ แแแ แแฃแแแแแ. แแแแ แแ แแแ แแแแ แจแแแแแญแแแแแแแแแ, แแ แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแ แซแแแแแ แกแแกแแแแแแแแ. แฉแแแก, แ แแ แแ แแแฃแฅแขแ แแแแแแแแแฃแแแ "แฎแแแฎแแกแแแแก".
ElasticSearch-แแแ แจแแแแ แแแแ, แแฃแ แแแแแแแก แจแแแแฎแแแกแ แแ แแแแฃแจแแแแแแก แฆแแ แแแฃแแแแ แกแแแแ แแฃแแแ แจแแแชแแ แแแแ แฎแฃแ-แแแฏแแ . แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแฃ แแแแแชแแแแ แแแแแแแแแแแ แแแชแฃแแแแแกแแแแก แแแแแแฌแแแก แ แแแแแแแแ แแแแ แแขแแก แแแแกแขแแ แแก แแแงแแแแแ, แแแจแแ ClickHouse-แแก แแแแแงแแแแแแกแแก แฉแแแแแแแก แกแแแแแ แแกแแ แแ แแ แแแแแแ แกแแแซแแแแ แแก แแแแฅแแแ. แแแแฎ, แ แ แแฅแแ แฃแแแ, ElasticSearch-แก แแกแแแ แแฅแแก แแแกแแแ แแแแแชแแแแ แจแแแฃแแจแแแก แแแฅแแแแแแแแ แแ แกแฎแแ แคแฃแแฅแชแแแแ, แ แแแแแแกแแช แจแแฃแซแแแแ แแแแจแแแแแแแแแ แจแแแแชแแ แแ แ แแกแฃแ แกแแแแก แแแฎแแแ แแแ, แแแแ แแ ClickHouse-แแแ แจแแแแ แแแแ, แแก แฃแคแ แ แซแแแ แ แแฅแแแแ.
แฉแแแแ แแฎแ แแแแ แ แแแแ แแแแกแแแฃแแ แแแฃแแ แแแขแแแแแแชแแแก แแแ แแจแ, แแแแฃแแแกแฎแแแ แแแ แแแแขแ แแแแ, แแแแแชแแแแแแก แฉแแขแแแ แแแ แแ แแแแแชแแแแ แแแแแแแ แจแแ แฉแแแ แกแแแชแแ แ แกแแกแฌแ แแคแแ แแฃแจแแแแก. แฏแแ แแแแ แ แแแแแชแแแ แแ แแแแฅแแก (แแแแฎแแแแแแ 200 แแแแแแแ แฉแแแแฌแแ แ), แแแแ แแ แแแแแ แกแแ แแแ แ แกแฃแกแขแแ. แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แแก แแแกแขแ แฃแแแแขแ แแแแแแแแจแ แกแฎแแ แแแแแแแแกแแแแก, แ แแแแแแแช แแ แแ แแก แแแแแแจแแ แแแฃแแ แแฃแ แแแแแแแก แจแแแแฎแแแกแแแ. แแแแแแแแแ, แแแแแแแ แแแแแแแ แแแแแแขแแแแกแแแแก, แฃแกแแคแ แแฎแแแแแก แกแคแแ แแจแ, แแแแฅแแแแแแชแแแแแแแแก แกแคแแ แแจแ.
แแแกแแกแ แฃแแก, แชแแขแแแ แแแแแแแแ แแ แฃแแ แงแแคแแแ แแฎแแ แแแแแก แจแแกแแฎแแ.
Cons
- แฉแแแแฌแแ แแแแก แฉแแขแแแ แแแ แแแ แแแ แขแแแแจแ. แแ แแแก แแฎแ แแ, แแก แแ แแก แคแฃแแฅแชแแ, แแแแ แแ แแฅแแแ แแแแแช แฃแแแ แแแแแแงแแแแ แแแแแขแแแแแ แแแแแแแแแขแแแ แแฃแคแแ แฃแแ แฉแแแแฌแแ แแแแกแแแแก. แแก แแแแชแแแ แงแแแแแแแแก แแ แแ แแก แแแแแแ, แแแแ แแ แแแแแช แแแแแญแ แแแ. แแ แแ แแแแแ แแแแแแแ แขแแแแ แกแฅแแแ.
- แแแแแแ แแ แแแแแขแแแฃแ แ แคแฃแแฅแชแแ แแ แแฎแแแ แคแฃแแฅแชแแ แฎแจแแ แแ แแจแแแแ แแฎแแ แแแ แกแแแแจแ. แแก แแฌแแแแก แจแแจแคแแแแแแก, แแแชแแ แแแก แแฎแแ แแแ แกแแแแ แแแแแฎแแแแแก แกแฃแ แแแแก. แแแแแแแแแ, แแแคแแแก แแแแแแแก แซแ แแแ แแ แแก แซแแแแแ แกแแกแแ แแแแแ แคแฃแแฅแชแแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแ แแแแแ แฌแแแแแแฎแแ แแแแแแแแแ แแแคแแแแแ, แแแแฎแแแ แแแแแแแก แแแแฎแแ แชแแแแแแแก แแแ แแจแ. แแแแ แแ แแฃ แแแแกแฏแแแแแ github-แแ แแ แกแแแฃแแ แกแแแแแฎแแแแก แ แแแแแแแแแก แแแฎแแแแแ, แฉแแแ แแแแแช แคแ แแฎแแแแ แแแ แ, แ แแ แแ แแแแแแแงแแแแ แแก แซแ แแแ แฌแแ แแแแแแจแ. แแฃแแชแ, แแฃ แแฅแแแ แแ แแแแแแแแแ แแแฃแแแแแแ แแแกแขแแแก แแแแ แแแ แแ แแ แแงแแแแแ แซแแ แแแแ แคแฃแแฅแชแแแแแ แแแแก, แแแจแแ แแก แกแขแแแแแฃแ แแ แแฃแจแแแแก.
แแแแแแแแ
- แแ แแแแแแแก.
- แแแแแแ แจแแกแแแแก แแแ แแแ แ.
- แฒกแแฏแแ แ แฌแงแแ แ.
- แฃแคแแกแ.
- แแแ แแแ แแแกแจแขแแแแ แแแก (แแแแแฌแแแแแ/แแแแแแ แแแ แงแฃแแแแแ)
- แจแแแแก แแแแจแแ แแแแแฃแแแแแก แกแแแแแแกแขแ แแก แแแแ แ แแแแแแแแแแฃแแ แ แฃแกแฃแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แ แแแกแขแ แจแ.
- Yandex-แแก แแคแแชแแแแฃแ แ แแฎแแ แแแญแแ แแก แแ แกแแแแแ.
แฌแงแแ แ: www.habr.com