Saya memutuskan untuk membagikan cerita saya. Mungkin bahkan seseorang akan menemukan solusi anggaran ini untuk masalah terkenal yang bermanfaat.
Ketika saya masih muda dan panas dan tidak tahu di mana harus menaruh energi saya, saya memutuskan untuk sedikit lepas. Saya berhasil mendapatkan peringkat dengan cepat dan saya menemukan beberapa pelanggan reguler yang meminta saya untuk memelihara server mereka secara berkelanjutan.
Hal pertama yang saya pikirkan adalah perlunya pemantauan. Saya memutuskan untuk melakukannya sebagai orang pintar, bukan untuk menemukan kembali roda, tetapi untuk melihat opsi yang sudah jadi, seperti Munin atau Zabbix. Tetapi segera ditemukan bahwa versi Web memerlukan koneksi internet yang baik, terutama jika Anda pertama kali membukanya dari ponsel Anda. Jika Anda bersantai di alam yang jauh dari kota, sulit untuk mendapatkan koneksi yang stabil. Oleh karena itu, opsi pemantauan konsol dipilih.
Atop dan atops log reader atopsar banyak membantu saya sebagai pemantauan konsol. Mereka sudah disebutkan di habr,
di atas bahkan dibongkar , tetapi hampir tidak ada yang dikatakan tentang atopsar.
Instalasi
Instalasi sangat sederhana, hanya tiga tim.
#Centos
yum install atop
# Debian / Ubuntu
apt-get install atop
Selanjutnya, Anda dapat mengkonfigurasi operasi pemantauan untuk diri sendiri atau menggunakan pengaturan default.
# Debian / Ubuntu / Centos
/etc/default/atop
File standar:
#cat /etc/default/atop INTERVAL=60 #, , 10 LOGPATH="/var/log/atop" # OUTFILE="$LOGPATH/daily.log" #
Tambahkan ke autorun
# Debian / Ubuntu / Centos
systemctl enable atop
Jalankan di atas sebagai daemon
# Debian / Ubuntu / Centos
systemctl start atop
Untuk malas berkumpul di satu tim
#Centos
yum install atop && systemctl enable atop && systemctl start atop
# Debian / Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atop
Atopsar
Seiring dengan di atas, atopsar juga diinstal, yang merupakan penganalisa konsol yang nyaman dari log biner yang dijalankan oleh daemon di atas. Tentu saja, Anda dapat membaca log di atas itu sendiri, tetapi ini tidak begitu nyaman jika Anda ingin menangkap interval waktu yang besar.
Program pendidikan kecil tentang karya atopsar.
Ketika atopsar dimulai tanpa kunci, itu membuka log untuk hari ini dan menampilkan beban pada setiap inti secara individual dan string idl untuk semua kernel.
Kunci yang saya gunakan adalah:
-A = cetak semua informasi dari log
-c = menampilkan informasi tentang beban pada inti prosesor, kunci default
-m = RAM dan beban swap
-d = aktivitas disk
-O = 3 proses pemuatan CPU teratas
-G = top 3 proses pemuatan RAM
-D = 3 proses pemuatan disk teratas
-N = 3 proses pemuatan jaringan teratas
-r = tentukan path ke log yang ingin Anda baca, jika Anda perlu melihat muatannya selama beberapa hari terakhir
-b = waktu untuk memulai output
-e = waktu untuk menyelesaikan output
-M = membuat kolom tambahan di akhir, di mana kekritisan baris ditandai (+ ada beban, * - beban kritis)
Berkat pemantauan, kami dapat memahami penyebab perilaku server yang salah kapan saja.
Notifikasi
Jadi, ada pemantauan beban, tetapi masih tidak memungkinkan untuk dengan cepat menemukan dan menyelesaikan masalah. Kami membutuhkan pemberitahuan tentang masalah tersebut.
Saya satu-satunya yang mengikuti server, jadi saya perlu memberi tahu di mana saya selalu bisa melihatnya dan setidaknya entah bagaimana bereaksi terhadapnya.
Pada awalnya ada SMS - cepat, dapat diandalkan, gratis. Tetapi kemudian operator seluler menutupi distribusi SMS gratis melalui gateway mereka.
Mail - untuk waktu yang lama, mungkin ada masalah dengan pengiriman.
Utusan - harus diletakkan di telepon, Anda harus membuat bot.
Sebagai hasil pencarian, messenger Telegram dipilih karena kesederhanaan dan aplikasi yang mudah digunakan pada ponsel dan desktop.
Membuat
botnya menggunakan
botfather .
Setelah saya meletakkan beberapa skrip di server yang melacak beban di server (IDL, smartct, etc..l), adanya kesalahan seperti "oom killer", kesalahan saat membuat cadangan, dan operasi lain yang perlu dikontrol.
Skrip cukup sederhana ditulis dalam bash, misalnya, memeriksa LA dan memberitahukan bahwa Load Averadge telah melebihi jumlah core di server.
if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5 `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi
Kesederhanaan sintaksis memberikan banyak kasus penggunaan (dan siapa pun yang tahu setidaknya sedikit bahasa pemrograman dapat menulis / menambahkan).
Satu-satunya peringatan - jika server terletak di Rusia (dan Anda tidak memiliki IPv6 di server), maka Anda perlu menggunakan proxy. Untuk melakukan ini, di awal skrip, Anda harus mendaftarkan string koneksi ke proxy:
export https_proxy=http://:@IP.:
Ini bukan akhirnya
Anda berjalan dengan tenang melewati pegunungan dengan ransel di belakang Anda, beristirahat sejenak dari peradaban, dan kemudian telepon, tanpa sengaja menangkap koneksi, melempar pemberitahuan tentang masalah yang muncul pada server Anda. Apa yang harus dilakukan Suasana hati yang tenang tertiup angin. Panggil istri dan perintah dikte saya? Haha
Sangatlah mendesak untuk menemukan cara untuk menyelesaikan masalah dengan cepat dan tanpa ketersediaan Internet yang baik. Di sini saya sekali lagi diselamatkan oleh kurir (# telegrammivi). Saya mengajar bot saya untuk berkomunikasi hanya dengan saya, mengabaikan orang lain. Sekarang, bersama dengan pemberitahuan masalah, saya mendapatkan sedikit lebih banyak data, yang menurutnya saya mengerti siapa sumber masalahnya, dan saya bisa mencoba menyelesaikannya dari jarak jauh. Cukup dengan menulis pesan ke bot, melemparkan telepon lebih tinggi sehingga pesan ini hilang, dan voila - bot pergi untuk melakukan pekerjaan Anda. Jadi, saya dapat, misalnya, mematikan beberapa proses yang tidak diinginkan, memulai ulang daemon, memblokir IP dan sebagainya.
Di sini saya juga mentransfer permintaan yang diperlukan di masa depan dari klien, misalnya, reset kata sandi yang mendesak kepada pengguna (karena "Ahhh, kami tidak bisa sampai ke server, kami kehilangan jutaan!"), Mencari pengguna yang memiliki akses ke folder yang diinginkan, menghidupkan dan mematikan situs, dan lain-lain . Tentu saja, saya terus-menerus mengubah fungsi bot, karena imajinasi pelanggan terkadang muncul secara tak terduga dan tidak disediakan oleh saya. Tapi yang dasar puas.
Ada juga versi untuk VK, tetapi entah bagaimana tidak berakar.
Sekarang saya dengan tenang melakukan perjalanan dan menjelajahi dunia ini, tidak takut bahwa sesuatu akan pecah di sana, dan saya tidak akan dapat menemukan atau memperbaikinya.