Mungkin: Bagaimana cara otomatis memantau instans Amazon EC2 yang baru dibuat menggunakan Prometheus?
Diterbitkan: 2021-12-19
Apakah Anda memiliki pertanyaan di bawah ini?
- Gunakan penemuan layanan berbasis file untuk menemukan target gesekan
- Bagaimana cara secara otomatis menemukan penggunaan beberapa IP?
- Secara otomatis memantau Instans EC2
- Pemantauan dengan Prometheus
- Menggunakan Prometheus untuk Memantau instans Amazon EC2 yang baru dibuat?
- Bagaimana cara memperbarui file Daftar IP Target Prometheus secara dinamis setelah membuat VM Amazon EC2?
Ansible tidak diragukan lagi adalah alat Otomasi operasi terbaik di industri. Di Crunchify, kami telah menerbitkan lebih dari selusin artikel Ansible tentang berbagai topik.
Dalam tutorial ini kita akan membahas cara memperbarui file Daftar IP Target Prometheus setelah membuat VM Amazon EC2 Secara Dinamis.
Pertimbangkan skenario ini:
- Anda menjalankan Prometheus untuk memantau infrastruktur produksi Anda.
- Ikuti tutorial pengaturan Prometheus secara detail.
- Menggunakan kemungkinan spawn 5 VM Amazon EC2 baru
- Ikuti tutorial instans Amazon EC2 baru secara lengkap.
- Dapatkan 5 IP dan perbarui grup [crunchify] saat runtime
- Ikuti tutorial grup pembaruan file host yang memungkinkan sepenuhnya.
- Perbarui file
crunchify_prometheus.txt
dengan IP yang diperbarui - Dorong file ke host baru tempat Anda menjalankan prometheus
- Prometheus akan membaca
updated IP file
ini secara dinamis - Anda akan memiliki semua
hosts
baru yang dipantau secara otomatis
Untuk langkah 4 sampai 7 kita akan membahas semua langkah di sini.

