Ansible: Prometheus kullanılarak yeni oluşturulan Amazon EC2 bulut sunucuları nasıl otomatik olarak izlenir?
Yayınlanan: 2021-12-19
Aşağıdaki sorulardan herhangi biri var mı?
- Kazıma hedeflerini keşfetmek için dosya tabanlı hizmet keşfini kullanın
- Birden çok IP'nin kullanımını otomatik olarak nasıl keşfederim?
- EC2 Bulut Sunucularını otomatik olarak izleme
- Prometheus ile İzleme
- Yeni oluşturulan Amazon EC2 örneklerini izlemek için Prometheus'u mu kullanıyorsunuz?
- Amazon EC2 VM'leri oluşturduktan sonra Prometheus Targets IP List dosyası nasıl dinamik olarak güncellenir?
Ansible, şüphesiz endüstrideki en iyi operasyon Otomasyon aracıdır. Crunchify'da çok sayıda konuda bir düzineden fazla Ansible makalesi yayınladık.
Bu eğiticide, Amazon EC2 VM'lerini Dinamik olarak oluşturduktan sonra Prometheus Targets IP List dosyasının nasıl güncelleneceğini inceleyeceğiz.
Bu senaryoyu düşünün:
- Prometheus'u üretim altyapınızı izlemek için çalıştırıyorsunuz.
- Prometheus kurulum eğitimini ayrıntılı olarak izleyin.
- Ansible spawn 5 yeni Amazon EC2 VM kullanma
- Yeni Amazon EC2 bulut sunucusu eğitimini tamamen oluşturun.
- 5 IP alın ve çalışma zamanında [crunchify] grubunu güncelleyin
- Ansible hosts dosya güncelleme grubu eğitimini tamamen izleyin.
-
crunchify_prometheus.txt
dosyasını güncellenmiş IP ile güncelleyin - Dosyayı, prometheus'un çalıştığı yeni ana bilgisayara itin
- Prometheus bu yeni
updated IP file
dinamik olarak okuyacaktır - Tüm yeni
hosts
otomatik olarak izlenmesini sağlayacaksınız
4'ten 7'ye kadar olan adımlar için tüm adımları burada inceleyeceğiz.

Ayrıntılı adımlar:
-
[Crunchify]
grubu altındaki ansible hosts dosyasındaki tüm IP'lerin listesini alın. - Tüm IP'leri yalnızca test amacıyla
crunchify.txt
dosyasına ekleyin. Sonraki adımlarda bu dosyayı kullanmayacağız. - Mevcut crunchify_prometheus.json dosyasını silin.
- Örnek yeni prometheus IP liste dosyasıyla yeni
crunchify_prometheus.json
dosyası oluşturun. -
iplist
dosyasındakicrunchify_prometheus.json
IP listesiyle değiştirin. -
u'
ile'
değiştirin. -
'
ile"
. - Prometheus işleminin çalıştığı uzak ana bilgisayardan mevcut crunchify_prometheus.json dosyasını silin.
- crunchify_prometheus.json dosyasını yerel ana bilgisayardan uzak ana bilgisayara kopyalayın, böylece prometheus onu tüketebilir.
crunchify_prometheus_file_update.yml dosyası.
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/' } |
Ansible Playbook'u yürütün:
1 |
ansible - playbook - v - i . / hosts crunchify_prometheus_file_update . yml |
Ansible Playbook sonucu:
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 |
Bu kadar. Tebrikler. Yeni güncellenmiş dosyayı yeni ana bilgisayara başarıyla kopyaladınız ve Prometheus artık yeni oluşturulan Amazon EC2 bulut sunucularınızı otomatik olarak izliyor.

Sıradaki ne?
Linux'ta install docker
ilişkin eğiticiye göz atın.