Jumat, 12 Mei 2023

Cara Mengecek Penggunaan Hard Disk Pada Linux Ubuntu Saat Out Of Storage

Cari dimana letak moung device yang akan di cek

Misalnya ingin melakukan pengecekan mount untuk device /dev/sda1

mount | grep sda1

Misalnya /dev/sda1 di-mount pada /

du --max-depth=1 --human-readable / | sort --human-numeric-sort

This will list the first level of directories contained in the specified path, in order from smallest to largest. You can increase the depth past 1 to get details of the subdirectories, or change the path to specify a single directory. You can also use the short flags.

Command di atas akan menampilkan direktori pada / dengan order kapasitas pemakaian dari kecil ke besar.  Parameter max-depth dapat diubah untuk mendapatkan detail subdirektori, atau ubah path ke direktori yang ingin dicek, misal ingin mengecek /home

du -d1 -h /home | sort -h

Referensi: https://askubuntu.com/questions/506074/how-to-clean-up-dev-sda1-as-its-full

Jumat, 07 April 2023

Menambahkan Akses Tertentu pada User Tertentu pada Direktori Tertentu Ubuntu

Terjadi error 

WARNING  /home/sumdev/ubuntu-20.04.6-live-server-amd64.iso may not be accessible by the hypervisor. You will need to grant the 'libvirt-qemu' user search permissions for the following directories: ['/home/sumdev']

pada saat instalasi virtual machine.

Hal tersebut menunjukkan bahwa user 'libvirt-qemu' memerlukan akses search ke direktori tempat file ISO berada (a+x).

Solusi

Dengan menambahkan akses user tersebut pada direktori yang dibutuhkan.

sudo getfacl -e /home/sumdev/

Output

getfacl: Removing leading '/' from absolute path names
# file: home/sumdev/
# owner: sumdev
# group: sumdev
user::rwx
group::r-x
other::---

Tambahkan akses search untuk user libvirt-qemu

sudo setfacl -m u:libvirt-qemu:rx /home/sumdev

Lalu cek

sudo getfacl -e /home/sumdev/

Output

getfacl: Removing leading '/' from absolute path names
# file: home/sumdev/
# owner: sumdev
# group: sumdev
user::rwx
user:libvirt-qemu:r-x           #effective:r-x
group::r-x                      #effective:r-x
mask::r-x
other::---

Dapat dilihat user libvirt-qemu sudah memiliki akses search pada folder tersebut.

Minggu, 12 Februari 2023

Catatan Kafka Terbaru 2023

Setelah kurang lebih 2 tahun tidak berurusan dengan Apache Kafka, ternyata banyak hal yang berubah saat ini. Catatan ini sebagai pengingat, berlaku untuk versi minimum 3.40

Instalasi tidak lagi memerlukan ZooKeeper

Kafka saat ini menuju ke penggunaan tanpa bergantung pada ZooKeeper. Hal ini tentu sangat signifikan dan lebih memudahkan instalasi dan konfigurasi.

Instalasi Kafka masih sama dengan sebelumnya, hanya berbeda saat ini konfigurasi karena sudah tidak menggunakan ZooKeeper.

Download dan ekstrak

wget [link_kafka]

tar xzf [file_tar_kafka]

Edit configuration file

nano kafka_dir/config/kraft/server.properties

Generate random uuid dan setup uuid (versi terdahulu tidak ada step ini)

./kafka_dir/bin/kafka-storage.sh random-uuid

./kafka_dir/bin/kafka-storage.sh -t <uuid> <server_config_file> 

Start kafka server

./kafka_dir/bin/kafka-server-start.sh ./kafka_dir/config/kraft/server.properties


Catatan konfig penting Kafka

cleanup.policy : untuk menentukan log akan di-delete atau di-compact. Diset default pada broker, di adjust pada topic.

num.partitions : untuk menentukan jumlah partitions. Diset default pada broker, di adjust pada topic. Penting diset untuk Kafka Streams karena setiap consumer di assign pada 1 partition.

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