Published December 29, 2020 by with 0 comment

OpenStack : Deploy All in One OpenStack Dengan Kolla-ansible

 


Halo semua pada kesempatan kali ini kami akan share tutorial tentang cara deploy openstack dengan cara otomatis menggunakan kolla-ansible. Untuk environment yang akan kami gunakan sebagai berikut :
| Key  | Value |
| ----- | --- |
| Interfaces   | 2 interface, enp1s0 : 10.20.21.0/24, enp7s0 : isolated network  |
| Ram | 8GB  |
| vCPUs| 2 |
| Storage| 2 Disk, 1 Disk Sistem (30-40GB), 1 Cinder volume(50GB) |
| Operating System | Ubuntu 18.04 |
VM atau server diatas berjalan di atas KVM, untuk yang belum pernah belajar KVM bisa mampir di link berikut. Untuk versi openstack yang akan kita deploy adalah ussuri. untuk tahapannya seperti berikut :

1. Prerequisite
2. Setup untuk deploy
3. Deploy
4. Post Deploy

Ya kurang lebih seperti diatas, untuk tahapannya. Oke langsung saja ke panduannya :
1. Prerequisite
Pada Tahap ini kita akan melakukan persiapan sebelum melakukan setup dan menuju ke deploy.
- Install docker, disarankan versi 18 terbaru, jika menggunakan versi 20, kami coba terdapat error saat verifikasi
```bash
$ docker version
```
- Konfigurasi LVM
```bash
# check all disk
$ sudo fdisk -l
# LVM 
$ sudo pvcreate -f /dev/vdx
$ sudo pvs
$ sudo vgcreate -f openstack_cinder /dev/vdx
$ sudo vgs
```
- Update and Upgrade package
```bash
$ sudo apt-get update
$ sudo apt-get upgrade
```
2. Setup untuk deploy
```bash
# Install package
$ sudo apt install python3-dev python3-venv libffi-dev gcc libssl-dev git

# Create virtual environment ('openstack-ussuri' bebas untuk dirubah)
$ python3 -m venv $HOME/openstack-ussuri
$ source $HOME/openstack-ussuri/bin/activate

# Akan menjadi seperti berikut
(openstack-ussuri) sulaiman@al-faruq:~$

# Upgrade PIP
(openstack-ussuri) sulaiman@al-faruq:~$ pip install -U pip
```

Install ansible and Kolla-ansible

```bash
# install ansible
(openstack-ussuri) sulaiman@al-faruq:~$ pip install ansible

# ansible config
(openstack-ussuri) sulaiman@al-faruq:~$ vim $HOME/ansible.cfg
...
[defaults]
host_key_checking=False
pipelining=True
forks=100
...

# install kolla-ansible
(openstack-ussuri) sulaiman@al-faruq:~$ pip install kolla-ansible 
(openstack-ussuri) sulaiman@al-faruq:~$ sudo mkdir /etc/kolla
(openstack-ussuri) sulaiman@al-faruq:~$ sudo chown $USER:$USER /etc/kolla
(openstack-ussuri) sulaiman@al-faruq:~$ cp $HOME/openstack-ussuri/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
(openstack-ussuri) sulaiman@al-faruq:~$ cp $HOME/openstack-ussuri/share/kolla-ansible/ansible/inventory/all-in-one .
(openstack-ussuri) sulaiman@al-faruq:~$ vim /etc/kolla/globals.yml
...
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "ussuri"
kolla_internal_vip_address: "10.20.21.200"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
network_interface: "enp1s0"
neutron_external_interface: "enp7s0"
neutron_plugin_agent: "openvswitch"
enable_haproxy: "yes"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
keystone_token_provider: 'fernet'
cinder_volume_group: "openstack_cinder"
nova_compute_virt_type: "qemu"
...
```
3. Deploy
```bash
# generate password
(openstack-ussuri) sulaiman@al-faruq:~$ kolla-genpwd
(openstack-ussuri) sulaiman@al-faruq:~$ kolla-ansible -i all-in-one bootstrap-servers
(openstack-ussuri) sulaiman@al-faruq:~$ kolla-ansible -i all-in-one prechecks
(openstack-ussuri) sulaiman@al-faruq:~$ kolla-ansible -i all-in-one deploy
```
4. Post Deploy
```bash
(openstack-ussuri) sulaiman@al-faruq:~$ pip install python-openstackclient python-neutronclient python-glanceclient
(openstack-ussuri) sulaiman@al-faruq:~$ kolla-ansible post-deploy
(openstack-ussuri) sulaiman@al-faruq:~$ source /etc/kolla/admin-openrc.sh
(openstack-ussuri) sulaiman@al-faruq:~$ vim openstack-ussuri/share/kolla-ansible/init-runonce
...
ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
EXT_NET_CIDR=${EXT_NET_CIDR:-'10.20.21.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=10.20.21.150,end=10.20.21.199'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'10.20.21.1'}
...
(openstack-ussuri) sulaiman@al-faruq:~$ openstack-ussuri/share/kolla-ansible/init-runonce
# hasilnya seperti berikut
...
+----------------------------+-----------+
| Field                      | Value     |
+----------------------------+-----------+
| OS-FLV-DISABLED:disabled   | False     |
| OS-FLV-EXT-DATA:ephemeral  | 0         |
| disk                       | 160       |
| id                         | 5         |
| name                       | m1.xlarge |
| os-flavor-access:is_public | True      |
| properties                 |           |
| ram                        | 16384     |
| rxtx_factor                | 1.0       |
| swap                       |           |
| vcpus                      | 8         |
+----------------------------+-----------+

Done.

To deploy a demo instance, run:

openstack server create \
    --image cirros \
    --flavor m1.tiny \
    --key-name mykey \
    --network demo-net \
    demo1

```

