Apa itu Centralized Logging ?
Centralized Loging, jika diBahasa-kan (Pencatatan yang tersentralisasi). Sentralisasi logingg di sini dapat diartikan dimana terdapat berbagai sumber log
, yang di dorong ke satu pusat antarmuka. Di antarmuka tersebut kita dapat melakukan penguraian, penambahan, dan pemantauan waktu nyata terhadap semua data-data log
tersebut.
Pada tulisan Saya kali ini, Saya akan memberikan ringkasan langkah-langkah dalam installasi Graylog kluster sederhana sebagai Centralized Logging.
Topologi
Topologi di atas adalah infrastruktur yang akan kita coba untuk bangun.
Dependency
Langkah pertama adalah melakukan pemasangan Dependency
yang dibutuhkan oleh graylog :
- Install Dependency
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen
The Stack
Untuk membangun Graylog Server yang siap digunakan, ada graylog-server memberlukan integrasi dengan beberapa perangkat lunak lain diantaranya Elasticsearch dan MongoDB :
- Install MongoDB
$ 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 mongodb-org
$ sudo systemctl daemon-reload
$ sudo systemctl enable mongod.service
$ sudo systemctl restart mongod.service
$ sudo systemctl --type=service --state=active | grep mongod
- Install Elasticsearch
$ wget -q https://artifacts.elastic.co/GPG-KEY-elasticsearch -O myKey
$ sudo apt-key add myKey
$ echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch-oss
$ sudo tee -a /etc/elasticsearch/elasticsearch.yml > /dev/null <<EOT
cluster.name: graylog
action.auto_create_index: false
EOT
$ sudo systemctl daemon-reload
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl restart elasticsearch.service
$ sudo systemctl --type=service --state=active | grep elasticsearch
- Install Graylog Server
$ wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb
$ sudo dpkg -i graylog-3.3-repository_latest.deb
$ sudo apt-get update && sudo apt-get install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins
$ sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf
$ sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'InP8TP@AsssowrdKamudiSini' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf
$ sudo sed -i -e "s/#http_bind_address\s=\s127.0.0.1:9000/http_bind_address = 10.252.10.81:9000/g" /etc/graylog/server/server.conf
$ sudo systemctl daemon-reload
$ sudo systemctl enable graylog-server.service
$ sudo systemctl start graylog-server.service
$ sudo systemctl --type=service --state=active | grep graylog
-
Cek apakah graylog-server sudah berasil bind port 9000
Web interface Graylog dapat diakses sekitar 2-3 menit setelah service graylog-server di-start
curl 10.252.10.81:9000 netstat -nputw|grep 9000
Integrasi Inputs Logs
Untuk melakukan input log ke graylog kita memberlukan sebuah forwarder log message yang berfungsi sebagai pengirim logs ke graylog server. Cukup banyak Forwarder yang dapat digunakan diantaranya Ryslog, Filebeat, Fluentd, dan Khusus untuk Docker Gelf(Graylog Extended Format logging driver)
-
Ryslogs
- Install rsyslog
$ sudo apt install ryslog -y $ sudo vi /etc/rsyslog.d/graylog.conf *.* @10.252.10.81:1514;RSYSLOG_SyslogProtocol23Format
10.252.10.81
, Merupakan alamat IP graylog server.1514
, Meruapakan port yang listent input dengan format syslog -
Gelf
docker run -d -p 8889:80 --log-driver=gelf --log-opt gelf-address=udp://10.252.10.81:18312 httpd
--log-driver=gelf
, Adalah yang kita butuhkan untuk menggunakan gelf sebagai forwarder logs menuju graylog server.--log-opt gelf-address=udp://10.252.10.81:18312
, dibutuhkan untuk memberitahukan alamat dan port yang me-listent gelf input pada graylog server.