Score:0

เหตุใดสคริปต์ทุบตีนี้จึงทำให้เกิดผลบวกปลอมมากมายสำหรับการตรวจสอบการใช้หน่วยความจำ

ธง fi

ฉันกำลังตรวจสอบเซิร์ฟเวอร์หลายร้อยเครื่องทั้งเฉพาะและเสมือนโดยใช้สคริปต์ต่อไปนี้:

#!/bin/bash

PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

เกณฑ์ = 90

serverip=$($(ซึ่ง ifconfig) | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9 ]*\.){3}[0-9]*' | grep -v '127.0.0.1' | หัว -1)
memused=$(free | awk '/Mem/{printf("การใช้ RAM: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | cut -d"" - f1)

ถ้า [ "$memused" -gt "$threshold" ]
แล้ว
    CTIME=$(วันที่ +%Y-%m-%d-%H%M%S)
    ps aux > /root/.example/logs/lowmem-"${CTIME}"-ps.log
    ด้านบน -n 1 -o %MEM -c > /root/.example/logs/lowmem-"${CTIME}"-top.log
    ฟรี -m > /root/.example/logs/lowmem-"${CTIME}"-free.log
    mysqladmin proc -v สถานะ > /root/.example/logs/lowmem-"${CTIME}"-mysqlproc.log
    bash /example/general/slack.sh "#server-alerts" ":warning: $(ชื่อโฮสต์) - ${serverip} - การใช้หน่วยความจำถึง 90% - ตรวจสอบบันทึก /root/.example/logs/lowmem-${ CTIME} \n \`\`\`$(หัว -1 /root/.example/logs/lowmem-"${CTIME}"-free.log) \n $(หัว -2 /root/.example/logs /lowmem-"${CTIME}"-free.log | tail -1) \n $(tail -1 /root/.example/logs/lowmem-"${CTIME}"-free.log)\`\` \`"
    crontab -l | grep -v '/example/mon_mem.sh' | crontab -
    นอน 900
    crontab -l | { แมว; echo "* * * * * ทุบตี /example/mon_mem.sh"; } | crontab -
ไฟ

ในขณะที่มันใช้งานได้ในกรณีส่วนใหญ่ เราสุ่มได้รับผลบวกปลอม เซิร์ฟเวอร์สุ่มอย่างสมบูรณ์และไม่สอดคล้องกับแต่ละเซิร์ฟเวอร์ ดังนั้นเซิร์ฟเวอร์หนึ่งอาจทริกเกอร์ แต่จากนั้นจะไม่ทริกเกอร์อีกเลย (เท็จ)

ตัวอย่างผลบวกลวง:

รวมใช้บัฟ/แคชที่ใช้ร่วมกันฟรี 
เมม: 2048 345 1580 27 122 1674 
สลับ: 2048 0 2048

มีการแจ้งเตือนเข้ามาจากเซิร์ฟเวอร์นี้ แต่คุณเห็นว่ามีการใช้งานเพียง 345 MB เท่านั้น

anx avatar
fr flag
anx
หน่วยความจำ "ฟรี" จำนวนน้อยถือว่า *ดี* หากคุณต้องการเตือนเกี่ยวกับแรงดันหน่วยความจำ ให้ตรวจสอบหมายเลข "ว่าง" แทน นอกจากนี้ ให้ใช้เอาต์พุตเดียวกันกับที่ใช้ *ทริกเกอร์* คำเตือนเพื่อรวมไว้ในคำเตือน *ข้อความ* สำหรับคำอธิบายที่เป็นประโยชน์มากขึ้น (คุณกำลังโทรฟรี 2 ครั้ง โดยผลลัพธ์น่าจะต่างกัน)
Score:1
ธง fr
anx

3 ปัญหา:

  1. คุณกำลังโทร ฟรี สองครั้ง: ครั้งเดียว ทริกเกอร์ คำเตือนหนึ่งครั้งสำหรับการส่งรายงาน ตัวเลขจะมีการเปลี่ยนแปลงในระหว่าง เก็บผลลัพธ์ (ในตัวแปร) และดึงข้อมูลเดิมสองครั้ง

  2. หน่วยความจำ "ใช้แล้ว" ควร เข้าใกล้จำนวนหน่วยความจำทั้งหมด และ "ว่าง" ควรเข้าใกล้ศูนย์เสมอ ถ้าคุณมี ไม่ได้ใช้ หน่วยความจำ นั่นหมายถึงคุณได้สูญเสียทรัพยากรไปโดยเปล่าประโยชน์ ซึ่งอย่างน้อยควรทำหน้าที่เป็นแคช ในขณะที่ไม่ได้รับการจัดสรร

    แนะนำให้เปลี่ยน รำพึง บรรทัดที่เปรียบเทียบคอลัมน์ที่สองกับคอลัมน์ที่สาม ($3/$2) เพื่อเปรียบเทียบคอลัมน์แรกกับคอลัมน์สุดท้ายแทน

  3. ดูเหมือนว่าวิธีการส่งข้อความของคุณจะสูญเสียการจัดรูปแบบ อาจต้องการตรวจสอบวิธีการจัดส่งของคุณ (slack.sh) เพื่อแสดงอินพุตของคุณใน monospace หรือแทนที่ tab&spaces ด้วยตัวเว้นวรรคที่เหมาะสม

    ตารางควรมีลักษณะดังนี้:

    ทั้งหมด ใช้แล้ว ฟรี ใช้ร่วมกัน หนังสัตว์ / แคช มีอยู่
    เมม: 2048 345 1580 27 122 1674
    แลกเปลี่ยน: 2048 0 2048

    เดอะ ห้า ตัวเลขขึ้นต้นด้วยหน่วยความจำ "ทั้งหมด" และถ้ามีอะไร ล่าสุด ตัวเลขคือสิ่งที่คุณควรใส่ใจ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา