เนื่องด้วยมีความจำเป็นที่จะต้องศึกษาเรื่องของการทำ Centralize Log Server ด้วย EFK Stack เลยต้องมาลองเล่นทีละตัว วันนี้จะลองมาทำ Graylog โดยการติดตั้งไว้ใน Cloud ก่อนเพื่อให้เพื่อน ๆ ของผมได้ลองเล่นด้วยว่าใช้งานได้มั๊ยเป็นไงบ้าง จะบอกว่าไม่ได้คิดเองทำเองนะครับ ไปดูของต่างประเทศมาแต่มันมีหลายลิงค์เลยจะเอามารวมกันเป็นอันเดียว และเขียนด้วยภาษาไทย
ขั้นตอนหลังจากการติดตั้ง Ubuntu 18.04 แล้วก็มีคร่าว ๆ ดังนี้
Credit: Graylog.fr
- ติดตั้ง Java 8
- ติดตั้ง Elasticsearch และตั้งค่า
- ติดตั้ง MongoDB และตั้งค่า
- ติดตั้ง Graylog 2 และตั้งค่า
ทำความเข้าใจกันก่อนติดตั้งนะครับ
- ที่ติดตั้ง Java 8 เนื่องจากว่า Graylog เค้ารองรับ Java 8 นะครับ เรียกง่าย ๆ recommend Java 8 นั่นเองเพราะผมลองลง Java 11 แล้วเจ๊งครับเหอ ๆ ๆ
- ส่วน Elasticsearch นั้นสามารถใช้งานกับ Java ตั้งแต่ version 8 ขึ้นไปนะครับมันก็เลยคลิกกันว่ารองรับ Java 8 ทั้งคู่จึงเลือกติดตั้ง Java 8 ครับ
- ในระหว่างที่ผมเขียนบทความนี้ก็จะทำการแนบลิงค์แหล่งข้อมูลทั้งหมดมาให้นะครับเผื่อว่าถ้าหากท่านมีความสามารถในการแปลภาษาอังกฤษแล้วล่ะก็คลิกไปอ่านต่อในลิงค์ได้ครับ เพราะหลาย ๆ ครั้งผมก็แปลผิดมาครับเหอ ๆ ๆ
เอาละเรามาเริ่มกันเลยดีกว่า
=======================================================================
Java 8 Installation
=======================================================================
ติดตั้ง Java 8 และ Package ที่จำเป็นกันก่อนเลยนะครับ จะมี Package ตัวนึงที่จะเห็นซ้ำในการติดตั้ง Elasticsearch ด้วยนะครับนั่นคือ Package apt-transport-https นะครับ
ให้พิมพ์คำสั่งด้านล่างลงไปที่ Terminal เลยนะครับ
$ sudo apt-get update && sudo apt-get upgrade $ sudo apt-get install -y apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen
=======================================================================
Elasticsearch Installation
=======================================================================
วิธีการแรกติดตั้งผ่าน Repository ของ Elasticsearch โดยการดำเนินการตามคำสั่งด้านล่างครับ
Elasticsearch มี PGP Key อยู่ที่ MIT นะครับซึ่งมีหมายเลข Key คือ 4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4 ให้เราทำการ add public key เข้าไปตามคำสั่งด้านล่างครับ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - จากนั้นให้ติดตั้ง Package ที่ชื่อ apt-transport-https **ถ้ามีแล้วหรือติดตั้งจากขั้นตอนข้างบนไว้แล้วก็ข้ามข้อนี้ไปครับ sudo apt-get install -y apt-transport-https จากนั้นเราจะสร้าง repository source list ใหม่ขึ้นมาชื่อว่า elastic-6.x.list echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list หลังจากนั้นให้ติดตั้ง Elasticsearch sudo apt-get -y update && sudo apt-get install -y elasticsearch
วิธีการที่สองคือดาวน์โหลด Debian Package มาติดตั้งเองครับ
ให้ไปที่ https://www.elastic.co/downloads/elasticsearch เลื่อนไปที่หัวข้อ Download แล้วคลิกขวาเลือก Copy link address แล้วกลับไปที่ Ubuntu Terminal พิมพ์คำสั่ง wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.deb ** ถ้าหากท่าน Download Package เองอาจจะได้ลิงค์ไม่ตรงกัน เพราะรุ่นอาจจะเปลี่ยนใหม่ไม่ต้องตกใจนะครับ หลังจาก Download Package เสร็จเรียบร้อยให้พิมพ์คำสั่ง sudo dpkg -i elasticsearch-6.6.0.deb
เป็นอันเสร็จสิ้นขั้นตอนการติดตั้ง Elasticsearch ส่วนต่อไปเราจะมาทำการตั้งค่า Elasticsearch กันนะครับ
sudo vim /etc/elasticsearch/elasticsearch.yml ให้เราแก้แค่บรรทัดด้านล่างโดยกดปุ่ม i เพื่อเข้า insert mode นะครับ cluster.name: graylog เสร็จแล้วกด esc เพื่อออกมาสู่ command mode แล้วกด shift + ZZ เพื่อเซฟแล้วออกจากโปรแกรม vim ครับ หรือจะพิมพ์ :wq ก็ได้ครับ
หลังจากนั้นเราจะสั่งให้มันทำงานทุกครั้งที่เปิดเครื่องโดยพิมพ์คำสั่งตามนี้ครับ
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service หลังจากนั้นให้ตรวจสอบว่า elasticsearch ได้ถูกเรียกขึ้นมาแล้วจริงหรือไม่โดยพิมพ์ sudo systemctl status elasticsearch.service ควรจะได้ผลลัพธ์ตามนี้ elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-02-13 03:54:33 UTC; 12h ago Docs: http://www.elastic.co Main PID: 6255 (java) Tasks: 48 (limit: 9472) CGroup: /system.slice/elasticsearch.service ├─6255 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingO └─6348 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller Feb 13 03:54:33 graylog systemd[1]: Started Elasticsearch.
ถ้าได้ตามนี้ถือว่าเป็นอันเสร็จสิ้นขั้นตอนการติดตั้งและปรับแต่ง elasticsearch แล้วครับ
สำหรับท่านใดต้องการศึกษาขั้นตอนการติดตั้งและปรับแต่งเพิ่มเติมเชิญได้ ที่นี่ ครับ
=======================================================================
MongoDB Installation
=======================================================================
พิมพ์คำสั่งด้านล่างลงไปได้เลยครับ $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 $ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list $ sudo apt-get update $ sudo apt-get install -y openssl libcurl3 mongodb-org $ sudo apt-get install mongodb
เสร็จสิ้นการติดตั้งต่อไปจะปรับแต่ง MongoDB และตั้งค่าให้เปิดพร้อมระบบนะครับ
*** แต่มีประเด็นแจ้งให้ทราบอีกเรื่องคือผมติดตั้งผ่านช่องทางของ Graylog ถ้าหากว่าท่านติดตั้งผ่านช่องทางคำแนะนำของ MongoDB เองจะได้ version 4 นะครับแต่ถ้าทำตามขั้นตอนจะได้ version 3.6 มาแทนครับ อ้างอิงจากวันที่ทำการติดตั้งนะครับ
$ sudo vim /etc/mongodb.conf ประมาณบรรทัดที่ 11-12 bind_ip = 127.0.0.1 #port = 27017 ให้แก้ค่าเป็นหมายเลข IP ที่ต้องการให้ผูกกับบริการ หรือถ้าจะกันเหนียวก็จัด 0.0.0.0 เลยก็ได้ครับ แล้วลบเครื่องหมาย # ที่บรรทัดล่างออกด้วยครับจากนั้นเซฟไฟล์ได้ พิมพ์คำสั่งด้านล่างได้เลย $ sudo systemctl daemon-reload $ sudo systemctl enable mongod.service $ sudo systemctl start mongod.service จากนั้นให้ทดสอบว่าระบบได้เรียก MongoDB ขึ้นมาหรือยัง $ sudo systemctl status mongodb หรือทดสอบว่าที่ Port ที่เราเอา # ออกถูกเปิดใช้งานจริงหรือไม่โดยพิมพ์ $ sudo ss -tunelp | grep 27017 tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* uid:112 ino:115810 sk:a <-> ถ้าขึ้นแบบนี้ถือว่าเปิด แต่เพื่อความชัวร์ลองตรวจสอบอีกครั้ง $ sudo mongo --eval 'db.runCommand({ connectionStatus: 1 })' MongoDB server version: 3.6.3 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 } ได้ผลลัพธ์แบบนี้ถือว่า OK ผ่าน ->
=======================================================================
Graylog 2.5 Installation
=======================================================================
ไม่พูดมากดึกแล้วง่วง ต่อยาว ๆ เลยแล้วกันครับ
$ wget https://packages.graylog2.org/repo/packages/graylog-2.5-repository_latest.deb $ sudo dpkg -i graylog-2.5-repository_latest.deb $ sudo apt-get update && sudo apt-get install graylog-server
จากนั้นให้ตั้งค่าโดยให้ทำตามขั้นตอนด้านล่างได้เลยครับ
$ sudo vim /etc/graylog/server/server.conf เราจะต้องตั้งค่าตัวแปรประมาณ 3-4 ตัวตามนี้ password_secret <-- ใช้สำหรับเอาไว้เข้ารหัสผ่านข้อมูลบัญชีผู้ใช้ในระบบ root_password_sha2 <-- ใช้สำหรับตั้งค่ารหัสผ่านให้กับบัญชี admin นั่นเอง rest_listen_uri <-- ใช้สำหรับให้ผู้ดูแลระบบส่ง Log เข้ามาผ่าน REST API นั่นเอง web_listen_uri <-- ใช้สำหรับให้เข้าถึงผ่านหน้าเว็บ สามารถบริหารจัดการข้อมูล Query หรือสร้าง Dashboard และส่ง Log เข้ามาทางนี้ได้อีกทางเช่นกัน $ echo -n Password | sha256sum ตรงคำว่า Password ข้างบนให้เปลี่ยนเป็นรหัสผ่านที่ท่านต้องการใส่เข้าไปแทนจะได้รหัสมาชุดนึงให้เอาไปใส่ในบรรทัด root_password_sha2 pwgen -N 1 -s 96 ให้เอาค่าที่ได้ไปใส่ในบรรทัด password_secret ส่วนบรรทัด rest_listen_uri และ web_listen_uri ให้เอาเครื่องหมาย # ออกแล้วเปลี่ยนหมายเลข IP กับ Port ให้เป็นหมายเลขที่ต้องการได้เลยแต่ต้องจำให้ได้ด้วยนะเหอ ๆ ๆ เป็นอันเสร็จสิ้นการตั้งค่า
$ sudo systemctl daemon-reload $ sudo systemctl enable graylog-server.service $ sudo systemctl start graylog-server.service
ขั้นตอนการติดตั้ง และปรับแต่งค่าของโปรแกรม Graylog 2.5 กับ MongoDB สามารถศึกษาเพิ่มเติมได้ ที่นี่ ครับ
หลังจากติดตั้งเสร็จให้เปิดโปรแกรม Web Browser เช่น Google Chrome แล้วพิมพ์หมายเลข IP:Port ลงไปได้เลยครับจะเห็นหน้าเว็บแบบนี้
และเราสามารถใช้ username : admin พร้อมกับรหัสผ่านที่ได้กำหนดไว้ก่อนหน้านี้ลงไปก็จะเห็นหน้า Welcome ตามภาพด้านล่างเป็นอันเสร็จสิ้นการติดตั้ง Graylog 2 ครับ
จากนี้ถ้าต้องการตั้งค่าให้ส่ง log เข้ามาที่ graylog ให้อ่าน ที่นี่
ถ้าต้องการเรียนรู้เกี่ยวกับการ extract log ให้อ่าน ที่นี่
ถ้าต้องการเรียนรู้เกี่ยวกับการค้นหาข้อมูลจาก log ให้อ่าน ที่นี่
ผิดถูกประการใดติชมได้ แต่อย่าแรงนะครับ ^ ^ ขอบคุณที่อ่านครับ
No comments:
Post a Comment