ฉันกำลังพยายามใช้ ansible เพื่อปรับใช้ไฟล์การกำหนดค่าไปยังเครื่องหลายร้อยเครื่อง ซึ่งเครื่องต่างๆ จะมีข้อมูลโค้ดการกำหนดค่าเฉพาะซ้ำหลายครั้ง โดยเฉพาะอย่างยิ่งฉันใช้ตัวแยกวิเคราะห์บันทึก promtail และเครื่องต่าง ๆ จะมีตำแหน่งไฟล์บันทึกที่แตกต่างกันเพื่อแยกวิเคราะห์ด้วยป้ายกำกับที่แตกต่างกัน ฉันต้องการคงการกำหนดค่าแบบ ansible ไว้อย่างเรียบง่าย ดังนั้นฉันจึงสามารถใช้คำขอดึงข้อมูลเพื่อทำการเปลี่ยนแปลงส่วนต่างๆ ได้
ตอนแรกฉันจะใช้ group_vars และกำหนดตำแหน่งไฟล์บันทึกแต่ละไฟล์ใน group_var ซึ่งใช้งานได้ดีตราบเท่าที่ฉันสร้างตำแหน่งบันทึกเพียงแห่งเดียว เมื่อฉันต้องการตำแหน่งบันทึกหลายตำแหน่ง มันจะหยุดเนื่องจากฉันจะมีเพียงค่าเดียวที่ส่งคืนจาก group_vars
เพื่ออธิบาย
เจ้าภาพ:
LOGFILE1:
เจ้าภาพ:
แอป[15:16].qa2.example.com
LOGFILE2:
เจ้าภาพ
แอป[16:17].qa2.example.com
GROUP_VARS/LOGFILE1
GROUP_VARS/LOGFILE2
ฉันสามารถดูวนซ้ำแต่ละกลุ่มแล้วต่อท้ายผลลัพธ์ไปยังไฟล์กำหนดค่า แต่ฉันไม่เห็นวิธีการทำเช่นนั้นด้วยฟังก์ชันเทมเพลต เป็นการดีที่ฉันสามารถวนซ้ำตำแหน่งไฟล์บันทึกทั้งหมดได้ แต่ฉันไม่แน่ใจว่าจะทำอย่างไร
หรือบางทีฉันอาจใช้ไฟล์ตัวแปรภายนอกแล้วใช้เงื่อนไขของการจัดเรียงบางอย่างเพื่อกำหนดว่าโฮสต์ใดได้รับการกำหนดค่าใด
ข้อมูลเดียวกันใน group_vars...
ไฟล์: /opt/tomcat/fxcts/logs/gxxss.log
คอมพ์: TX_Tomcat
แอพ: TX
โมดูล: GXX
ไปป์ไลน์_regex: ไม่มี
ไปป์ไลน์_vars:
- ไม่มี
drop_expression: ไม่มี
หลายบรรทัด: ไม่มี
นี่คือเทมเพลตจินจา
Scrape_configs:
- job_name: {{ โมดูล }}
ไปป์ไลน์_stages:
- regex:
นิพจน์: {{ ไปป์ไลน์_regex }}
- ป้ายกำกับ:
{% สำหรับป้ายกำกับในไปป์ไลน์_vars -%}
{{ ป้ายกำกับ }}:
{% สิ้นสุดสำหรับ %}
{# นี่คือการทดสอบ #}
- การประทับเวลา:
ที่มา: วันที่
รูปแบบ: 2006-01-01 15:00:00.000000
- หยด:
นิพจน์: {{ drop_expression }}
- หลายบรรทัด:
เส้นแรก: ""
max_wait_time: 3 วินาที
static_configs:
static_configs:
- เป้าหมาย:
- โลคัลโฮสต์
ป้ายกำกับ:
แอป: {{ แอป }}
โฮสต์: {{ ansible_hostname }}
ส่วนประกอบ: {{ คอมพ์ }}
__path__: {{ ไฟล์ }}
นี่คือตัวอย่างการกำหนดค่า yaml จริง ดังที่ฉันได้กล่าวไปแล้วว่าตำแหน่งบันทึกที่แตกต่างกันอาจแตกต่างกันไปตามโฮสต์
เซิร์ฟเวอร์:
http_listen_port: 9080
grpc_listen_port: 0
ตำแหน่ง:
ชื่อไฟล์: /tmp/positions.yaml
ลูกค้า:
- URL: http://host:3100/loki/api/v1/push
Scrape_configs:
- job_name: ระบบ
static_configs:
- เป้าหมาย:
- โลคัลโฮสต์
ป้ายกำกับ:
งาน: varlogs
โฮสต์: ${HOSTNAME}
__path__: /var/log/*log
- job_name: apps_ssi
static_configs:
- เป้าหมาย:
- โลคัลโฮสต์
ป้ายกำกับ:
งาน: ssi
โฮสต์: ${HOSTNAME}
__path__: /opt/tomcat/ssi/logs/*log
- job_name: apps_fxcts
static_configs:
- เป้าหมาย:
- โลคัลโฮสต์
ป้ายกำกับ:
งาน: fxcts
โฮสต์: ${HOSTNAME}
__path__: /opt/tomcat/fxcts/logs/*log
- job_name: วารสาร
วารสาร:
json: เท็จ
max_age: 12ชม
ป้ายกำกับ:
งาน: systemd-journal
โฮสต์: ${HOSTNAME}
relabel_configs:
- source_labels: ['__journal__systemd_unit']
target_label: 'หน่วย'