```bash
# check openstack service
(openstack-ussuri) sulaiman@al-faruq:~$ openstack service list
+----------------------------------+-------------+----------------+
| ID                               | Name        | Type           |
+----------------------------------+-------------+----------------+
| 04e41f72c008488182bff61e2601d1e6 | keystone    | identity       |
| 2af3f2f410ff4fdcb4f210cf129a9ca7 | neutron     | network        |
| 557ad1c41ca444e0b31d5d9b9057a878 | nova        | compute        |
| 7a25f64412194916898f9226dd49c243 | heat-cfn    | cloudformation |
| 7c0d1b1fd3a3488d9816f642058882a5 | nova_legacy | compute_legacy |
| 818f1176de7e47059ab9d3d66db112d9 | heat        | orchestration  |
| a649b28bb0d54593868953c2450468fe | placement   | placement      |
| a8f3d6bac282490e9562738b8b2f7522 | glance      | image          |
| cca52c5f7c6d4677afd6bd182001fcab | cinderv3    | volumev3       |
| faeebb8439be4b328ecc0b812224fdc4 | cinderv2    | volumev2       |
+----------------------------------+-------------+----------------+

# check password login horizon
(openstack-ussuri) sulaiman@al-faruq:~$ grep keystone_admin_password /etc/kolla/passwords.yml
```
  
5. Verifikasi

- Akses dashboard openstack dengan ip address VIP (10.20.21.200) pada web browser 

- Login dengan user 'admin' dan password yang sudah dicheck sebelumnya



Yaps, sekian dulu, sampai jumpa di tutorial berikutnya!
Read More
      edit
Published December 26, 2020 by with 0 comment

Docker : Using Multi-stage Build to reduce Docker Image sizes


 Halo semua, pada kesempatan kali ini kami akan share tutorial tentang multi-stage build pada Docker. Sebelum masuk ke tahapannya, perlu kita tahu apa tujuan dari multi-stage build ini sendiri. Tujuan dari penggunaannya sendiri salah satunya adalah untuk mengurangi ukuran dari image. Kenapa ini bisa terjadi ? ya karena yang akan digunakan adalah hanya file-file yang perlu saja dan menghapus yang tidak perlu digunakan. Ada beberapa cara yang dapat digunakan untuk mengecilkan ukuran dari image docker,  Contohnya seperti berikut :

    - Gunakan file .dockerignore untuk menghapus konten yang tidak perlu dari konteks build

    - Cobalah untuk menghindari menginstal paket dan dependensi yang tidak perlu

    - Minimalkan lapisan pada gambar

    - Gunakan image alpine jika memungkinkan

    - Gunakan multi-stage build, yang akan saya kita coba pada tutorial kali ini.

