๋ก๊ทธ๋ฅผ ๋ณด๊ธฐ ์ํด ์น ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋ค๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ธํฐํ์ด์ค๊ฐ ์ผ๋ง๋ ๋ฒ๊ฑฐ๋กญ๊ณ (์ข ์ข ) ๊ทธ๋ค์ง ํธ๋ฆฌํ์ง๋ ์๊ณ ๋ฐ์๋ ์ข์ง ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ ๊ฒ์ ๋๋ค. ์ผ๋ถ๋ ์ต์ํด์ง๊ณ ์ผ๋ถ๋ ์์ ํ ๋์ฐํ์ง๋ง ๋ชจ๋ ๋ฌธ์ ์ ์์ธ์ ๋ก๊ทธ๋ฅผ ๋ณด๋ ์์ ์ ์๋ชป ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. CLI(๋ช ๋ น์ค ์ธํฐํ์ด์ค)๊ฐ ์๋ ์น ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ๋ ์ ์๋ํฉ๋๋ค. ์ ๋ ๊ฐ์ธ์ ์ผ๋ก tail, grep, awk ๋ฑ์ ์ฌ์ฉํ์ฌ ์์ ํ๋ ๊ฒ์ ๋งค์ฐ ํธ์ํ๊ฒ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ๋ก๊ทธ ์์ ์ ์ด์์ ์ธ ์ธํฐํ์ด์ค๋ tail ๋ฐ grep๊ณผ ๋น์ทํ์ง๋ง ๋ง์ ์๋ฒ์์ ์จ ๋ก๊ทธ๋ฅผ ์ฝ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฌผ๋ก ClickHouse์์ ์ฝ์ด๋ณด์ธ์!
*habra ์ฌ์ฉ์์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ๋ฐ๋ฆ
๋ก๊ทธํด๋ฆฌ๋ฅผ ๋ง๋๋ณด์ธ์
์ธํฐํ์ด์ค์ ์ด๋ฆ์ ์ ํ์ง ์์๊ณ ์์งํ ํ๋กํ ํ์
ํํ๋ก ์กด์ฌํ์ง๋ง ์์ค ์ฝ๋๋ฅผ ์ฆ์ ๋ณด๊ณ ์ถ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๊ธฐ๋ฅ
๋ด ๋ชฉํ๋ tail/grep์ ์ต์ํ ์ฌ๋๋ค์๊ฒ ์น์ํด ๋ณด์ด๋ ์ธํฐํ์ด์ค, ์ฆ ๋ค์์ ์ง์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค.
- ํํฐ๋ง ์์ด ๋ชจ๋ ๋ก๊ทธ๋ฅผ ๋ด ๋๋ค.
- ๊ณ ์ ๋ ํ์ ๋ฌธ์์ด(ํ๋๊ทธ)์ด ํฌํจ๋ ํ์ ๊ทธ๋๋ก ๋ก๋๋ค.
-F
ัgrep
). - ์ ๊ท์(ํ๋๊ทธ)๊ณผ ์ผ์นํ๋ ์ค์ ๋จ๊ฒจ์ฃผ์ธ์.
-E
ัgrep
). - ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฅ ์ต๊ทผ ๋ก๊ทธ๊ฐ ๋จผ์ ๊ด์ฌ ๋์์ด๋ฏ๋ก ๋ณด๊ธฐ๋ ์๊ฐ ์ญ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ๊ฐ ์ค ์์ ์ปจํ
์คํธ ํ์(์ต์
-A
,-B
ะธ-C
ัgrep
, ์ผ์นํ๋ ๊ฐ ์ค ์, ๋ค, ์ฃผ์์ ๊ฐ๊ฐ N ์ค์ ์ธ์ํฉ๋๋ค. - ํํฐ๋ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์์ ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ด
๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก
tail -f | grep
). - ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ํธํ๋์ด์ผ ํฉ๋๋ค.
less
,head
,tail
๊ธฐํ - ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ ๊ฐ์ ์ ํ ์์ด ๋ฐํ๋์ด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ผ์ธ ์์ ์ ๊ด์ฌ์ด ์๋ ํ ๋ผ์ธ์ ์คํธ๋ฆผ์ผ๋ก ์ธ์๋ฉ๋๋ค. ์ ํธSIGPIPE
๊ทธ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ก๊ทธ ์คํธ๋ฆฌ๋ฐ์ ์๋์ผ๋ก ์ค๋จํด์ผ ํฉ๋๋ค.tail
,grep
๋ฐ ๊ธฐํ UNIX ์ ํธ๋ฆฌํฐ.
ะ ะตะฐะปะธะทะฐัะธั
ClickHouse์ ๋ก๊ทธ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์๋ํด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค
๋จผ์ ๊ธฐ๋ณธ ๊ตฌ์ฑํ๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๊ฐ๋ณ๋ก ์ ๋ ฌ๋ ๋ก๊ทธ๋ฅผ ๋ฐ๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ๊ทธ๋ ๊ฒ ์ ์ฅํ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋ก๊ทธ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๋ง๊ณ ์ ํ์ด ๋ชจ๋ ๋์ผํ ๊ฒฝ์ฐ ๋ก๊ทธ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ ํค์ ์ฒซ ๋ฒ์งธ ์ด๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ํ ์ด๋ธ ๋์ ํ๋์ ํ ์ด๋ธ์ ๊ฐ์ง ์ ์์ต๋๋ค. ClickHouse์ ์ฝ์ (ํ๋ ๋๋ผ์ด๋ธ๊ฐ ์๋ ์๋ฒ์์๋ ์ด๋น 1ํ ์ดํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค) ์ ์ฒด ์๋ฒ์ ๋ํด).
์ฆ, ๋๋ต ๋ค์๊ณผ ๊ฐ์ ํ ์ด๋ธ ๊ตฌ์ฑํ๊ฐ ํ์ํฉ๋๋ค.
CREATE TABLE logs(
category LowCardinality(String), -- ะบะฐัะตะณะพัะธั ะปะพะณะพะฒ (ะพะฟัะธะพะฝะฐะปัะฝะพ)
time DateTime, -- ะฒัะตะผั ัะพะฑััะธั
millis UInt16, -- ะผะธะปะปะธัะตะบัะฝะดั (ะผะพะณัั ะฑััั ะธ ะผะธะบัะพัะตะบัะฝะดั, ะธ ั.ะด.): ัะตะบะพะผะตะฝะดัะตััั ั
ัะฐะฝะธัั, ะตัะปะธ ัะพะฑััะธะน ะผะฝะพะณะพ, ััะพะฑั ะฑัะปะพ ะปะตะณัะต ัะฐะทะปะธัะฐัั ัะพะฑััะธั ะผะตะถะดั ัะพะฑะพะน
..., -- ะฒะฐัะธ ัะพะฑััะฒะตะฝะฝัะต ะฟะพะปั, ะฝะฐะฟัะธะผะตั ะธะผั ัะตัะฒะตัะฐ, ััะพะฒะตะฝั ะปะพะณะธัะพะฒะฐะฝะธั, ะธ ัะฐะบ ะดะฐะปะตะต
message String -- ัะตะบัั ัะพะพะฑัะตะฝะธั
) ENGINE=MergeTree()
ORDER BY (category, time, millis)
์์ฝ๊ฒ๋ ์ ๊ฐ ์ก์์ ๋ค์ด๋ก๋ํ ์ ์๋ ํ์ค์ ์ธ ๋ก๊ทธ๊ฐ ์๋ ์คํ ์์ค๋ฅผ ์ฆ์ ์ฐพ์ ์ ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์๋ก ๋ค์์ต๋๋ค.
ClickHouse์ Amazon ๋ฆฌ๋ทฐ๋ฅผ ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ
ํ ์ด๋ธ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
CREATE TABLE amazon(
review_date Date,
time DateTime DEFAULT toDateTime(toUInt32(review_date) * 86400 + rand() % 86400),
millis UInt16 DEFAULT rand() % 1000,
marketplace LowCardinality(String),
customer_id Int64,
review_id String,
product_id LowCardinality(String),
product_parent Int64,
product_title String,
product_category LowCardinality(String),
star_rating UInt8,
helpful_votes UInt32,
total_votes UInt32,
vine FixedString(1),
verified_purchase FixedString(1),
review_headline String,
review_body String
)
ENGINE=MergeTree()
ORDER BY (time, millis)
SETTINGS index_granularity=8192
Amazon ๋ฐ์ดํฐ์ธํธ์๋ ๊ฒํ ๋ ์ง๋ง ์๊ณ ์ ํํ ์๊ฐ์ ์์ผ๋ฏ๋ก ์ด ๋ฐ์ดํฐ๋ฅผ ๋๋์ผ๋ก ์ฑ์๋ณด๊ฒ ์ต๋๋ค.
10GB RAM์ ๋ง์ง ์๋ ์๋นํ ํฐ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ป๊ธฐ ์ํด ๋ชจ๋ tsv ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์ฒ์ ~20-16์ผ๋ก ์ ํํ ํ์๋ ์์ต๋๋ค. TSV ํ์ผ์ ์ ๋ก๋ํ๊ธฐ ์ํด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ต๋๋ค.
for i in *.tsv; do
echo $i;
tail -n +2 $i | pv |
clickhouse-client --input_format_allow_errors_ratio 0.5 --query='INSERT INTO amazon(marketplace,customer_id,review_id,product_id,product_parent,product_title,product_category,star_rating,helpful_votes,total_votes,vine,verified_purchase,review_headline,review_body,review_date) FORMAT TabSeparated'
done
ํฌ๊ธฐ๊ฐ 1000GB์ธ Google Cloud์ ํ์ค ์๊ตฌ ๋์คํฌ(HDD)์์(ํ์ํ ํฌ๊ธฐ์ SSD๊ฐ ๋ ์ ๋ ดํ ์๋ ์์ง๋ง ์๋๋ฅผ ์กฐ๊ธ ๋ ๋์ด๊ธฐ ์ํด ์ฃผ๋ก ์ด ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค) ์๋๋ 75๊ฐ ์ฝ์ด์์ ์ฝ 4MB/์ด์์ต๋๋ค.
- ๊ตฌ๊ธ์์ ์ผํ๋ค๊ณ ์์ฝ์ ํด์ผ ํ๋๋ฐ ๊ฐ์ธ ๊ณ์ ์ ์ฌ์ฉํ๊ณ ์ด ๊ธ์ ํ์ฌ ์ ๋ฌด์๋ ์๋ฌด๋ฐ ๊ด๋ จ์ด ์์ต๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๋๋ ์ด ํน์ ๋ฐ์ดํฐ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ผ๋ฌ์คํธ๋ ์ด์ ์ ์ ์ํ ๊ฒ์ ๋๋ค.
๋ฐ์ดํฐ ์ค์บ ์งํ ์ํฉ ํ์
ClickHouse์์๋ ๋ก๊ทธ๊ฐ ์๋ ํ
์ด๋ธ์ ๋ํด ์ ์ฒด ์ค์บ์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ์ด ์์
์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ ์ผ์นํ๋ ํญ๋ชฉ์ด ๊ฑฐ์ ์์ผ๋ฉด ์ค๋ ์๊ฐ ๋์ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ๋ค์์ ํ์ํ ์ ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ํ์ด ์์ ๋ ๋๊น์ง ์ฟผ๋ฆฌ๊ฐ ์งํ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด HTTP ํค๋์ ์งํ ์ํฉ์ ๋ณด๋ผ ์ ์๋ ๋งค๊ฐ๋ณ์๊ฐ HTTP ์ธํฐํ์ด์ค์ ์์ต๋๋ค. send_progress_in_http_headers=1
. ๋ถํํ๊ฒ๋ ํ์ค Go ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ ๋ ํค๋๋ฅผ ์ฝ์ ์ ์์ง๋ง ClickHouse๋ HTTP 1.0 ์ธํฐํ์ด์ค(1.1๊ณผ ํผ๋ํ์ง ๋ง์ธ์!)๋ฅผ ์ง์ํ๋ฏ๋ก ClickHouse์ ๋ํ ์์ TCP ์ฐ๊ฒฐ์ ์ด๊ณ ๊ฑฐ๊ธฐ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. GET /?query=... HTTP/1.0nn
์ด์ค์ผ์ดํ๋ ์ํธํ ์์ด ์๋ต ํค๋์ ๋ณธ๋ฌธ์ ์์ ํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ํ์์กฐ์ฐจ ์์ต๋๋ค.
ClickHouse์์ ๋ก๊ทธ ์คํธ๋ฆฌ๋ฐ
ClickHouse๋ ๋น๊ต์ ์ค๋ ๊ธฐ๊ฐ(2019๋ ?) ๋์ ORDER BY๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋
SELECT time, millis, message
FROM logs
WHERE message LIKE '%something%'
ORDER BY time DESC, millis DESC
์ค์บ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฉ์์ง์ ํ์ ๋ฌธ์์ด "something"์ด ์๋ ์ค์ ์ฆ์ ๋ฐํํ๊ธฐ ์์ํฉ๋๋ค.
๋ํ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋ ClickHouse ์์ฒด์์ ์์ฒญ์ ์ทจ์ํ๋ฉด ๋งค์ฐ ํธ๋ฆฌํ์ง๋ง ์ด๋ ๊ธฐ๋ณธ ๋์์ด ์๋๋๋ค. ์ต์
์ ์ฌ์ฉํ์ฌ ์๋ ์์ฒญ ์ทจ์๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. cancel_http_readonly_queries_on_client_close=1
.
Go์์ SIGPIPE์ ์ฌ๋ฐ๋ฅธ ์ฒ๋ฆฌ
๋ช
๋ น์ ์คํํ๋ฉด some_cmd | head -n 10
, ์ ํํ ๋ช
๋ น์ด ์ด๋ป๊ฒ some_cmd
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์คํ์ ์ค์งํฉ๋๋ค. head
10์ค์ ๋บ๋? ๋๋ต์ ๊ฐ๋จํฉ๋๋ค. ์ธ์ head
๋๋๊ณ ํ์ดํ๊ฐ ๋ซํ๊ณ some_cmd ๋ช
๋ น์ stdout์ด ์กฐ๊ฑด๋ถ๋ก "์๋ฌด๋ฐ๋"๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ์์ํฉ๋๋ค. ์ธ์ some_cmd
๋ซํ ํ์ดํ์ ์ฐ๊ธฐ๋ฅผ ์๋ํ๊ณ ,
Go์์๋ ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ํ์ง๋ง SIGPIPE ์ ํธ ์ฒ๋ฆฌ๊ธฐ๋ ๋์ "signal: SIGPIPE" ๋๋ ์ ์ฌํ ๋ฉ์์ง๋ ์ธ์ํฉ๋๋ค. ์ด ๋ฉ์์ง๋ฅผ ์ง์ฐ๋ ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก, ์ฆ ์๋์ผ๋ก SIGPIPE๋ฅผ ์ฒ๋ฆฌํ๋ฉด ๋ฉ๋๋ค. ์ถ๊ตฌ:
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGPIPE)
go func() {
<-ch
os.Exit(0)
}()
๋ฉ์์ง ์ปจํ ์คํธ ํ์
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ปจํ
์คํธ(์: ์ด๋ค ์์ฒญ์ผ๋ก ์ธํด ํจ๋์ด ๋ฐ์ํ๋์ง, ์ถฉ๋์ด ๋ฐ์ํ๊ธฐ ์ ์ ์ด๋ค ๊ด๋ จ ๋ฌธ์ ๊ฐ ํ์๋์๋์ง ๋ฑ)๋ฅผ ํ์ธํ๋ ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. grep
์ด๋ ๊ฐ๊ฐ ๋ฉ์์ง ๋ค, ์, ์ฃผ์์ ์ง์ ๋ ํ ์๋ฅผ ํ์ํ๋ -A, -B ๋ฐ -C ์ต์
์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
๋ถํํ๋ ClickHouse์์๋ ๋์ผํ ์์ ์ ์ํํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ปจํ ์คํธ๋ฅผ ํ์ํ๊ธฐ ์ํด ์ด์ ๊ฐ์ ์ถ๊ฐ ์์ฒญ์ด ๊ฒฐ๊ณผ์ ๊ฐ ์ค์ ์ ์ก๋ฉ๋๋ค(์ธ๋ถ ์ฌํญ์ ์ ๋ ฌ ๋ฐ ์ปจํ ์คํธ๊ฐ ์ด์ ์ ํ์๋๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ). ๋๋ ์ดํ):
SELECT time,millis,review_body FROM amazon
WHERE (time = 'ะะ ะะะฏ_ะกะะะซะขะะฏ' AND millis < ะะะะะะกะะะฃะะะซ_ะกะะะซะขะะฏ) OR (time < 'ะะ ะะะฏ_ะกะะะซะขะะฏ')
ORDER BY time DESC, millis DESC
LIMIT ะะะะะงะะกะขะะ_ะกะขะ ะะ_ะะะะขะะะกะขะ
SETTINGS max_threads=1
ClickHouse๊ฐ ํด๋น ๋ผ์ธ์ ๋ฐํํ ํ ๊ฑฐ์ ์ฆ์ ์์ฒญ์ด ์ ์ก๋๋ฏ๋ก ๊ฒฐ๊ตญ ์บ์์ ์ ์ฅ๋๊ณ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์คํ๋๊ณ ์ฝ๊ฐ์ CPU๋ฅผ ์๋ชจํฉ๋๋ค(๋ณดํต ๊ฐ์ ๋จธ์ ์์ ์์ฒญ์ ์ฝ 6ms ์ ๋ ์์๋ฉ๋๋ค).
์ ๋ฉ์์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์
๋ค์ด์ค๋ ๋ฉ์์ง๋ฅผ (๊ฑฐ์) ์ค์๊ฐ์ผ๋ก ํ์ํ๊ธฐ ์ํด ์ด์ ์ ์ ํ๋ ๋ง์ง๋ง ํ์์คํฌํ๋ฅผ ๊ธฐ์ตํ๋ฉด์ ๋ช ์ด๋ง๋ค ํ ๋ฒ์ฉ ์์ฒญ์ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ช ๋ น ์
์ผ๋ฐ์ ์ธ logcli ๋ช ๋ น์ ์ค์ ๋ก ์ด๋ค ๋ชจ์ต์ ๋๊น?
๊ธฐ์ฌ ์์ ๋ถ๋ถ์์ ์ธ๊ธํ Amazon ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ค์ด๋ก๋ํ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค.
# ะะพะบะฐะทะฐัั ัััะพะบะธ, ะณะดะต ะฒัััะตัะฐะตััั ัะปะพะฒะพ walmart
$ logscli -F 'walmart' | less
# ะะพะบะฐะทะฐัั ัะฐะผัะต ัะฒะตะถะธะต 10 ัััะพะบ, ะณะดะต ะฒัััะตัะฐะตััั "terrible"
$ logscli -F terrible -limit 10
# ะขะพ ะถะต ัะฐะผะพะต ะฑะตะท -limit:
$ logscli -F terrible | head -n 10
# ะะพะบะฐะทะฐัั ะฒัะต ัััะพะบะธ, ะฟะพะดั
ะพะดััะธะต ะฟะพะด /times [0-9]/, ะฝะฐะฟะธัะฐะฝะฝัะต ะดะปั vine ะธ ั ะบะพัะพััั
ะฒััะพะบะธะน ัะตะนัะธะฝะณ
$ logscli -E 'times [0-9]' -where="vine='Y' AND star_rating>4" | less
# ะะพะบะฐะทะฐัั ะฒัะต ัััะพะบะธ ัะพ ัะปะพะฒะพะผ "panic" ะธ 3 ัััะพะบะธ ะบะพะฝัะตะบััะฐ ะฒะพะบััะณ
$ logscli -F 'panic' -C 3 | less
# ะะตะฟัะตััะฒะฝะพ ะฟะพะบะฐะทัะฒะฐัั ะฝะพะฒัะต ัััะพะบะธ ัะพ ัะปะพะฒะพะผ "5-star"
$ logscli -F '5-star' -tailf
์ฐธ์กฐ
์ ํธ๋ฆฌํฐ ์ฝ๋(๋ฌธ์ ์ ์ธ)๋ github์์ ํ์ธํ ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com