Senin, 13 Juni 2022

Topologi Sertifikat SSL

 Sertifikat SSL dibagi menjadi 3 jenis:

  1. End user certificate
  2. Intermediate certificate
  3. Root certificate

Relasi dari ketiga jenis tersebut adalah sebagai berikut, misalnya:

  1. Sertifikat untuk domain www.contoh.com diterbitkan oleh CA Abc
  2. CA Abc menggunakan sertifikat yang diterbitkan oleh CA fgh
  3. CA Fgh menggunakan sertifikat yang diterbitkan oleh CA xxx
  4. CA xxx menggunakan serfifikat yang diterbitkan oleh CA SUPEROOT

Pada contoh di atas, sertifikat 1 adalah merupakan end-user certificate, sertifikat 2 dan 3 adalah intermediate certificate, dan sertificat 4 adalah root certificate.

Yang perlu dipahami adalah secara umum yang perlu diinstal pada server milik kita adalah end-user certificate. Untuk intermediate dan root certificate sudah ada didalam klien yang umum dipakai, misalnya browser firefox. Jadi pada saat terjadi koneksi antara klien dengan server, akan dilaksanakan pencocokan sertifikat tersebut.

Pada beberapa kasus, misal akses menggunakan CURL atau dari IDE semisal IntelliJ, akan ditemui error sertifikat. Hal ini terjadi karena intermediate dan root tidak ada dalam klien. Yang bisa dilakukan:

  1. Install intermediate dan root pada klien, atau
  2. Install fullchain certificate pada server.

 

Pada contoh di atas dapat dilihat pada sebuah website, menggunakan autentikasi 3 sertifikat. Pada contoh tersebut, paling kiri adalah end-user, tengah adalah intermediate, dan yang paling kanan adalah root certificate. 

Sumber : https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/

Minggu, 05 Juni 2022

Rangkuman Kuliah Umum Mercubuana 6 - 7 Juni 2022

Iim Rusyamsi - Ketua Umum OKE OCE Indonesia

  1. Bisnis harus bisa berjalan sendiri, harus tersistem. Kalau belum tersistem berarti belum jalan.
  2. Bisnis harus bisa diwariskan.

Bisnis harus memanfaatkan teknologi.

Bisnis Kawan Lama contoh bisa diwariskan

  • ACE Hardware - pendiri
  • Krisbow - menantu
  • Informa - anak
  • Chattime - cucu

Level dalam wirausaha

  1. Level 0 - karyawan
  2. Level 1 - self employee, semua dikerjakan sendiri, work in
  3. Level 2 - manager, work on
  4. Level 3 - business owner
  5. Level 4 - investor
  6. Level 5 - enterpreneur, banyak di paper aset (saham, franchise)

Level 0 - 1 : work in, belum mencari profit, level 2 - 3 : sudah mulai memiliki bisnis, mencari profit, level 4 : tinggal kopi paste bisnis untuk buat bisnis selanjutnya, level 5 : membangun aset.

Pada level awal, jangan anggap karyawan. Tapi anggap mereka sebagai bagian dari sistem bisnis.

Trik bangun sistem

  1. Catat aktivitas rutin, berlatih menjadi manager, supaya bisa belajar mendelegasikan pekerjaan rutin, buat SOP.

Selasa, 22 Februari 2022

Monitoring Metrics Typesense Menggunakan Prometheus

Typesense memiliki endpoint  metrics.json  untuk melakukan monitoring dengan data yang dihasilkan format JSON.