Ya, mari kita coba ke multi-stage build. Multi-stage Build pada Docker adalah fitur baru yang diperkenalkan di Docker 17.05. Ini adalah metode untuk mengurangi ukuran image, membuat organisasi perintah Docker yang lebih baik, dan meningkatkan kinerja sekaligus menjaga Dockerfile mudah dibaca dan dipahami. Multi-stage Build adalah membagi Dockerfile menjadi beberapa tahap untuk meneruskan artefak yang diperlukan dari satu tahap ke tahap lainnya dan akhirnya mengirimkan artefak terakhir di tahap terakhir. Dengan cara ini, gambar akhir kami tidak akan memiliki konten yang tidak perlu kecuali artefak yang kami perlukan. Dan berikut adalah contoh perbandingannya :

1. Dockerfile tanpa menggunakan multi-stage build

```bash
FROM node

RUN apt-get update && apt-get upgrade -y \
    && apt-get clean

RUN mkdir /app
WORKDIR /app

COPY package*.json /app/

RUN npm install

COPY src /app/src

EXPOSE 3000

CMD [ "npm", "start" ]
```

2. Dockerfile menggunakan multi-stage build

```bash
# base
FROM node AS stage1

RUN apt-get update && apt-get upgrade -y \
    && apt-get clean

RUN mkdir /app
WORKDIR /app

COPY package*.json ./

# install dependecies
FROM stage1 AS stage2

RUN npm install

# release / final stage
FROM gcr.io/distroless/nodejs

COPY --from=stage2 /app/node_modules ./node_modules

COPY src /app/src

EXPOSE 3000

CMD [ "/app/src/server.js" ]
```

3. Verifikasi

```bash
[nodejs_app]
09:51 >> docker images
REPOSITORY                 TAG         IMAGE ID       CREATED         SIZE
multistage                 latest      8b71f3886b93   3 minutes ago   131MB
without_multistage         latest      9c570c03752a   2 weeks ago     1.01GB
```



Yaps, dari gambar verifikasi kita dapat membandingkan ukuran antara menggunakan multi-stage build dan tanpa menggunakannya, dalam membuat sebuah image pada docker. Sekian dulu sampai bertemu di tutorial berikutnya!

Read More
      edit
Published December 08, 2020 by with 0 comment

Jenkins : Deploy simple java application


 Halo semua, pada kesempatan kali ini kami akan share tutorial tentang deploy aplikasi java sederhana di jenkins. Dan berikut adalah langkah-langkahnya :

1. Fork repositori aplikasi berikut menjadi repo kita pada github

```bash
https://github.com/jenkins-docs/simple-java-maven-app
```


Ada pada bagian pojok kanan atas

2. Buat Project pada jenkins

- Project Name: simple java app

- Type: Freestyle Project

- GitHub project : https://github.com/[YOUR-USERNAME]/simple-java-maven-app

- Source Code Management: git

- Repository URL: https://github.com/[YOUR-USERNAME]/simple-java-maven-app

- Build Triggers: GitHub hook trigger for GITScm polling

- Build: Invoke top-level Maven targets

- Maven Version: (masukan nama Maven yang sudah dibuat dilangkah sebelumnya)

- Goals: clean package

- Save


3. Build

4. Verifikasi


```bash
$ ls -la /var/lib/jenkins/workspace/simple\ java\ app/target/
# kalau ada file *.jar berarti process deploy berhasil
```

Note : karena kita menjalankan jenkins pada localhost, github tidak bisa membacanya, untuk membuatnya dapat diketahui oleh publik dapat dengan langkah berikut

1. Download ngrok

```bash
wget -c https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ sudo apt install unzip -y
$ unzip ngrok-stable-linux-amd64.zip
```

2. Daftar akun ngrok

```bash
https://dashboard.ngrok.com
```

3. Jalankan ngrok

```bash
$ screen -R ngrok
$ ./ngrok authtoken "nomor_token_yang_didapat_di_dashboard_ngrok_com"
$ ./ngrok http 8080
```

Yaps, sekian dulu untuk tutorial kali ini sampai jumpa di tutorial berikutnya!

Read More
      edit
Published December 03, 2020 by with 0 comment

