Điểm:0

Tại sao tập lệnh bash này lại kích hoạt quá nhiều lỗi tích cực để theo dõi việc sử dụng bộ nhớ?

lá cờ fi

Tôi đang theo dõi hàng trăm máy chủ cả chuyên dụng và ảo bằng tập lệnh sau:

#!/bin/bash

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

ngưỡng=90

serverip=$($( which ifconfig) | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9 ]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
memused=$(free | awk '/Mem/{printf("Mức sử dụng RAM: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | cut -d"." - f1)

nếu [ "$memused" -gt "$threshold" ]
sau đó
    CTIME=$(ngày +%Y-%m-%d-%H%M%S)
    ps aux > /root/.example/logs/lowmem-"${CTIME}"-ps.log
    top -n 1 -o %MEM -c > /root/.example/logs/lowmem-"${CTIME}"-top.log
    free -m > /root/.example/logs/lowmem-"${CTIME}"-free.log
    mysqladmin proc -v status > /root/.example/logs/lowmem-"${CTIME}"-mysqlproc.log
    bash /example/General/slack.sh "#server-alerts" ":warning: $(hostname) - ${serverip} - Mức sử dụng bộ nhớ đã đạt 90% - Kiểm tra nhật ký /root/.example/logs/lowmem-${ CTIME} \n \`\`\`$(head -1 /root/.example/logs/lowmem-"${CTIME}"-free.log) \n $(head -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 -
    ngủ 900
    crontab -l | { con mèo; tiếng vang "* * * * * * bash /example/mon_mem.sh"; } | crontab -
fi

Mặc dù nó hoạt động trong hầu hết các trường hợp, nhưng chúng tôi ngẫu nhiên nhận được thông báo sai, các máy chủ hoàn toàn ngẫu nhiên và không nhất quán với từng máy chủ nên một máy chủ có thể kích hoạt nhưng sau đó không kích hoạt nữa (sai)

Ví dụ về dương tính giả:

tổng số buff/bộ đệm được chia sẻ miễn phí đã sử dụng hiện có 
Mem: 2048 345 1580 27 122 1674 
Hoán đổi: 2048 0 2048

Một cảnh báo đến từ máy chủ này nhưng bạn có thể thấy chỉ 345 MB được sử dụng.

anx avatar
lá cờ fr
anx
Dung lượng bộ nhớ "miễn phí" thấp là *tốt*. Nếu bạn muốn cảnh báo về áp suất bộ nhớ, thay vào đó hãy kiểm tra số "có sẵn". Ngoài ra, hãy sử dụng cùng một đầu ra được sử dụng để *kích hoạt* cảnh báo để đưa vào *văn bản* cảnh báo để có lời giải thích hữu ích hơn (bạn đang gọi miễn phí hai lần, với các kết quả có thể khác nhau).
Điểm:1
lá cờ fr
anx

3 vấn đề:

  1. Bạn đang gọi miễn phí hai lần: một lần cho kích hoạt cảnh báo, một lần để gửi báo cáo. Các con số sẽ thay đổi ở giữa. Lưu trữ đầu ra (trong một biến) và truy xuất cùng một dữ liệu hai lần.

  2. Bộ nhớ "đã qua sử dụng" Nên tiếp cận tổng dung lượng bộ nhớ và "miễn phí" luôn luôn tiếp cận bằng 0. Nếu bạn có không sử dụng bộ nhớ, điều đó có nghĩa là bạn đã lãng phí tài nguyên, trong khi không được phân bổ, ít nhất sẽ đóng vai trò là bộ đệm.

    Tôi khuyên bạn nên thay đổi ghi nhớ dòng hiện đang so sánh cột thứ hai với cột thứ ba ($3/$2) để so sánh cột đầu tiên với cột cuối cùng.

  3. Phương thức gửi tin nhắn của bạn dường như bị mất định dạng. Có thể muốn kiểm tra phương thức phân phối của bạn (slack.sh) để hiển thị đầu vào của bạn ở dạng đơn cách hoặc thay thế tab&dấu cách bằng các khoảng cách thích hợp.

    Đây là cách bảng sẽ trông giống như:

    toàn bộ được sử dụng miễn phí chia sẻ buff/bộ đệm có sẵn
    nhớ: 2048 345 1580 27 122 1674
    Tráo đổi: 2048 0 2048

    Các năm các số bắt đầu bằng bộ nhớ "tổng" và nếu có, Cuối cùng số là một trong những bạn nên quan tâm.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.