{
   "system_cpu1_active_percentage": "0.00",
   "system_cpu2_active_percentage": "0.00",
   "system_cpu3_active_percentage": "0.00",
   "system_cpu4_active_percentage": "0.00",
   "system_cpu_active_percentage": "0.00",
   "system_disk_total_bytes": "1043447808",
   "system_disk_used_bytes": "561152",
   "system_memory_total_bytes": "2086899712",
   "system_memory_used_bytes": "1004507136",
   "system_network_received_bytes": "1466",
   "system_network_sent_bytes": "182",
   "typesense_memory_active_bytes": "29630464",
   "typesense_memory_allocated_bytes": "27886840",
   "typesense_memory_fragmentation_ratio": "0.06",
   "typesense_memory_mapped_bytes": "69701632",
   "typesense_memory_metadata_bytes": "4588768",
   "typesense_memory_resident_bytes": "29630464",
   "typesense_memory_retained_bytes": "25718784"
}
Kita dapat melakukan monitoring endpoint tersebut menggunakan Prometheus.

1. Install Prometheus

export RELEASE="2.33.3"

Cek versi terakhir di Official Page

wget https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz

tar xvf prometheus-${RELEASE}.linux-amd64.tar.gz

Masuk ke direktori Prometheus yang baru di ekstrak 

cd prometheus-${RELEASE}.linux-amd64/

2. Install json_exporter

Karena metrics dari Typesense menggunakan format JSON, maka harus menggunakan service lagi untuk melakukan konversi dari JSON ke metric Prometheus.

git clone https://github.com/prometheus-community/json_exporter.git

3. Install make

sudo apt install make

Make build

cd json_exporter

make build

Jika diperlukan, install  go  terlebih dahulu

sudo snap install go --classic

4. Buat file config.xml

nano config.yml

---
metrics:
- name: typesense_metric_system_cpu1_active_percentage
  path: "{ .system_cpu1_active_percentage }"
  help: System CPU 1 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu2_active_percentage
  path: "{ .system_cpu2_active_percentage }"
  help: System CPU 2 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu3_active_percentage
  path: "{ .system_cpu3_active_percentage }"
  help: System CPU 3 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu4_active_percentage
  path: "{ .system_cpu4_active_percentage }"
  help: System CPU 4 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu_active_percentage
  path: "{ .system_cpu_active_percentage }"
  help: System CPU active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_disk_total_bytes
  path: "{ .system_disk_total_bytes }"
  help: System disk total bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_disk_used_bytes
  path: "{ .system_disk_used_bytes }"
  help: System disk used bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_memory_total_bytes
  path: "{ .system_memory_total_bytes }"
  help: System memory total bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_memory_used_bytes
  path: "{ .system_memory_used_bytes }"
  help: System memory used bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_network_received_bytes
  path: "{ .system_network_received_bytes }"
  help: System network received bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_network_sent_bytes
  path: "{ .system_network_sent_bytes }"
  help: System network sent bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_active_bytes
  path: "{ .typesense_memory_active_bytes }"
  help: Typesense memory active bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_allocated_bytes
  path: "{ .typesense_memory_allocated_bytes }"
  help: Typesense memory allocated bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_fragmentation_ratio
  path: "{ .typesense_memory_fragmentation_ratio }"
  help: Typesense memory fragmentation ratio
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_mapped_bytes
  path: "{ .typesense_memory_mapped_bytes }"
  help: Typesense memory mapped bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_metadata_bytes
  path: "{ .typesense_memory_metadata_bytes }"
  help: Typesense memory metadata bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_resident_bytes
  path: "{ .typesense_memory_resident_bytes }"
  help: Typesense memory resident bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_retained_bytes
  path: "{ .typesense_memory_retained_bytes }"
  help: Typesense memory retained bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
headers:
  X-TYPESENSE-API-KEY: ${API ANDA DISINI}

5. Jalankan json_exporter

./json_exporter --config.file config.yml

Untuk melakukan pengecekan, coba akses 

curl http://[IP ADDRESS JSON_EXPORTER]:7979/probe?target=http://[IP ADDRESS TYPESENSE]:8108/metrics.json

Seharusnya metrics Typesense sudah dikonversi menjadi metrics Prometheus.

6. Jalankan Prometheus

Langkah selanjutnya adalah konfigurasi Prometheus