Jenkins : Manage Configuration, plugin and etc

 

Halo semua, pada kesempatan kali ini kami akan share tutorial tentang mengatur beberapa konfigurasi global, plugin dan pengaturan yang ada pada jenkins. Berikut adalah beberapa pengaturan sederhananya :

1. Mengatur Konfigurasi Global
Untuk mengatur konfigurasi secara global yang ada pada jenkins, kita bisa lihat pada gambar berikut :


Klik pada bagian, Manage jenkins 


Untuk, beberapa konfigurasi yang kita perlukan ada disana, kali ini kita akan coba untuk konfig JDK dan Mave. jadi kita bisa klik Global Tool Configuration



2. Konfig JDK

Melanjutkan dari langkah sebelumnya, kita akan mengatur JDK pada global tool configuration , berikut beberapa hal yang perlu dilakukan:

Pilih -> Add JDK

3. Konfig Maven
Mengatur maven, masih pada page sama yaitu di global tool configuration

Pilih -> Add Maven


 
Pilih -> save jika sudah tidak ada lagi

4. Mengatur Plugin

Masih sama pada menu dari manage jenkins , kita menuju ke manage plugins 

Pada contoh, kita akan medownload dan install plugin Green Balls , klik pada -> available -> search

Ceklist -> download now and ater it restart 


Yaps, sekian dulu. sampai jumpa di tutorial berikutnya!!

Read More
      edit
Published December 03, 2020 by with 0 comment

Jenkins : Create and Build Simple Project


 Halo semua, pada kesempatan kali ini kami akan share tutorial tentang bagaimana caranya membuat dan membangun aplikasi sederhana dengan jenkins. Berikut adalah langkah-langkahnya :

1. Akses jenkins dashboard



2.  Pilih Create job 


3.  Beri nama project dan pilih freestyle project 



4.  Klik pada tab Build -> Add Build step -> Execute shell


5.  Pada Kolom, Command-> isi dengan berikut  echo "Hello from Jenkins!" 


6.  Klik save, lalu akan di arahkan pada dashboard dari project, seperti berikut :

7. Pilih -> Build Now
8. Check pada -> Build History

9. Nomor yang adalah urutan, kita sudah berapa kali membuild. Jika kita klik, muncul seperti berikut :
10. Pilih -> Console Output. Dan lihat pada bagian kanan, akan terlihat seperti berikut :


Yaps, sekian dulu. Sampai jumpa di tutorial berikutnya !!











Read More
      edit
Published December 03, 2020 by with 0 comment

Jenkins : Basic Setup

 

Halo semua, pada kesempatan kali ini kami akan share, apa yang dilakuakan setelah berhasil install jenkins. Berikut adalah beberapa hal sederhana tersebut:

1. Unlock

```bash
# Melihat Unlock password
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
```

2. Install plugin yang di rekomendasikan


Tunggu sampai prosess selesai !



3. Create user dan password



4.  Atur alamat untuk akses jenkins



Yaps, Jenkins Siap. Sekian dulu, sampai jumpa pada tutorial berikutnya !! 




Read More
      edit
Published December 03, 2020 by with 0 comment

Jenkins : How to Install Jenkins


 Halo semua, pada kesempatan kali ini kami akan share tutorial tentang installasi jenkins. Pada Lab kali ini kami menggunakan environment seperti berikut :

- Hardware : 2 Ram, 30Gb disk

- Sistem Operasi : Ubuntu 18.04.1 LTS

Baik, untuk tahapan-tahapan yang akan dilakukan sebagai berikut :

1. Tambahkan repo dan Update

```bash
$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt update -y 
```

2. Install Software yang dibutuhkan

```bash
$ sudo apt-get install openjdk-8-jdk openjdk-8-jre -y
```

3. Install Jenkins

```bash
$ sudo apt install jenkins -y 
```

5. Verifikasi

```bash
$ systemctl status jenkins
$ netstat -tulpn |grep 8080
# check password
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
```

Check Pada browser 

Yaps, sampai jumpa pada tutorial berikutnya !!

Read More
      edit
Published December 03, 2020 by with 0 comment

