Pengaturan Instalasi Loki dan Promtail
Arsitektur Sistem pada Project
Implementasi projects ini akan dibangun menggunakan existing infrastructure atau infrastruktur yang sudah ada. Berikut merupakan gambaran dari arsitektur dari infrastruktur sistem yang ada.
Projects ini merupakan VM-based, jadi tidak menggunakan Docker atau container engine lain dalam penerapannya. Setiap satu ikon merepresentasikan sebuah server atau node yang berupa VM (Virtual Machine).
Walaupun project-nya VM-based, tidak akan ada perbedaan yang signifikan bila coba diterapkan dengan menggunakan Docker.
Informasi Lingkungan Project
Semua sistem operasi yang terdapat pada VM yang ada menggunakan Ubuntu LTS versi 22.04. Berikut beberapa informasi terkait lingkungan perangkat lunak projects yang digunakan.
Sistem | Nama Aplikasi/Tools/dsb | Deskripsi | Versi |
---|---|---|---|
Database (Server Target) | MongoDB Community Edition | Server target untuk mengirim log slow query MongoDB ke Loki. | 4.4.x |
Reverse Proxy (Server Target) | Nginx | Server target untuk mengirim log web server Nginx ke Loki. | 1.18.0 |
Logging | Loki | Tool untuk sistem logging terpusat. | 3.0.0 |
Log Agent | Promtail | Tool untuk mengirim log dari server target ke Loki. | 3.0.0 |
Object Storage (S3-Compatible) | IDCloudHost | Servis untuk menyimpan log secara terpusat. | - |
Pastikan sistem di atas sudah tersedia sebelum mengikuti instruksi-instruksi selanjutnya. Alternatif lain untuk IDCloudHost object storage, kita bisa menggunakan object storage lain selama S3-compatible, beberapa diantaranya, kita dapat menggunakan Minio, DigitalOcean Space, atau AWS S3. Project ini juga bisa dijalankan menggunakan diska bawaan dari VM/VPS tempat loki berada tanpa memerlukan object storage.
Instalasi Loki
Berikut merupakan langkah-langkah proses instalasi Loki.
Buat system user untuk menjalankan Loki.
1
sudo useradd --system loki
Unduh file Loki. Sesuai informasi di atas, versi yang digunakan adalah 3.0.0.
1
wget https://github.com/grafana/loki/releases/download/v3.0.0/loki-linux-amd64.zip
Ekstrak file Loki yang barusan diunduh.
1
unzip loki-linux-amd64.zip
Salin file binari Loki sebelumnya ke direktori /usr/local/bin/.
1
sudo cp loki-linux-amd64 /usr/local/bin/loki
Buat file pengaturan Loki sebagai systemd.
1
sudo nano /etc/systemd/system/loki.service
Isi file tersebut dengan script berikut.
1 2 3 4 5 6 7 8 9 10 11
[Unit] Description=Loki service After=network.target [Service] Type=simple User=loki ExecStart=/usr/local/bin/loki -config.file /etc/loki/loki-local-config.yaml [Install] WantedBy=multi-user.target
Buat direktori untuk menyimpan file pengaturan Loki.
1 2
mkdir -p /etc/loki cd /etc/loki
Unduh file pengaturan default Loki.
1
wget https://raw.githubusercontent.com/grafana/loki/v3.0.0/cmd/loki/loki-local-config.yaml
Buat direktori untuk penyimpanan data Loki.
1 2
cd sudo mkdir -p /loki /data /data/retention
Atur permission file maupun direktori terkait Loki.
1 2
sudo chown loki:loki /usr/local/bin/loki sudo chown -R loki:loki /loki /etc/loki /data
Reload pengaturan systemd. Start lalu enable Loki.
1 2 3 4
sudo systemctl daemon-reload sudo systemctl start loki.service sudo systemctl enable loki.service sudo systemctl status loki.service
Atur agar Loki hanya bisa diakses melalui Grafana. Dalam kasus ini, server menggunakan pengaturan firewall ufw.
1
sudo ufw allow from <ip-address> to any port 3100
Gunakan IP private dari server Grafana.
File Pengaturan Loki
Buka file pengaturan default Loki yang sudah diunduh sebelumnya.
1
sudo nano /etc/loki/loki-local-config.yaml
Lalu isi dan sesuaikan dengan script dibawah ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# This is a complete configuration to deploy Loki backed by a s3-compatible API
# like MinIO for storage.
# Index files will be written locally at /loki/index and, eventually, will be shipped to the storage via tsdb-shipper.
auth_enabled: false
server:
http_listen_port: 3100
common:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1
path_prefix: /loki
schema_config:
configs:
- from: 2020-05-15
store: tsdb
object_store: s3
schema: v13
index:
prefix: index_
period: 24h
storage_config:
tsdb_shipper:
active_index_directory: /loki/index
cache_location: /loki/index_cache
aws:
bucketnames: <nama-bucket>
endpoint: is3.cloudhost.id
access_key_id: <access-key>
secret_access_key: <secret-key>
s3forcepathstyle: true
filesystem:
directory: /loki/chunks
limits_config:
max_query_lookback: 168h # 7 days
retention_period: 168h
max_query_series: 10000000
max_query_parallelism: 2
compactor:
working_directory: /data/retention
retention_enabled: true
delete_request_store: s3
ruler:
alertmanager_url: http://localhost:9093
Keterangan:
Berikut beberapa keterangan pengaturan dari isi script di atas.
- http_listen_port: Port yang digunakan untuk menajalankan Loki di server.
- path_prefix: Direktori penyimpanan data terkait Loki di server.
- schema_config -> configs -> object_store: Tipe penyimpanan log pada Loki. Gunakan nilai filesystem jika ingin menggunakan diska pada server VM Loki terinstal. Gunakan nilai s3 jika ingin menggunakan object storage AWS S3 maupun selain AWS S3 tapi S3-compatible.
- storage_config -> aws -> bucketnames: Nama bucket object storage.
- storage_config -> aws -> endpoint: Nama endpoint dari bucket object storage yang dibuat.
- storage_config -> aws -> access_key_id: Access key dari bucket object storage yang dibuat.
- storage_config -> aws -> secret-access-key: Secret key dari bucket object storage yang dibuat.
- limits_config -> retention_period: Lama retensi files log disimpan di object storage.
- limits_config -> max_query_series: Banyak log yang bisa diambil dalam satu kueri.
- compactor -> retention_enabled: Mengaktifkan masa retensi penyimpanan log.
Instalasi Promtail
Sebelum mengikuti instruksi di bawah, pastikan Anda berada di server target. Berikut merupakan langkah-langkah proses instalasi Promtail.
Pastikan Promtail diinstal di server target, dalam kasus ini diinstal di dalam server yang terdapat servis Nginx maupun MongoDB.
Unduh file Promtail. Versi yang digunakan adalah 3.0.0.
1
wget https://github.com/grafana/loki/releases/download/v3.0.0/promtail-linux-amd64.zip
Ekstrak file Promtail yang barusan diunduh.
Salin file binari Promtail sebelumnya ke direktori /usr/local/bin/.
Buat file pengaturan Promtail sebagai systemd.
1
sudo nano /etc/systemd/system/promtail.service
Isi file tersebut dengan script berikut.
1 2 3 4 5 6 7 8 9 10 11
[Unit] Description=Promtail service After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/promtail-local-config.yaml [Install] WantedBy=multi-user.target
Buat direktori untuk menyimpan file pengaturan Promtail.
1 2
mkdir -p /etc/promtail cd /etc/promtail
Unduh file pengaturan default Promtail.
1
wget https://raw.githubusercontent.com/grafana/loki/v3.0.0/clients/cmd/promtail/promtail-local-config.yaml
Reload pengaturan systemd. Start lalu enable Promtail.
1 2 3 4
sudo systemctl daemon-reload sudo systemctl start promtail.service sudo systemctl enable promtail.service sudo systemctl status promtail.service
Masuk ke server Loki. Atur agar Promtail hanya bisa diakses melalui server Loki. Dalam kasus ini, server menggunakan pengaturan firewall ufw.
1
sudo ufw allow from <ip-address> to any port 3100
Gunakan IP private dari server target tempat Promtail terinstal.
Integrasi Loki ke Grafana
Pastikan Grafana sudah tersedia sebelum masuk ke tahap ini. Berikut merupakan langkah integrasi Loki ke Grafana.
Masuk ke server Loki. Atur agar Loki hanya bisa diakses melalui server Grafana melalui firewall.
1
sudo ufw allow from <ip-address> to any port 3100
Gunakan IP private dari server Grafana.
Masuk ke aplikasi Grafana. Lalu, pada bagian navigasi menu di sebelah kiri aplikasi Grafana, pilih Add new connection di bagian Connection.
Search dan pilih Loki. Lalu klik Add new data source.
Isi pengaturan Name dengan loki (silakan sesuaikan dengan keinginan). Lalu isi juga pengaturan URL di bagian Connection dengan format
http://<ip-private-server-loki>:3100
. Biarkan sisa pengaturan lain dengan nilai default.Klik Save & test. Pastikan muncul pemberitahuan “Data source successfully connected.” yang menunjukkan bahwa integrasi Loki ke Grafana berhasil.