วิธีการทำ ELK Stack สำหรับ CentOS

1.ล็อกอินเข้าสู่ระบบ

2.กดที่เมนู Cloud Server เพื่อดูรายการ Cloud Server ที่มีอยู่

3.เลือก Cloud Server ที่ต้องการติดตั้ง ELK Stack หลังจากนั้นกดปุ่ม CONSOLE หรือจะ Login เข้าเครื่องด้วยการใช้ SSH เข้าเครื่อง (ในตัวอย่างนี้ผมขอใช้ SSH แทนการใช้งานผ่านหน้าเว็บไซต์นะครับ) หลังจาก Login แล้วจะได้หน้าตาตามด้านล่างครับ

4.พิมพ์คำสั่ง yum update -y เพื่อ Update Software ภายในเครื่อง

5.ทำการ Disable SElinux โดยไปแก้ไขไฟล์ที่ /etc/selinux/config ให้เปลี่ยนเป็น SELINUX=disabled

จากนั้นพิมพ์คำสั่ง reboot แล้วเช็คว่า SElinux ยังทำงานอยู่ไหมเวลาเปิดเครื่องใหม่ โดยใช้คำสั่ง getenforce ต้องขึ้นว่า Disabled

6.พิมพ์คำสั่ง yum install java-1.8.0-openjdk -y เพื่อติดตั้ง Java สำหรับ Run Elasticsearch เมื่อติดตั้งเสร็จเรียบร้อยแล้วให้ตรวจสอบว่าระบบได้ติดตั้ง Java ให้แล้ว โดยใช้คำสั่ง java -version

7.ทำการ import GPG keys สำหรับ Elasticsearch ซึ่ง Key จะใช้แชร์กันกับ logstash และ Kibana เพื่อให้ Install และ Run Elasticsearch โดยใช้คำสั่ง rpm -import http://packages.elastic.co/GPG-KEY-elasticsearch

8.ทำการสร้าง Elasticsearch repo เพื่อใช้ในการติดตั้ง Elasticsearch ที่ /etc/yum.repos.d/elasticsearch.repo โดยใส่ข้างความข้างล่างไว้ในไฟล์ จากนั้น save ไฟล์