Jenkins : What is Jenkins?

 

    Halo semua, pada kesempatan kali ini kami akan berbagi tentang salah satu tools keren dalam lingkup DevOps, yaitu Jenkins. Apasih Jenkins itu ? Jenkins merupakan salah satu tools wajib dalam menunjang proses pengembangan perangkat lunak secara keseluruhan (Continuous Integration) dan memberdayakan tim untuk melaksanakan bagian teknis dari pengiriman berkelanjutan( Continuous Delivery). Sejarah singkat dari Jenkins sendiri bermula dari Project bernama hudson  di tahun 2004 oleh Kohsuke Kawaguchi sebagai project untuk kesenangannya, bisa dibilang hobby. Rilis pertama kali pada 2005, lalu kohsuke bekerja penuh pada project Hudson pada tahun 2008, lalu pada tahun 2010 Menjadi pemimpin solusi continuous Integration dengan pangsa pasar lebih dari 70%. Dan pada tahun 2011 berubah nama menjadi Jenkins.

Beberapa karakter dari jenkins yang dapat kita ambil dari sumbernya jenkins. Sebagai berikut :

- Jenkins adalah continous Integration dan server build.
- Digunakan secara manual, berkala, atau otomatis
- membangun proyek pengembangan perangkat lunak.
- Salah open source continous Integration yang ditulis di Java.
- Jenkins digunakan oleh tim dengan berbagai ukuran, untuk proyek dengan berbagai bahasa.

Terus kenapa kita harus menggunakan Jenkins, bukanya ada CI/CD lain juga, alasan yang dapat menjadi pertimbangan untuk menggunakan Jenkins adalah sebagai berikut:

-  mudah untuk digunakan
- Ekstensibilitas yang bagus : Mendukung sistem version control yang berbeda, Metrik kualitas kode, dapat membuat notifikasi dan Kustomisasi UI.

Untuk minimum sistem untuk menjalankan jenkins, sebagai berikut :
- Minimum
   * 256 Ram
   * 1 GB drive space, jika menjalankan jenkins di atas docker, minimum 10GB

- Rekomendasi untuk Tim kecil
   * 1 GB+Ram
   * 50 GB+ Drive space

Lalu, software tambahan yang diperlukan untuk menjalankan jenkins sendiri adalah Java 8, JRE/JDK sudah cukup. Baik, mungkin itu dulu post kali ini, sampai jumpa di post berikutnya!
Read More
      edit
Published November 24, 2020 by with 0 comment

ELK Stack : Shipping metrics data with metricbeat


     Halo semua, pada kesempatan kali ini kami akan share tutorial tentang mengirimkan data metrics dari sebuah server menggunakan metricbeat. Metricbeat adalah beat yang sangat populer yang mengumpulkan dan melaporkan berbagai metrik tingkat sistem untuk berbagai sistem dan platform. Metricbeat juga mendukung modul internal untuk mengumpulkan statistik dari platform tertentu. Anda dapat mengonfigurasi frekuensi Metricbeat mengumpulkan metrik dan metrik spesifik apa yang akan dikumpulkan menggunakan modul dan sub-pengaturan ini yang disebut metricsets. Metric mewakili pengukuran raw penggunaan sumber daya atau perilaku yang dapat diamati dan dikumpulkan di seluruh sistem Anda. Ini mungkin ringkasan penggunaan tingkat rendah yang disediakan oleh sistem operasi, atau dapat berupa jenis data tingkat yang lebih tinggi yang terkait dengan fungsionalitas atau pekerjaan tertentu dari suatu komponen, seperti permintaan yang disajikan per detik atau keanggotaan dalam kumpulan server web. Beberapa metrik disajikan dalam kaitannya dengan kapasitas total, sementara metrik lainnya direpresentasikan sebagai tingkat yang menunjukkan "kesibukan" suatu komponen. Kurang lebih itu penjelasan yang dapat kami ambil, lebih lengkap bisa baca di sini. Untuk langkah-langkahnya sebagai berikut :

