π μ€λμ ν΅μ¬ λ΄μ© π
룩μ λ§λ€κΈ°μ μ΄μ§ κ³λ€μ¬μ§ λμ보λ λ§λ€κΈ°
π 룩μ μ΄ λκ° μ’μλ!? π
Splunkμ λͺ¨μμ§ λ°μ΄ν°μ λ΄μ©μ μ’ λ μκΈ° μ½κ² ν΄μν μ μλλ‘ λμμ€ λΏλ§ μλλΌ,
KVStoreλ₯Ό μ΄μ©ν΄ νμ¬μ μνλ₯Ό μ λ°μ΄νΈ νλλ°λ μ¬μ©ν μ μλ€.
π 룩μ μ μ’ λ₯ π
βͺοΈ νμΌ λ£©μ
βͺοΈ KV Store 룩μ
1. νμΌ λ£©μ λ§λ€κΈ°
μλμ kospi_200.csv νμΌμ μ΄μ©νμ¬ λ£©μ μ λ§λ€μ!
μ€μ μμ 룩μ μ ν΄λ¦
룩μ ν μ΄λΈ νμΌμμ μλ‘ μμ± ν΄λ¦
νμΌμ μ ννκ³ λ£©μ μ΄λ¦μ μ λ ₯
β
κ²μμμ λ€μμ μ€ννλ©΄ ν΄λΉ 룩μ νμΌμ λν΄μ μ‘°νν μ μλ€.
| inputlookup kospi_200.csv
μ°λ¦¬κ° μμ§ν νμΌμλ μ½λλ§ μκ³ νμ¬λͺ μ΄ μ‘΄μ¬ νμ§ μκΈ° λλ¬Έμ νΈμλ₯Ό μν΄μ
μ½λμ νμ¬λͺ μ μ°κ²°ν΄ μ£Όλλ° λ£©μ μ μ¬μ©ν κ²μ΄λ€.
μ€μ λ°μ΄ν°μ 룩μ μ μκΈ° μν΄μλ ν κ°μ§ μμ μ΄ λ νμνλ€.
Add New (μλ‘ μμ±) ν΄λ¦
νμΌ κΈ°λ°μ 룩μ μΌλ‘ μμ±
β
μ μ΄λ κ² μ μ₯νκ² λλ©΄ 룩μ μ μ¬μ©ν μ μκ² λμλ€.
index = "kospi" Date="2023-06-12"
| lookup kospi_200 code OUTPUT name
| table code, name, Date, Close, Open, High, Low
π¬ 룩μ μ μ¬μ©νμ§ μμμ λ : name fieldκ° μμ
index=kospi Date="2023-06-12"
| lookup kospi_200 code OUTPUT name
| table name, code, Date, Close, Open, High, Low
룩μ λͺ λ Ήμ΄λ λ€μμ²λΌ
- "kospi_200" 룩μ μ΄λ¦
- λ³Έ ν μ΄λΈκ³Ό 맀μΉν νλ λͺ "code"
- lookup ν μΆκ°ν νλ λͺ λ€ "name" λ‘ κ΅¬μ±λλ€.
π¬ 룩μ μ μ¬μ©ν λ : name fieldκ° μμ
2. KV Store 룩μ λ§λ€κΈ°
룩μ μλ νμΌ λ£©μ λ§κ³ λ kvstore 룩μ λ μλ€.
μ΄κ²λ ν λ² μ€μ΅ν΄λ³΄μ.
λ€μ μ€μ > 룩μ μΌλ‘ λ€μ΄κ°μ
μ΄λ²μλ 룩μ ν μ΄λΈ νμΌ μ λ‘λ κ³Όμ μμ΄
λ°λ‘ 룩μ μ μλ₯Ό λ§λ λ€.
룩μ μ μμ μλ‘ μΆκ°λ₯Ό ν΄λ¦
λ€λ₯Έ λΆλΆμ λ€ λΉμ·νκ² μ€μ μ νκ³ , νμ μ KV Store λ‘ μ ννλ€.
κ·Έλ¦¬κ³ νλ νλͺ©λ€μ λ£μ.
_keyλ ν΄λ¬ 컬λΌμ ꡬλΆνλ ꡬλΆμλ‘ νλ 컬λΌμΌλ‘ μ²λ¦¬λ¨
μ¬κΈ°μλ λμ μ£Όμ 보μ μ¬νλ€μ κΈ°λ‘νλλ° μ¬μ©ν μμ μ΄λ€.
νμ€ν 리 ννλ‘ λ¨κΈ°μ§ μκ³ νμ¬ μνλ₯Ό κ³μν΄μ μ λ°μ΄νΈ νλ μ©λλ‘ μ¬μ©νλ€.
λν μ£Όμμ 보μ νμ§ μμμ§λ§ κ΄μ¬μλ νλͺ©μΌλ‘ μ€μ νκΈ° μν΄μ "interest" μΉΌλΌλ μΆκ°νλ€.
λλ§ μ¬μ©νλ μμ€ν μ΄λΌ μ¬μ©μ ꡬλΆμ μλ΅ν¨.
KV_store λ₯Ό μ¬μ©νκΈ°μν΄μλ κ°λ¨νμ§λ§ μ½κ°μ λ²κ±°λ‘μ΄ μμ μ΄ μΆκ°μ μΌλ‘ νμνλ€.
μ€νλ ν¬μ μ±(stock)μ local λλ ν 리μμ collections.conf λ₯Ό μμ ν΄μΌ νλ€.
$ vi $SPLUNK_HOME/etc/apps/stock/local/collections.conf
[my_stock]
KV storeλ₯Ό μν 룩μ μμ±!!
| makeresults 1 | eval code = "005930", share = 5, interest = 1
| eval _key = code
| outputlookup my_stock append=true override_if_empty=true
makeresultsλ κ°μμ λ°μ΄ν°λ₯Ό λ§λ€ λ μ¬μ©νλ€.
005930(μΌμ±μ μ) μ£ΌμμΌλ‘ 5μ£Ό μμ νκ³ κ΄μ¬μ£Όλ‘ λ±λ‘νλ€.
μ΄ λ _keyλ₯Ό λ§λ€μ΄ μ£Όμ§ μμΌλ©΄ keyκ° λλ€μΌλ‘ μμ±λκΈ° λλ¬Έμ λμ€μ μ λ°μ΄νΈκ° λμ§ μλλ€.
λ°λΌμ λͺ μμ μΌλ‘ μ€μ ν΄μ£Όλ κ²μ΄ μ’λ€.
κ·Έλ¦¬κ³ μ΅μ’ μ 보λ₯Ό "outputlookup" λͺ λ Ήμ μ΄μ©ν΄ kv_storeμ μ μ₯νλ€.
μ μ₯ μ μ£Όμν μ
λ°λμ append=trueλ‘ ν΄μΌνλ€.
κ·Έλ μ§ μμΌλ©΄ κΈ°μ‘΄ λ΄μ©μ λͺ¨λ μμ νκ² λλ€.
κ·Έλ¦¬κ³ μ λ°μ΄νΈλ₯Ό μν΄μ "override_if_empty"λ trueλ‘ μ€μ νλ€.
μ΄λ° ννλ‘ μ λ ₯νκ² λκ³ λμ€μλ μ£Όμμ μ¬κ³ ν λ λ°λ‘ μ λ°μ΄νΈ λλλ‘ μλν νμ.
λΉμ·ν μ 보λ₯Ό νλ λ μ λ ₯νκ² λ€.
| makeresults 1 | eval code = "068270", share = 6, interest = 1
| eval _key = code
| outputlookup my_stock append=true override_if_empty=true
μ λ ₯μ΄ λλλ©΄ λ€μκ³Ό κ°μ ννλ‘ μ‘°νν μ μλ€.
μ΄μ μ€λΉκ° λλ¬λ€. μ΄μ νλ©΄μ λͺ κ° λ§λ€μ΄ 보μ.
μ°μ μ§κΈ μ λ ₯λ μ£Όμμ λ°νμΌλ‘ νμ¬ λ΄ μμ°μ μνλ₯Ό 체ν¬νλ€.
νμ¬ μμ°μ΄κΈ° λλ¬Έμ 2λΆμμ λ§λ€μ΄ λμ readstock λͺ λ Ήμ μ¬μ©νμ.
| inputlookup my_stock
| map search="| readstock code=$code$ | spath
| eval share = $share$
| table code, price, share "
| eval asset = share * price
| lookup kospi_200 code OUTPUT name
| chart sum(asset) by name
μ¬κΈ°μμ μ¬μ©ν λͺ λ Ήμ map λͺ λ Ήμ΄λ€.
readstockμ ν κ°μ μ’ λͺ©λ§ μ‘°νν μ μλλ° my_stockμ μλ κ²μ μΌμΌν μ‘°ννλ κ²μ ITμΈμΌλ‘μ ν μΌμ΄ μλλ€.
map λͺ λ Ήμ μμ μ‘°νν λ΄μ©μ κΈ°λ°μΌλ‘ λ³λ ¬λ‘ κ²μλ¬Έμ μνν μ μλλ‘ ν΄μ€λ€.
νμ¬κ°λ₯Ό μ‘°νν λ΄μ©μ κΈ°λ°μΌλ‘ λ΄κ° 보μ ν μ£Όμ μλ₯Ό κ³±ν΄μ λμ μμ°μ κ³μ°νλ€.
κ·Έλ¦¬κ³ "chart" λͺ λ Ήμ μ΄μ©ν΄ 보기 μ’κ² λ§λ€μ΄ μ€λ€.
μ μ’ λͺ©μ΄ νλλ°μ μ λμ!
μκ³ λ³΄λ kospi200.csv μ ν¬ν¨λ μ’ λͺ©μ΄ μλλΌμ κΈ°μ‘΄ νμΌμ μ‘΄μ¬νμ§ μμλ κ²!
μ΄λ΄ λ 룩μ μλν°λ₯Ό μ¬μ©νμ¬ λ£©μ μ μμ ν μ μλ€!
룩μ μλν°λ Splunkμμ enterprise μ¬μ©μμκ² λ¬΄λ£λ‘ μ 곡νλ μ±μ΄λ€.
μ¬κΈ°μ νμΈν μ μκ³ μλ€λ©΄
+ Find More Apps λ‘ λ€μ΄κ°μ
λ€μ΄λ‘λ λ°μΌλ©΄ λλ€.
μ΄μ μκ°ν νμΌλ‘ μ΄λν΄μ μ΄λ₯Ό "single value" λ‘ λ³΄μ¬μ£Όκ³ "Trellis" λ₯Ό μ΄μ©ν΄ μ’ λͺ©λ³λ‘ λΆλ¦¬ν΄μ νμνλ€.
ν¬λ§· λΆλΆμ μ¬λ¬κ°μ§ λλ¬λ³΄κ³ κ°μ₯ μ΄λ» 보μ΄λ κ±Έλ‘ μ ννλ€.
νμ¬ λ³΄μ μμ°μ λ€μκ³Ό κ°μ΄ νκ° λλ€.
μ΄μ μ΄ μ°¨νΈλ₯Ό λμ보λλ‘ λ§λ€μ΄μ κΆκΈν λ λ§λ€ κΊΌλ΄ λ³΄μ.
Save Asμ New Dashboard ν΄λ¦
νμν λΆλΆμ μ λ ₯νκ³ μ μ₯
μ€λ₯ λ°μ...
μ°μΈ‘ μλ¨μ λΉ¨κ°μ μΈλͺ¨λ₯Ό ν΄λ¦νλ€.
μ΄μ¨λ λλ¦¬κ² λ€κ³ Run Query Anywayλ₯Ό ν΄λ¦
μ§μμ~~ 첫 νλ©΄μ΄ λ§λ€μ΄ μ‘λ€.
κ°μ λ°©λ²μΌλ‘ νμ¬ μ£Όμ κ°κ²©λ λ§λ€μ΄μ μ μ₯νλ€.
| inputlookup my_stock
| map search="| readstock code=$code$ | spath
| eval share = $share$
| table code, price, share "
| eval asset = price
| lookup kospi_200 code OUTPUT name
| chart sum(asset) by name
κ°μ λ°©λ²μΌλ‘ λ§λ€μ΄μ μ΄λ²μλ μλ‘μ΄ λμ보λκ° μλ κΈ°μ‘΄μ λμ보λμ μ μ₯νλ€.
κΈ°μ‘΄μ λ§λ λμ보λμ μΆκ°
μ΄λ κ² λ κ°κ° λ§λ€μ΄ μ‘λ€.
κ·Έλ°λ° κ±°μ κ°μ 쿼리μΈλ° κ° ν¨λλ§λ€ λμ§λ κ²μ λκ° λΉν¨μ¨μ μΈ κ² κ°μ μ§κ°μ΄ λ λ€.
λμ보λμ νΈμ§ λ²νΌμ ν΄λ¦ν ν "Source"λ₯Ό ν΄λ¦νλ€.
νλ©΄ UIλ₯Ό ꡬμ±νλ XML νμΌμ΄ μΆλ ₯λλλ°, μ¬κΈ°μμ μ€λ³΅λλ κ²μμ μ κ±°ν κ²μ΄λ€.
<dashboard>
<label>λμ μμ°</label>
<!--- μΆκ°λλ λΆλΆ-->
<search id="current_stock">
<query>
| inputlookup my_stock
| map search="| readstock code=$$code$$
| spath
| eval share = $$share$$
| table code, price, share "
</query>
</search>
<!---- μ¬κΈ°κΉμ§ -->
<row>
<panel>
<title>λμ μμ° νν©</title>
...
μ¬κΈ°μμ λ€μμ²λΌ μμ <search> νκ·Έλ₯Ό μΆκ°νκ³ κ³΅ν΅μΌλ‘ μ¬μ©νκ² λλ κ²μλ¬Έμ λ§λ€μ΄ λ£λλ€. κ·Έλ¦¬κ³ κ²μλ¬Έμ λν idλ₯Ό ν λΉν΄ μ€λ€. κΈ°μ‘΄μ΄ $<λ³μλͺ >$ μ΄ λΆλΆμ νλκ° λ μΆκ°λ $$<λ³μλͺ >$$ μ΄ λ κ²μ μ£Όμνμ. λμ보λμμ $<λ³μλͺ >$ μ μ΄λ―Έ λμ보λμ λ³μλ₯Ό μ λ ₯νλ μ©λλ‘ μ¬μ©λκ³ μμ΄μ SPL μμ $<λ³μλͺ >$ κ° $$<λ³μλͺ >$$ μ΄ λκ²λλ€.
β
# 기쑴 ꡬ문
...
<title>λμ μμ° νν©</title>
<single>
<search> <-- base μμ± μΆκ°
<query>| inputlookup my_stock |map search="| readstock code=$$code$$ | spath | eval share = $$share$$ | table code, price, share " | eval asset = share * price
| lookup kospi_200 code OUTPUT name
| chart sum(asset) by name</query> <-- μ¬κΈ° λ³κ²½
<earliest>0</earliest> <-- μ¬κΈ° μμ
<sampleRatio>1</sampleRatio> <--μ¬κΈ° μμ
</search>
...
# λ³κ²½ ν
<title>λμ μμ° νν©</title>
<single>
<search base="current_stock">
<query> eval asset = share * price
| lookup kospi_200 code OUTPUT name
| chart sum(asset) by name</query>
</search>
<option name="colorBy">value</option>
# νμ¬ μ£Όμ κ°κ²© λ³κ²½ ν
<title>νμ¬ μ£Όμ κ°κ²©</title>
<single>
<search base="current_stock">
<query> lookup kospi_200 code OUTPUT name
| chart sum(price) by name</query>
</search>
...
μ΄λ baseλ‘ μ€μ ν μΏΌλ¦¬κ° ν λ² μ€ν λκ³ ,
μ΄ κ²°κ³Όλ₯Ό κΈ°λ°μΌλ‘ μλμ μλ 쿼리λ€μ΄ μνλκ² ν΄μ£ΌκΈ° λλ¬Έμ
κ²μ μλμ λν ν₯μμ κ°μ Έλ€ μ£Όκ³ λ€μ΄λ²μ λν λΆλ΄λ μ€μ΄λ€ κ²μ΄λ€.(URL 4λ² νΈμΆμ΄ 2λ²μΌλ‘ μ€λ€.)
νΈμ§ λͺ¨λμ μλ κΉμ μ½κ°μ UIλ μ 리ν΄μ λ€μκ³Ό κ°μ λͺ¨μ΅μΌλ‘ λ§λ€μλ€.
<row>
<panel>
...
</panel>
<panel>
...
</panel>
</row>
μλ° ννλ‘ λ£μΌλ©΄ ν μ€μ λ€μ΄κ°λ€.