Tambahkan job baru pada config

- job_name: 'typesense'
  metrics_path: /probe
    static_configs:
      - targets:
        - http://[IP TYPESENSE]:8108/metrics.json
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:7979

Jalankan Prometheus

./prometheus

Cek menggunakan browser di http://[IP PROMETHEUS]:9090/targets

Kamis, 17 Februari 2022

Catatan Command KVM Ubuntu

Install Guest

virt-install -n Datastax-Server-0 --os-type=Linux --os-variant=ubuntu18.04 --ram=4096 --vcpus=2 --disk path=/var/lib/libvirt/images/datastax-server-0.img,bus=virtio,size=80 --network bridge:br0 --graphics none --location ~/ubuntu-18.04.3-server-amd64.iso --extra-args console=ttyS0 --extra-args earlyprint=serial,ttyS0,115200

Menampilkan list KVM Guest

virsh list

Untuk menampilkan semua Guest

virsh list --all

Autostart KVM

virsh autostart [DOMAIN_NAME] [--disable]

Mematikan KVM

virsh shutdown [DOMAIN_NAME]

virsh destroy [DOMAIN_NAME]

Menghapus KVM

Sebelumnya auto start harus dimatikan terlebih dahulu

sudo virsh undefine [DOMAIN_NAME]

sudo virsh undefine [DOMAIN_NAME] --remove-all-storage

Mengecek apakah sebuah OS Ubuntu 18.04 running dalam sebuah KVM Guest

systemd-detect-virt

Menambah Storage

  1. stop the VM
  2. run qemu-img resize vmdisk.img +10G to increase image size by 10Gb
  3. start the VM, resize the partitions and LVM structure within it normally



Error -bash: cannot create temp file for here-document: No space left on device

Error ini disebabkan karena disk penuh. Jadi untuk mengatasi error ini adalah dengan mengkondisikan disk agar tidak penuh. Biasanya yang terjadi adalah disk dipenuhi file logs.

Yang pertama perlu dilakukan adalah dengan mengecek penggunaan disk. Pada kasus ini menggunakan studi kasus saya pribadi.

df -h

Output 
Filesystem      Size  Used Avail Use% Mounted on
udev            7.7G     0  7.7G   0% /dev
tmpfs           1.6G  612K  1.6G   1% /run
/dev/vda1       157G  156G     0 100% /
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/1000

Selanjutnya, cari penggunaan disk pada partisi terkait, sebagai contoh pada /.

du -cha --max-depth=1 / | grep -E "M|G"

Pada command di atas, grep digunakan untuk membatasi hasil dengan nilai M (Mega) dan G (Giga). Jika pada kasus anda menggunakan disk Tera, dapat dimasukkan opsi T.

Output
15M     /bin
83M     /home
144M    /boot
460M    /var
151G    /opt
15M     /sbin
862M    /lib

Pada contoh di atas /opt merupakan folder yang memenuhi 100% kapasitas. Maka selanjutnya adalah mencari penggunaan disk pada folder tersebut.

sudo du -cha --max-depth=1 /opt | grep -E "M|G"

Output
151G    /opt/kafka_2.12-2.3.0
151G    /opt
151G    total

Selanjutnya mencari penggunaan pada disk /opt/kafka_2.12-2.3.0.

sudo du -cha --max-depth=1 /opt/kafka_2.12-2.3.0 | grep -E "M|G"

Output
3.3M    /opt/kafka_2.12-2.3.0/site-docs
55M     /opt/kafka_2.12-2.3.0/libs
31M     /opt/kafka_2.12-2.3.0/plugin
151G    /opt/kafka_2.12-2.3.0/logs
151G    /opt/kafka_2.12-2.3.0
151G    total

Dari output di atas dapat dilihat bahwa folder logs yang membuat disk penuh. Langkah selanjutnya adalah dengan membersihkan folder tersebut.

Sumber: stackoverflow