1.  Installasi metricbeat 
```bash
$ sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key 
add -
$ sudo echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo 
tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt-get update && sudo apt-get install metricbeat
```
2. Konfigurasi metricbeat
```bash
$ sudo cp /etc/metricbeat/metricbeat.yml /etc/metricbeat/metricbeat.yml.origin
$ sudo vi /etc/metricbeat/metricbeat.yml

# berikut adalah contoh untuk send metric dari system dan apache
```
```yaml
metricbeat.modules:
- module: system
  metricsets: ["cpu","memory","network"]
  enabled: true
  period: 15s
  processes: ['.*']
- module: apache
  metricsets: ["status"]
  enabled: true
  period: 5s
  hosts: ["http://10.20.21.23"]
```
```bash
# check apakah index sudah berjalan
$ sudo metricbeat modules enable system
```
3. Atur output dari metricbeat
```bash
# dikirim ke elasticsearch langsung
output.elasticsearch:
  hosts: ["10.20.21.254:9200"]

# dikirim ke logstash
output.logstash:
  hosts: ["10.20.21.254:5044"]
  
# dikirim ke kafka
output.kafka:
  hosts: ["ip_server_kafka:9092"]
  topic: "topicname"
  
# dikirim ke redis
output.redis:
  hosts: ["ip_redis_server:6379"]
  index: "redis.index.for.logstash"
  key: "metricbeat.to.redis"
```
4. Jalankan metricbeat
```bash
# check config untuk verifikasi
$ sudo metricbeat -c /etc/metricbeat/metricbeat.yml test config
$ sudo service metricbeat start
```
5. Verifikasi
```bash
$ curl -XGET '10.20.21.254:9200/_cat/indices?v&pretty'
```
Yaps, sampai jumpa di turorial berikutnya!

Read More
      edit
Published November 24, 2020 by with 0 comment

ELK Stack : Shipping logs with filebeat

 

Halo semua, pada kesempatan kali ini kami akan share tentang bagaimana client mengirimkan log ke ELK server, dengan menggunakan filebeat yang merupakan salah satu shipper yang ringan dan banyak digunakan. Untuk environment dari lab kali ini masih sama dengan environmet pada post berikut. Karen bisa dibilang, pada lab ini adalah lanjutannya. Baik, Berikut adalah langkah-langkahnya :

1. Instalasi Filebeat di Ubuntu 18.04
```bash
$ sudo apt -y update

$ sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
$ sudo apt -y install apt-transport-https
$ sudo echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt -y update && apt -y install filebeat

$ sudo systemctl enable filebeat
$ sudo systemctl status filebeat
```
2. Konfigurasi pada Logstash
```bash
# pada ELK server

$ sudo vi /etc/logstash/conf.d/filter-syslog.conf

```
```json
filter {
  if [fields][log_name] == "syslog" {
    mutate {
      add_tag => [ "syslog" ]
    }
  }
}
```

```bash
$ sudo systemctl restart logstash
$ sudo systemctl status logstash
```
3. Konfigurasi Filebeat
```bash
$ sudo mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.original
$ sudo vi /etc/filebeat/filebeat.yml
```
```yaml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/syslog
  fields:
    log_name: syslog

output.logstash:
  hosts: ["10.20.21.254:5044"]
```
4. Aktifkan layanan filebeat
```bash
$ sudo systemctl restart filebeat
$ sudo systemctl status filebeat
```
5. Verifikasi
```bash
$ curl http://10.20.21.254:9200/_cat/indices?v
```
6. Atur dashboard
```bash
# Klik Menu Management > Elasticsearch > Index Management
# Membuat Index Pattern
# Klik Menu Management -> Kibana -> Index Patterns
# Klik Create Index Pattern
# Index Pattern Name: syslog_*
# Klik Next Step
# Time Filter field name: @timestamp
# Klik Create Index Pattern
```

Yaps, sampai jumpa di tutorial berikutnya! 

Read More
      edit
Published November 21, 2020 by with 0 comment

ELK Stack : Elasticsearch, Logstash and Kibana Installation

 

Halo semua, pada kesempatan kali ini kami akan mulai untuk tutorial dari ELK stack ini. Pada sesi kali ini akan dimulai dengan Installasi dari ELK stack, bagi yang belum paham komponen dan penjelasan tentang ELK, Bisa tengok di postingan berikut. Disana akan menjadi landasan sebelum kita melakukan praktek, agar paham apa saja komponen dan fungsinya. Oke, Sebelum masuk ke langkah-langkah percobaan, kita akan tunjukan environment dari lab kita nantinya.

 - ELK stack Server : 