Langkah-langkah rinci:
- Dapatkan daftar semua IP dari file host yang memungkinkan di bawah grup
[Crunchify]
. - Tambahkan semua IP ke file
crunchify.txt
hanya untuk tujuan pengujian. Kami tidak akan menggunakan file ini di langkah selanjutnya. - Hapus file crunchify_prometheus.json yang ada.
- Buat file
crunchify_prometheus.json
baru dengan contoh file daftar IP prometheus baru. - Ganti
iplist
dari filecrunchify_prometheus.json
dengan daftar IP. - Ganti
u'
dengan'
. - Ganti
'
dengan"
. - Hapus file crunchify_prometheus.json yang ada dari host jarak jauh tempat proses Prometheus berjalan.
- Salin file crunchify_prometheus.json dari host lokal ke host jarak jauh sehingga prometheus dapat menggunakannya.
crunchify_prometheus_file_update.yml file.
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 |
--- - name : Update Prometheus Targets IP List file after creating Amazon EC2 VMs Dynamically hosts : local connection : local gather_facts : True tasks : - name : Get list of all IPs from group Crunchify set_fact : nodelist = "{{ groups['Crunchify'] }}" - name : Add all IPs to file crunchify . txt just for testing purpose . We are not going to use this file in next steps . lineinfile : path : "crunchify.txt" line : "{{ nodelist }}" - name : Delete existing crunchify_prometheus . json file ignore_errors : yes shell : rm crunchify_prometheus . json - name : Create new crunchify_prometheus . json file with sample new prometheus IP list file . copy : dest : "crunchify_prometheus.json" content : [ { "targets" : iplist , "labels" : { "job" : "crunchify_prometheus_job" } } ] - name : Replace iplist from file crunchify_prometheus . json with list of IPs replace : path : "crunchify_prometheus.json" regexp : '"iplist"' replace : "{{ nodelist }}" - name : Replace u ' with ' replace : path : "crunchify_prometheus.json" regexp : 'u' ' replace: ' '' - name : Replace ' with " replace: path: "crunchify_prometheus.json" regexp: "' " replace: " \ "" - hosts : linode become : yes tasks : - name : Delete existing crunchify_prometheus . json file from remote host where Prometheus process is running . ignore_errors : yes command : rm / root / crunchify / crunchify_prometheus . json - name : Copy file crunchify_prometheus . json from local host to remote host so prometheus can consume it . copy : src = { { item . src } } dest = { { item . dest } } with_items : - { src : '//cdn.crunchify.com/Users/crunchify/Documents/ansible/crunchify_prometheus.json' , dest : '/root/crunchify/' } |
Jalankan Playbook yang Mungkin:
1 |
ansible - playbook - v - i . / hosts crunchify_prometheus_file_update . yml |
Hasil Playbook yang mungkin:
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 |
bash Crunchify $ ansible - playbook - v - i . / hosts crunchify_prometheus_file_update . yml WARNING : Executing a script that is loading libcrypto in an unsafe way . This will fail in a future version of macOS . Set the LIBRESSL_REDIRECT_STUB_ABORT = 1 in the environment to force this into an error . No config file found ; using defaults / Users / crunchify / Documents / ansible / hosts did not meet host_list requirements , check plugin documentation if this is unexpected / Users / crunchify / Documents / ansible / hosts did not meet script requirements , check plugin documentation if this is unexpected PLAY [ Update Prometheus Targets IP List file after creating Amazon EC2 VMs Dynamically ] ************************************************************************ TASK [ Gathering Facts ] ***************************************************************************************************************************************** ok : [ localhost ] TASK [ Get list of all IPs from group Crunchify ] ******************************************************************************************************************* ok : [ localhost ] = > { "ansible_facts" : { "nodelist" : [ "5.17.14.87" , "8.17.24.26" , "96.17.67.11" , "62.17.64.87" ] } , "changed" : false } TASK [ Add all IPs to file crunchify . txt just for testing purpose . We are not going to use this file in next steps . ] ******************************************** ok : [ localhost ] = > { "backup" : "" , "changed" : false , "msg" : "" } TASK [ Delete existing crunchify_prometheus . json file ] ********************************************************************************************************** [ WARNING ] : Consider using the file module with state = absent rather than running 'rm' . If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible . cfg to get rid of this message . changed : [ localhost ] = > { "changed" : true , "cmd" : "rm crunchify_prometheus.json" , "delta" : "0:00:00.004614" , "end" : "2019-08-31 19:05:28.214368" , "rc" : 0 , "start" : "2019-08-31 19:05:28.209754" , "stderr" : "" , "stderr_lines" : [ ] , "stdout" : "" , "stdout_lines" : [ ] } TASK [ Create new crunchify_prometheus . json file with sample new prometheus IP list file . ] ********************************************************************** changed : [ localhost ] = > { "changed" : true , "checksum" : "0f561a2aedb23d9b6e76a93af377cf0128c9f4c6" , "dest" : "./crunchify_prometheus.json" , "gid" : 20 , "group" : "staff" , "md5sum" : "6a8d4a45c6b38bd6e664ce1cdc7f001a" , "mode" : "0644" , "owner" : "Crunchify" , "size" : 70 , "src" : "/Users/crunchify/.ansible/tmp/ansible-tmp-1567296328.29-229442409470865/source" , "state" : "file" , "uid" : 502 } TASK [ Replace iplist from file crunchify_prometheus . json with list of IPs ] ************************************************************************************* changed : [ localhost ] = > { "changed" : true , "msg" : "1 replacements made" } TASK [ Replace u ' with ' ] *************************************************************************************************************************************** ok : [ localhost ] = > { "changed" : false , "msg" : "" } TASK [ Replace ' with "] **************************************************************************************************************************************** changed: [localhost] => {"changed": true, "msg": "8 replacements made"} PLAY [linode] ************************************************************************************************************************************************** TASK [Gathering Facts] ***************************************************************************************************************************************** ok: [11.33.64.98] TASK [Delete existing crunchify_prometheus.json file from remote host where Prometheus process is running.] **************************************************** changed: [11.33.64.98] => {"changed": true, "cmd": ["rm", "//cdn.crunchify.com/root/crunchify/crunchify_prometheus.json"], "delta": "0:00:00.002704", "end": "2019-09-01 00:05:32.687400", "rc": 0, "start": "2019-09-01 00:05:32.684696", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} TASK [Copy file crunchify_prometheus.json from local host to remote host so prometheus can consume it.] ******************************************************** changed: [11.33.64.98] => (item={u' dest ': u' / root / crunchify / ', u' src ': u' / Users / crunchify / Documents / ansible / crunchify_prometheus . json ' } ) = > { "changed" : true , "checksum" : "ecea3eafaf9ba3e66698e0851d2ee2513d9fcd5f" , "dest" : "//cdn.crunchify.com/root/crunchify/crunchify_prometheus.json" , "gid" : 0 , "group" : "root" , "item" : { "dest" : "/root/crunchify/" , "src" : "//cdn.crunchify.com/Users/crunchify/Documents/ansible/crunchify_prometheus.json" } , "md5sum" : "8b8f073e30b180c63341cd3fd4c47974" , "mode" : "0644" , "owner" : "root" , "size" : 122 , "src" : "/root/.ansible/tmp/ansible-tmp-1567296332.67-196855844989682/source" , "state" : "file" , "uid" : 0 } PLAY RECAP * **************************************************************************************************************************************************** 11.33.64.98 : ok = 3 changed = 2 unreachable = 0 failed = 0 localhost : ok = 8 changed = 4 unreachable = 0 failed = 0 |
Itu dia. Selamat. Anda telah berhasil menyalin file baru yang diperbarui ke host baru dan Prometheus sekarang secara otomatis memantau instans Amazon EC2 yang baru Anda buat.

Apa berikutnya?
Lihat tutorial tentang cara install docker
di Linux.