Splunk Infrastructure Basic part 2

Parrot893
3 min readSep 27, 2021

--

ต่อจากบทความที่แล้ววันนี้เราจะมาพูดถึง วิธีการนำเข้าข้อมูลของ Splunk วิธีการนำเข้าข้อมูลของ Splunk มีหลากหลายวิธีด้วยกัน

  • App: เราสามารถใช้ app และ add on ประมวลผลและแสดงผลใน Splunk ได้ โดยทั่วไปแอปจะกำหนดเป้าหมายประเภทข้อมูลเฉพาะและจัดการทุกอย่างตั้งแต่ config ข้อมูลไปจนถึงการสร้างมุมมองที่เป็นประโยชน์ของข้อมูล ตัวอย่างเช่น Splunk App สำหรับ Windows Infrastructure โดยจะมีการกำหนด data inputs รวมถึงมีการสร้าง searches, reports, alerts, และ dashboards สำหรับ Windows host management ให้เรียบร้อยแล้ว ซึ่งเมื่อเราทำการดาวน์โหลดมาเรียบร้อยแล้ว บางครั้งเราไม่สามารถนำมาใช้ได้เลย เนื่องจากค่าบางค่าอาจจะไม่ตรงกัน เช่น sourcetype ชื่ออาจจะไม่เหมือนกันซึ่งในส่วนตรงนี้เราจำเป็นที่จะต้อง modification เอง app และ add on เหล่านี้เราสามารถ download ได้ที่ Splunkbase ความแตกต่างของ Splunk app และ add-on คือ app โดยส่วนใหญ่จะมีเป็น dashboard มาให้ ส่วนของ add-on จะเป็นในส่วนของการนำข้อมูลเข้า การทำ Parsing log
  • Splunk Web: เราสามารถ add ข้อมูลผ่านหน้า Splunk Web ได้โดยไปที่ Settings > Add data.
  • Forwarder: เราสามารถใช้ forwarder เพื่อส่งข้อมูลไปยัง indexers ได้โดยขึ้นอยู่กับระบบปฏิบัติการ โดยเราสามารถกำหนด input ที่จะรับเข้ามาได้เช่น Port ที่ต้องการนำข้อมูลเข้าและ Port ที่ใช้ในการส่งข้อมูลออก format ในการรับข้อมูลเข้า รวมถึงการจัด format ของข้อมูลผ่านการ config โดยมีสองวิธีด้วยกันคือ Splunk Command Line Interface (CLI) และ inputs.conf
  • Splunk Command Line Interface (CLI): เราสามารถใช้ CLI เพื่อกำหนดประเภทของ input จำนวนมากๆได้ รวมถึงสามารถใช้ Heavy forwarder เพื่อเป็นตัวกลางในการรับข้อมูลและส่งต่อไปที่ Splunk cloud หรือ indexers ได้ บน Splunk Enterprise และ Universal Forwarder สามารถใช้ Splunk CLI เพื่อกำหนดค่าอินพุตจำนวนมากได้ จากเชลล์หรือ command prompt ไปที่ไดเร็กทอรี $SPLUNK_HOME/bin/ และใช้คำสั่ง ./splunk ตัวอย่างเช่น คำสั่งต่อไปนี้จะเพิ่ม /var/log/ เป็น input ข้อมูล : “splunk add monitor /var/log/”

Inputs.conf

เมื่อเราระบุ input ด้วย Splunk Web หรือ CLI รายละเอียดจะถูกบันทึกไว้ใน configuration file บน indexers และ heavy forwarder

ตัวอย่างไฟล์การกำหนดค่า inputs.conf stanza

ตัวอย่างการกำหนดค่าต่อไปนี้สั่งให้ Splunk enterprise listen on TCP port 9995 ประเภท log format ต้นทางเป็น log4j และ source เป็น tcp:9995 ให้กับข้อมูล