|     Hostname   | pod0-elk |
| ----------- | ----------- |
| IP Adress   | 10.20.21.254|
| OS | Ubuntu 18.04 |
| Ram | 4GB |

- Client Server/ Beat
|     Hostname   | pod1-elk |
| ----------- | ----------- |
| IP Adress   | 10.20.21.253|
| OS | Ubuntu 18.04 |
| Ram | 512MB |

Pada lab ini, kami menggunaka Ubuntu 18.04, pada semua node/podnya. Tapi dalam penerapannya baik client/server dapat menggunakan sistem operasi lainya. Lengkapnya untuk support dari ELK dapat di check di sini. Jika environment sudah siap, mari kita lanjut ke langkah-langkah percobaan berikut :

Install ElasticSearch

1.  Update repository
```bash
$ sudo apt -y update
```
2.  Install dependensi
```bash
$ sudo apt -y install openjdk-8-jdk
$ java -version
```
3.  Install ElasticSeach
```bash
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
$ sudo apt -y install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
$ sudo apt -y update && apt -y install elasticsearch
```
4.  Konfigurasi ElasticSearch
```bash
$ cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.original
$ vi /etc/elasticsearch/elasticsearch.yml
```
```yaml
# cari bagian berikut dan uncoment atau hilangkan pagar didepanya
# lalu ganti localhost dengan ipaddress dari server
network.host: 10.20.21.254
network.port: 9200
# tambahkan juga, karena jika kita runing dengan host berupa IP, 
# dianggap production jadi perlu kita set tipe discover
discovery.type: single-node
```
5.  jalankan ElasticSearch
```bash
$ sudo systemctl daemon-reload
$ sudo systemctl enable elasticsearch
$ sudo systemctl start elasticsearch
$ sudo systemctl status elasticsearch
```
6.  Verifikasi
```bash
$ netstat -tupln
$ curl -XGET 'localhost:9200/?pretty'
$ curl -XGET '10.20.21.254:9200/?pretty'
```

Install LogStash

1.  Installasi Logstash
```bash
$ sudo apt -y install logstash
```
2.  Konfigurasi Logstash
```bash
$ sudo vi /etc/logstash/conf.d/input-filebeat.conf
```
```bash
input {
  beats {
    port => 5044
  }
}
```
3.  Membuat Output dari Logstash
```bash
$ sudo vi /etc/logstash/conf.d/output-elasticsearch.conf
```
```bash
output {
  elasticsearch {
    hosts => ["10.20.21.254:9200"]
    manage_template => false
    index => "%{[fields][log_name]}_%{[agent][hostname]}_%{+YYYY.MM}"
  }
}
```
4.  Jalankan Logstash
```bash
$ sudo systemctl enable logstash
$ sudo systemctl start logstash
$ sudo systemctl status logstash
$ netstat -tupln
```

Install Kibana

1.  Installasi Kibana
```bash
$ sudo apt -y install kibana
```
2.  Konfigurasi dan integrasi dengan ElasticSearch
```bash
$ sudo cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.original
$ sudo vi /etc/kibana/kibana.yml
```
```bash
server.port: 5601
server.host: "10.20.21.254"
elasticsearch.hosts: ["http://10.20.21.254:9200"]
```
3.  Jalankan Kibana
```bash
$ sudo systemctl enable kibana
$ sudo systemctl start kibana
$ sudo systemctl status kibana
```
4.  Installasi nginx dan konfigurasi
```bash
$ sudo apt -y install nginx apache2-utils
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
$ sudo vi /etc/nginx/sites-available/default
```
```bash
#hapus semua dan ganti seperti berikut
server {
    listen 80;

    server_name _;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.kibana;

    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;
    }
}
```
5.  Buat user dan jalankan Nginx
```bash
# ganti [username] dengan username yang akan kita gunakan
$ sudo htpasswd -c /etc/nginx/htpasswd.kibana [username]
$ sudo systemctl enable nginx
$ sudo systemctl restart nginx
$ sudo systemctl status nginx
$ netstat -tupln
```
6. Verifikasi

Coba untuk akses via browser




Yaps, diatas adalah installasi ELK stack, untuk install beat akan dibahas pada tutorial berikutnya, sampai jumpa!

Read More
      edit