[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

เพื่อตรวจสอบว่าสร้างไฟล์ได้สำเร็จใช้คำสั่ง cat /etc/yum.repos.d/elasticsearch.repo เพื่อตรวจสอบ จะได้ผลลัพธ์ดังรูปด้านล่าง

9.จากนั้นพิมพ์คำสั่ง yum install -y elasticsearch เพื่อติดตั้ง Elasticsearch

จากนั้นใช้คำสั่ง systemctl enable –now elasticsearch เพื่อทำการ Enable และ Start Elasticsearch Service จากนั้นพิมพ์คำสั่ง systemctl status elasticsearch

หรือจะใช้คำสั่ง netstat -tulnp เพื่อตรวจสอบการใช้งาน port ต่างๆบนเครื่องก็ได้ครับ ซึ่งปกติแล้ว Elasticsearch จะใช้ที่ :::9200 หรือ 127.0.0.1:9200

หรือจะใช้คำสั่ง curl http://localhost:9200 เพื่อตรวจสอบ

10.จากนั้นพิมพ์คำสั่ง yum install -y logstash เพื่อติดตั้ง Logstash

ทำการสร้างไฟล์ File Configure ของ Logstash โดยสร้างไว้ที่ /etc/logstash/conf.d/logstash.conf โดยใส่ข้อความข้างล่างต่อไปนี้ครับ (ในกรณีนี้ลูกค้าอาจเปลี่ยนแปลง Configure ตามความต้องการของตัวเองได้ครับ)

input {
  beats {
    port => 5443
  }
}
filter {
    grok {
      match => [ "message" => "%{COMBINEDAPACHELOG+%{GREEDYDATA:extra_field" ]
      overwrite => [ "message" ]
    }
}
output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

จากนั้นทำการ Save File และใช้คำสั่ง systemctl enable –now logstash เพื่อทำการ Enable และ Start Logstash Service หลังจากนั้นใช้คำสั่ง systemctl status logstash เพื่อตรวจสอบการทำงานของ logstash

หรือจะใช้คำสั่ง netstat -tulnp เพื่อตรวจสอบการใช้งาน port ต่างๆบนเครื่องก็ได้ครับ ซึ่งปกติแล้ว Logstash จะใช้ที่ในการรับ Input คือ :::5443

หรือจะใช้คำสั่ง curl http://127.0.0.1:9600 เพื่อตรวจสอบ

11.จากนั้นใช้คำสั่ง yum install -y epel-release เพื่อติดตั้ง Repo สำหรับติดตั้ง nginx

จากนั้นใช้คำสั่ง yum install -y nginx เพื่อติดตั้ง nginx สำหรับ Run Kibana

จากนั้นใช้คำสั่ง yum install -y httpd-tools เพื่อใช้ในการสร้าง User & Password สำหรับ Login Kibana

ใช้คำสั่ง systemctl enable –now nginx เพื่อทำการ Enable และ Start Nginx Service หลังจากนั้นใช้คำสั่ง systemctl status nginx เพื่อตรวจสอบการทำงานของ Nginx

จากนั้นใช้คำสั่ง htpasswd -c /etc/nginx/.kibana-user admin (admin คือ Username ครับสามารถเปลี่ยนได้ตามที่ชอบ) เพื่อ Generate Password สำหรับ Login Kibana จากนั้นทำการใส่ Password และ Re-type Password 

ทำการสร้างไฟล์ File Configure ของ Nginx โดยสร้างไว้ที่ /etc/nginx/conf.d/kibana.conf โดยใส่ข้อความข้างล่างต่อไปนี้ครับ (ในกรณีนี้ลูกค้าอาจเปลี่ยนแปลง Configure ตามความต้องการของตัวเองได้ครับ)

server {
    listen 80;
 
    server_name elk-stack.co;
 
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;
 
    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

เมื่อทำการสร้างไฟล์เรียบร้อยแล้วให้ทำการลบ server block { } หรือ server context { } ในไฟล์ /etc/nginx/nginx.conf ตามด้านล่างนี้ออก

หลังจากนั้นใช้คำสั่ง nginx -t เพื่อตรวจสอบ Syntax nginx ถ้าถุกต้องจะขึ้นตามรูปด้านล่าง

ใช้คำสั่ง systemctl reload nginx เพื่อทำการ Reload Configuration File หลังจากนั้นใช้คำสั่ง systemctl status nginx เพื่อตรวจสอบการทำงานของ Nginx

หลังจากนั้นใช้คำสั่ง yum install -y kibana เพื่อติดตั้ง Kibana

ใช้คำสั่ง systemctl enable –now kibana เพื่อทำการ Enable และ Start Kibana Service หลังจากนั้นใช้คำสั่ง systemctl status kibana เพื่อตรวจสอบการทำงานของ Kibana

หรือจะใช้คำสั่ง netstat -tulnp เพื่อตรวจสอบการใช้งาน port ต่างๆบนเครื่องก็ได้ครับ ซึ่งปกติแล้ว Kibana จะใช้คือ 127.0.0.1:5601

ทำการแก้ไขไฟล์ Configuration ของ Kibana เพื่อให้เชื่อมต่อกับ Elasticsearch เพื่อดึงข้อมูล โดยไปที่ /etc/kibana/kibana.yml โดยเพิ่มบรรทัดตามด้านล่างนี้ในไฟล์ 

server.port: 5601
elasticsearch.hosts: "http://localhost:9200"

จากนั้นใช้คำสั่ง systemctl reload kibana เพื่อ Reload Configuration File หลังจากนั้นใช้คำสั่ง systemctl status kibana ตรวจสอบการทำงานของ Kibana

ทดสอบเข้าเว็บไซต์ผ่าน ip address ของเครื่อง Cloud Server จากได้หน้าตาตามด้านล่างครับ

ให้ใช้ Username ตามที่ตั้งไว้ในคำสั่ง htpasswd ในที่นี้คือ admin และ Password ที่ลูกค้าทำการตั้งครับ

12.ทำการติดตั้ง Filebeat ให้กับ Client เพื่อใช้ส่งข้อมูลจากเครื่อง Client ไปให้ Logstash ทำการส่งต่อไปให้ Elasticsearch และ Kibana เรียกข้อมูลมาแสดง ทำการ SSH เข้าเครื่อง Client ที่ต้องการ

พิมพ์คำสั่ง yum update -y เพื่อ Update Software ภายในเครื่อง

ทำการ Disable SElinux โดยไปแก้ไขไฟล์ที่ /etc/selinux/config ให้เปลี่ยนเป็น SELINUX=disabled

จากนั้นพิมพ์คำสั่ง reboot แล้วเช็คว่า SElinux ยังทำงานอยู่ไหมเวลาเปิดเครื่องใหม่ โดยใช้คำสั่ง getenforce ต้องขึ้นว่า Disabled (ในรูปนี้ผม Reused นะครับ IP อาจจะไม่ใช่เครื่องที่ทำแต่ควรจะได้ผลลัพธ์ตามด้านล่าง)

ทำการ import GPG keys สำหรับ Elasticsearch ซึ่ง Key จะใช้แชร์กันกับ logstash และ Kibana เพื่อให้ Install และ Run Elasticsearch โดยใช้คำสั่ง rpm -import http://packages.elastic.co/GPG-KEY-elasticsearch

ทำการสร้าง Elasticsearch repo เพื่อใช้ในการติดตั้ง Elasticsearch ที่ /etc/yum.repos.d/elasticsearch.repo โดยใส่ข้างความข้างล่างไว้ในไฟล์ จากนั้น save ไฟล์

[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

เพื่อตรวจสอบว่าสร้างไฟล์ได้สำเร็จใช้คำสั่ง cat /etc/yum.repos.d/elasticsearch.repo เพื่อตรวจสอบ จะได้ผลลัพธ์ดังรูปด้านล่าง

จากนั้นพิมพ์คำสั่ง yum install -y filebeat เพื่อติดตั้ง Filebeat

จากนั้นใช้คำสั่ง systemctl enable –now filebeat เพื่อทำการ Enable และ Start Elasticsearch Service จากนั้นพิมพ์คำสั่ง systemctl status filebeat

ทำการแก้ไขไฟล์ File Configure ของ Filebeat โดยแก้ไขที่ /etc/filebeat/filebeat.yml โดยใส่ข้อความข้างล่างต่อไปนี้ครับ

  • สามารถแก้ไขว่าจะให้ส่ง log ไหนให้กับ Logstash ได้โดยตั้งค่าที่ paths: ครับตาม Format ที่กำหนดห้ามใช้ Tab 
  • แก้ไข enabled :  จาก false ให้เป็น true

ทำการ Comment (เพิ่ม #) หน้าบรรทัดใน Block Elasticsearct Output ที่เมนูตามด้านล่างนี้ครับ เพราะเราไม่ได้เชื่อมต่อกับ Elasticsearch โดยตรงเราเชื่อมต่อกับ Logstash ก่อนแล้วให้ Logstash ส่งต่อให้ Elasticsearch

  • #output.elasticsearch:
  • #hosts: [“localhost:9200”] 

ทำการ Uncomment (ลบ # ออก) หน้าบรรทัดใน Block Logstash Output ที่เมนูตามด้านล่างนี้ครับ

  • output.logstash:
  • hosts: [“XXX.XXX.XXX.XXX:5443”] ปล. XXX คือ IP ของเครื่องที่ทำการลง Logstash & Elasticsearch & Kibana ไว้

จากนั้นทำการ Save File และใช้คำสั่ง systemctl restart filebeat เพื่อ Reload Filebeat

ทำการติดตั้ง nginx เพื่อทดสอบการส่ง Log File ของ Nginx ใช้คำสั่ง yum install -y epel-release nginx เพื่อติดตั้ง Repo สำหรับติดตั้ง nginx

จากนั้นใช้คำสั่ง yum install -y nginx เพื่อติดตั้ง nginx สำหรับ Run Kibana

ใช้คำสั่ง systemctl enable –now nginx เพื่อทำการ Enable และ Start Nginx Service หลังจากนั้นใช้คำสั่ง systemctl status nginx เพื่อตรวจสอบการทำงานของ Nginx

ทำการทดสอบว่า Log Nginx สามารถส่งได้โดยผมจะสร้างไฟล์ test.conf ไว้ที่ /etc/nginx/conf.d/test.conf โดยข้อความจะเป็นด้านล่างนี้ครับ โดยคำสั่ง vi นี่เป็น Tools ตัวหนึ่งที่สามารถใช้แก้ไข สร้าง ไฟล์ได้

  • Test Error Ngine Filebeat

ใช้คำสั่ง systemctl restart nginx เพื่อทำการ Restart Service Nginx และคำสั่ง systemctl status nginx เพื่อดูการทำงานของ nginx

จะไม่สามารถ Start Service Nginx ได้ โดยสามารถดู Log Error ได้โดยคำสั่ง tail -f /var/log/nginx/error.log

ทดสอบเข้าเว็บไซต์ผ่าน ip address ของเครื่อง Cloud Server จากได้หน้าตาตามด้านล่างครับ

หลังจากกรอก Username และ Password แล้วจะมีหน้าตาตามด้านล่างครับ หลังจากนั้น ให้คลิกคำว่า Try our sample data

หลังจากนั้นคลิกที่เมนู ( ขีด 3 ขีด หรือ แฮมเบอร์เกอร์ Icon ) หลังจากนั้นคลิกที่เมนู Visuallize

ทำการตั้ง index pattern ว่า filebeat-* แล้วกด Next step

จากนั้นทำการเลือก Time Filter field name ตามที่ต้องการ จากนั้นกด Create index pattern

หลังจากนั้นคลิกที่เมนู ( ขีด 3 ขีด หรือ แฮมเบอร์เกอร์ Icon ) หลังจากนั้นคลิกที่เมนู Discover

จากนั้นก็จะเห็น Error Log ของ Nginx ที่เราพึ่งติดตั้งเสร็จเรียบร้อยแล้วครับ

 

 

 

Was this article helpful?