[tcp://:9995]

connection_host = dns

sourcetype = log4j

source = tcp:9995

โดยปกติแล้วจะมีสามไฟล์ที่เราจะเข้าไปทำการแก้ไขบ่อยๆ ได้แก่ inputs.conf outputs.conf props.conf และ transforms.conf แต่ก่อนที่เราจะไปทำความรู้จักกับสามไฟล์นี้ เราควรทราบก่อนว่าโดยปกติ Splunk เองจะมีไฟล์ default เหล่านี้อยู่แล้ว ซึ่งจะอยู่ใน Path $SPLUNK_HOME/etc/system/default ถ้าเราต้องการแก้ไขหรือเพิ่ม เราจะสร้างไฟล์ config ใหม่แล้วไว้ที่ local ($SPLUNK_HOME/etc/system/local/) แทน จากก่อนหน้านี้เราได้รู้จักไฟล์ inputs.conf กันไปแล้ว สรุปง่ายๆเลยคือเป็นไฟล์ที่ใช้กำหนดการนำเข้าของข้อมูลเช่น [tcp://:9995] หมายถึงให้ Splunk รับข้อมูลผ่าน protocol tcp ผ่าน port 9995 นอกจาก config ที่เป็นตัวอย่างด้านบนนี้แล้วยังสามารถ config เพิ่มเติมได้อีกเช่น index เมื่อรับข้อมูลเข้าให้ไปเก็บไว้ใน index ชื่อ main เราสามารถเพิ่ม config เป็น index=main

Props.conf

อธิบายง่ายๆไฟล์นี้มักเกี่ยวข้องกับการกำหนด format ของข้อมูลที่จะเข้า Splunk เช่น การกำหนดค่า timestamp ในกรณีที่ข้อมูลมี timestamp หลายค่า การ override ข้อมูล บางครั้งการกำหนดค่าในไฟล์นี้จะสัมพันธ์กับการกำหนดค่าในไฟล์ transforms.conf

ตัวอย่างไฟล์การกำหนดค่า props.conf

ตัวอย่าง event

Step 1: Edit file props.conf

Step 2: Restart service Splunk

หลังจาก Masking

Transforms.conf

ไฟล์นี้สามารถใช้เพื่อกำหนดค่า การแปลงข้อมูล การปิดบังข้อมูลขาเข้าที่ละเอียดอ่อนบางประเภทเช่น เลขบัตร credit หรือหมายเลขประกันสังคม กำหนดเส้นทางของข้อมูลไปยัง index ที่ต้องการในกรณีที่มีหลาย index นอกจากการกำหนดเส้นทางไปยัง indexer แล้ว ผู้ส่งต่อจำนวนมากยังสามารถกรองและกำหนดเส้นทางข้อมูลไปยัง queue เฉพาะ หรือละทิ้งข้อมูลทั้งหมดโดยการกำหนดเส้นทางไปยัง null queue

ตัวอย่างไฟล์การกำหนดค่า transforms.conf

เป็นการให้ event ที่ตรงตามเงื่อนไขใน Regex ไม่แสดงผลใน Splunk อย่างที่บอกไว้ในเบื้องต้นคือการกำหนดค่าใน transforms.conf มักมีความสัมพันธ์กับไฟล์ props.conf

Props.conf

[source::/var/log/messages]

TRANSFORMS-set= setnull

Transforms.conf

[setnull]

REGEX = .

DEST_KEY = queue

FORMAT = nullQueue

ในกรณีที่เราต้องการให้ output ออกมากกว่า 1 ที่เราสามารถใช้ outputs.conf ไฟล์เข้ามาช่วยได้

Outputs.conf

เป็นไฟล์สำหรับ กำหนดส่งข้อมูลไปยังผู้รับ โดยปกติสามารถระบุการกำหนดค่าเอาต์พุตบางส่วนได้ในขณะติดตั้ง (Windows universal forwarders เท่านั้น) หรือสามารถใช้ในการส่งข้อมูลออกหลายทาง

ตัวอย่างไฟล์การกำหนดค่า outputs.conf มากกว่า 1 ทาง

[tcpout]

defaultGroup=cloned_group1,cloned_group2

[tcpout:cloned_group1]

server=10.10.10.1:9997, 10.10.10.2:9997, 10.10.10.3:9997

[tcpout:cloned_group2]

server=10.1.1.197:9997, 10.1.1.198:9997, 10.1.1.199:9997, 10.1.1.200:9997

หลังจากที่จบบทความนี้คิดว่าหลายๆคน น่าจะนำข้อมูลเข้า Splunk กันได้แล้วรวมถึงน่าจะมีความเข้าใจเบื้องต้นในการกำหนดค่าไฟล์ config ต่างๆ

--

--