Untuk perusahaan yang perlu mengelola data dan aplikasi di lebih dari satu server, infrastruktur adalah yang terpenting.
Untuk setiap perusahaan, bagian penting dari alur kerja adalah memantau node infrastruktur, terutama jika tidak ada akses langsung untuk menyelesaikan masalah yang muncul. Selain itu, penggunaan berlebihan beberapa sumber daya dapat menjadi indikator kegagalan infrastruktur dan kelebihan beban. Namun, pemantauan dapat digunakan tidak hanya untuk pencegahan, tetapi juga untuk menilai kemungkinan konsekuensi penggunaan perangkat lunak baru dalam produksi. Ada beberapa solusi siap pakai yang saat ini ada di pasaran untuk melacak konsumsi sumber daya, namun tetap menimbulkan dua masalah utama: mahalnya biaya pemasangan dan konfigurasi serta masalah keamanan yang terkait dengan perangkat lunak pihak ketiga.
Masalah pertama adalah masalah harga: biayanya dapat berkisar dari sepuluh euro (tarif konsumen) hingga beberapa ribu (tarif perusahaan) per bulan, tergantung pada jumlah host yang akan dipantau. Misalnya, saya ingin memantau tiga node selama satu tahun. Dengan harga 10 euro per bulan, saya akan membelanjakan 120 euro, sementara sebuah perusahaan kecil harus membayar sepuluh hingga dua puluh ribu euro, yang ternyata merupakan keputusan finansial yang tidak dapat dipertahankan dan hanya akan menggerogoti seluruh anggaran.
Masalah kedua adalah perangkat lunak pihak ketiga. Mengingat bahwa untuk analisis, data pengguna - baik individu atau perusahaan - harus diproses oleh pihak ketiga, muncul pertanyaan: bagaimana pihak ketiga mengumpulkan data dan menyajikannya kepada pengguna? Biasanya, untuk ini, aplikasi khusus diinstal pada node, yang melaluinya pemantauan dilakukan, tetapi sering kali aplikasi semacam itu menjadi usang atau ternyata tidak kompatibel dengan sistem operasi klien. Pengalaman peneliti di bidang keamanan informasi menjelaskan masalah bekerja dengan " perangkat lunak berpemilik ". Apakah Anda akan mempercayai perangkat lunak semacam itu? Saya tidak.
Saya memiliki node saya untuk Tor dan beberapa cryptocurrencyjadi saya lebih suka alternatif gratis, open source, dan mudah disesuaikan untuk pemantauan. Dalam posting ini, kita akan melihat tiga alat tersebut: Grafana, InfluxBD, dan CollectD.
Monitoring
Untuk menganalisis secara efektif setiap metrik infrastruktur kami, kami memerlukan aplikasi yang dapat mengambil statistik dari perangkat yang kami minati. Dalam hal ini, CollectD datang untuk menyelamatkan : daemon ini mengelompokkan dan mengumpulkan ("mengumpulkan", oleh karena itu dinamai demikian) semua parameter yang dapat disimpan pada disk atau dikirim melalui jaringan.
Data kemudian akan ditransfer ke instance InfluxDB : ini adalah database deret waktu (TSBD) yang mengaitkan data dengan waktu (stempel waktu yang dikodekan UNIX) di mana server menerimanya. Dengan demikian, data yang dikirim oleh CollectD akan tiba sebagai rangkaian peristiwa.
Terakhir, kami akan menggunakan Grafana: Program ini akan terhubung ke InfluxDB dan menampilkan data di dasbor berwarna-warni yang ramah pengguna. Berkat semua jenis grafik dan histogram, kami dapat melacak data dari CPU, RAM, dan lain-lain secara real time.
InfluxDB
Mari kita mulai dengan InfluxDB, TSBD gratis untuk menyimpan data sebagai urutan kejadian. Database yang dikembangkan oleh Go ini akan menjadi jantung dari "sistem" pemantauan kami.
Setiap kali data tiba, label UNIX terikat padanya secara default . Fleksibilitas pendekatan ini membebaskan pengguna dari keharusan untuk menyimpan variabel "waktu", yang sebaliknya agak rumit. Bayangkan kita memiliki beberapa perangkat yang terletak di benua yang berbeda. Bagaimana kita menangani variabel "waktu"? Apakah kita akan mengikat semua data ke Greenwich Mean Time, atau akankah kita memberikan zona waktunya sendiri pada setiap node? Jika data disimpan di zona waktu yang berbeda, bagaimana kita dapat menampilkannya dengan benar di grafik? Seperti yang Anda lihat, masalah muncul satu demi satu.
Karena InfluxDB melacak waktu dan secara otomatis menandai setiap kedatangan data, InfluxDB dapat secara sinkron menulis data ke database tertentu. Itulah mengapa InfluxDB sering ditampilkan sebagai timeline: penulisan data tidak memengaruhi kinerja database (yang terkadang terjadi dengan MySQL), karena penulisan hanya menambahkan peristiwa tertentu ke timeline. Oleh karena itu, nama program berasal dari persepsi waktu sebagai "aliran" yang tidak ada habisnya dan tidak terbatas.
Instalasi dan konfigurasi
Keuntungan lain dari InfluxDB adalah kemudahan instalasi dan dokumentasi ekstensif yang disediakan oleh komunitas proyek, yang mendukungnya secara luas . InfluxDB memiliki dua jenis antarmuka: baris perintah (alat praktis untuk pengembang, tetapi tidak dipersiapkan dengan baik untuk bekerja dengan data dalam jumlah besar) dan API HTTP untuk interaksi langsung dengan database.
Anda dapat mengunduh InfluxDB tidak hanya dari situs resminya, tetapi juga melalui sistem manajemen paket (kami akan menunjukkannya melalui Debian). Selain itu, disarankan untuk memeriksa paket melalui GPG sebelum menginstal, jadi di bawah ini kami mengimpor kunci paket InfluxDB:
root@node#~: curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
root@node#~: source /etc/os-release
root@node#~: echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Terakhir, kami akan memperbarui dan menginstal InfluxDB:
root@node#~: apt-get update
root@node#~: apt-get install influxdb
Untuk menjalankannya kita akan menggunakan
systemctl:
root@node#~: service start influxdb
Untuk mencegah seseorang dengan niat jahat masuk ke kami, kami akan membuat pengguna bernama "administrator". Anda dapat berinteraksi dengan database melalui bahasa kueri seperti SQL InfluxDB " InfluxQL ". Untuk membuat pengguna baru, kami akan menjalankan permintaan
create user.
root@node#~: influx
Connected to http://localhost:8086
InfluxDB shell version: x.y.z
>
> CREATE USER admin WITH PASSWORD 'MYPASSISCOOL' WITH ALL PRIVILEGES
Dalam antarmuka CLI yang sama, kami akan membuat "metrik" database, di mana kami akan menyimpan metrik kami.
> CREATE DATABASE metrics
Selanjutnya, kita akan mengkonfigurasi InfluxBD (
/etc/influxdb/influxdb.conf) untuk membuka antarmuka pada port 24589 (UDP) dengan koneksi langsung ke database "metrik" untuk mendukung CollectD. Kami juga perlu mengunduh file types.dbdan meletakkannya di alamat /usr/share/collectd/(atau di folder lain) untuk menentukan dengan benar data yang ditransmisikan oleh CollectD dalam format aslinya .
root@node#~: nano /etc/influxdb/influxdb.conf
[Collectd]
enabled = true
bind-address = ":24589"
database = "metrics"
typesdb = "/usr/share/collectd/types.db"
Anda dapat membaca lebih lanjut tentang CollectD dalam konfigurasi di dokumentasi .
KumpulkanD
CollectD di infrastruktur pemantauan kami akan bertindak sebagai agregator data yang menyederhanakan transfer data ke InfluxDB. Menurut definisi, CollectD mengumpulkan metrik dari CPU, RAM, hard drive, antarmuka jaringan, proses ... Potensi program ini tidak terbatas, terutama jika Anda mempertimbangkan berbagai plugin yang sudah tersedia , serta kumpulan yang direncanakan .
Seperti yang Anda lihat, menginstal CollectD sangatlah mudah:
root@node#~: apt-get install collectd collectd-utils
Mari kita gambarkan bagaimana CollectD bekerja dengan contoh yang disederhanakan. Katakanlah saya ingin mengetahui jumlah proses pada node saya. Untuk memeriksanya, CollectD akan membuat panggilan API untuk mengetahui jumlah proses per unit waktu (5000 milidetik menurut definisi) dan tidak lebih. Segera setelah agregator menerima data, agregator akan mentransfernya ke InfluxDB untuk konfigurasi melalui modul (disebut "Jaringan"), yang perlu kita konfigurasi.
Buka file dengan editor kami
/etc/collectd.conf, gulir ke bagian tersebut Networkdan edit seperti yang ditunjukkan di bawah ini. Pastikan untuk menentukan IP tempat antarmuka InfluxDB ( INFLUXDB_IP) berada .
root@node#~: nano /etc/collectd.conf
...
<Plugin network>
<Server "INFLUXDB_IP" "24589">
</Server>
ReportStats true
</Plugin>
...
Saya sarankan untuk mengubah nama host di file konfigurasi yang diteruskan ke InfluxDB (di infrastruktur kami, ini adalah database "terpusat" karena terletak di node yang sama). Dengan demikian, kami tidak akan menerima data yang tidak perlu dan risiko data ditimpa oleh node lain akan hilang.
Grafana
Satu grafik bernilai seribu gambar
Mempertimbangkan kutipan yang diparafrasekan, mengamati metrik infrastruktur waktu nyata melalui grafik dan tabel memungkinkan kami untuk bertindak secara efisien dan tepat waktu. Kami akan menggunakan Grafana untuk membuat dan menyesuaikan dasbor untuk grafik dan tabel kami.
Grafana adalah alat metrik grafis freeware, kompatibel dengan berbagai macam database (termasuk InfluxDB), di mana pengguna dapat membuat peringatan ketika sebagian data memenuhi kondisi tertentu. Misalnya, jika CPU Anda memuncak, Anda mungkin menerima peringatan di Slack, Mattermost, email, dan sebagainya. Selain itu, saya mengonfigurasi peringatan saya untuk secara aktif memantau setiap kasus ketika seseorang "memasuki" infrastruktur saya.
Grafana tidak memerlukan pengaturan khusus: seperti yang kita catat sebelumnya, InfluxDB "memindai" variabel "waktu". Integrasinya sendiri sangat sederhana: kita akan mulai dengan mengimpor kunci publik untuk menambahkan paket dari situs web resmi Grafana (tergantung pada sistem operasi Anda):
root@node#~: wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
root@node#~: echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
root@node#~: apt-get update && apt-get install grafana
Kemudian mari kita jalankan melalui systemctl:
root@node#~: systemctl start grafana-web
Sekarang ketika kita menavigasi ke halaman localhost: 3000 di browser, kita akan melihat antarmuka login Grafana. Menurut definisi, Anda dapat melalui admin login dan admin kata sandi (setelah kredensial login pertama disarankan untuk diubah).
Mari pergi ke bagian Sources dan tambahkan database Influx kita di sana:
Sekarang Anda dapat melihat persegi panjang hijau kecil di bawah label New Dashboard. Arahkan kursor ke atasnya dan pilih Tambahkan Panel lalu Grafik: Sekarang
Anda dapat melihat grafik dengan data uji. Klik pada judul diagram ini dan klik Edit. Dengan Grafana, Anda dapat membuat kueri cerdas: Anda tidak perlu mengetahui setiap bidang dalam database, Grafana akan menawarkannya kepada Anda dari daftar parameter yang sesuai untuk analisis.
Menulis kueri tidak pernah semudah ini: cukup pilih metrik yang Anda minati dan klik Segarkan. Saya juga merekomendasikan untuk membagi metrik berdasarkan host untuk mempermudah mengisolasi masalah. Jika Anda tertarik dengan ide panel kontrol lainnya, Anda dapat mengunjungi situs Grafana untuk mendapatkan berbagai contoh inspirasi.
Kami memperhatikan bahwa Grafana adalah alat yang sangat dapat dikembangkan, dan memungkinkan kami untuk membandingkan data yang sangat berbeda dibandingkan satu sama lain. Tidak ada satu metrik pun yang tidak dapat diperoleh, jadi hanya kecerdikan Anda yang membatasi Anda. Lacak perangkat Anda dan dapatkan gambaran umum paling lengkap tentang infrastruktur Anda secara real time!
