Sử dụng mẫu tùy chỉnh cho cảnh báo OneFS CELOG

Tổng quan

Gần đây, nhiều câu hỏi đã được đặt ra về cách sử dụng mẫu tùy chỉnh cho cảnh báo CELOG SMTP. Kể từ OneFS 6.0 (2010), CELOG đã sử dụng một công cụ mẫu có tên là Tempita ( https://pypi.org/project/Tempita/#description ) để định dạng mẫu email. Cả mẫu mặc định và mẫu tùy chỉnh có thể định cấu hình của người dùng đều sử dụng công cụ này. Vào năm 2013, toàn bộ dự án Tempita đã bị hủy bỏ. Trong OneFS 9.4 (2022), chúng tôi bắt đầu sử dụng một triển khai mới của công cụ mẫu – Mustache. ( https://mustache.github.io/ )

Trong blog này, tôi sẽ hướng dẫn bạn cách triển khai mới này.

Mẫu mặc định của tôi ở đâu?

Mẫu email mặc định nằm tại /etc/ifs/celog_email_template.txt. Không sửa đổi trực tiếp tệp mẫu này. Cú pháp tương tự như phiên bản trước, nhưng tôi sẽ sớm thực hiện.

# mèo /etc/ifs/celog_email_template.txt

{{#công ty}}

       Công ty: {{company}}

{{/công ty}}

{{#vị trí}}

      Vị trí: {{location}}

{{/vị trí}}

{{#tên_chính}}

  Tên chính: {{primary_name}}

{{/tên_chính}}

{{#điện_thoại_chính1}}

         Điện thoại: {{primary_phone1}}

{{/primary_phone1}}

{{#điện thoại chính2}}

        Điện thoại 2: {{primary_phone2}}

{{/primary_phone2}}

{{#primary_email}}

         Email: {{primary_email}}

{{/primary_email}}

{{#tên_phụ}}

Tên phụ: {{secondary_name}}

{{/tên_phụ}}

{{#điện_thoại_thứ_hai1}}

         Điện thoại: {{secondary_phone1}}

{{/điện thoại_thứ_hai1}}

{{#điện_thoại_thứ_hai2}}

        Điện thoại 2: {{secondary_phone2}}

{{/điện thoại_thứ_hai2}}

{{#secondary_email}}

         Email: {{secondary_email}}

{{/secondary_email}}

Tên cụm: {{clustername}}

GUID cụm: {{clusterguid}}

Phiên bản Sender OneFS: {{sender_onefsversion}}

Số sê-ri của người gửi: {{sender_serial}}

{{#node_event_list}}

{{^devid}}

Sự kiện cụm

{{/devid}}

{{#devid}}

Node {{node_name}} (devid {{devid}}) Nhóm sự kiện

————————————————– ———————-

Phiên bản OneFS: {{onefs_version}}

Số sê-ri: {{serial_number}}

{{/devid}}

————————————————– ———————-

  ID Bắt đầu Sev Tin nhắn

————————————————– ———————-

{{#nhóm sự kiện}}

{{eventgroup_instance}} {{time_noticed}} {{severity}} {{message}}

{{/nhóm sự kiện}}

{{/node_event_list}}

Tệp đính kèm:

Đính kèm:

{{#danh_sách_đính_kèm}}

{{.}}

{{/danh sách đính kèm}}

{{^danh_sách_đính_kèm}}

(không có)

{{/danh sách đính kèm}}

{{#has_unattached_list}}

Không đính kèm do giới hạn kích thước email:

{{/has_unattached_list}}

{{#danh_sách_không_gắn_vào}}

{{.}}

{{/unattached_list}}

{{#kb_url_list}}

{{.}}

{{/kb_url_danh sách}}

Và mẫu mặc định này sẽ hiển thị cảnh báo email CELOG như sau:

 

Cú pháp

Phép thay thế biến cơ bản

Tên cụm: {{clustername}}

Điều này không thay đổi giữa Tempita và Mustache.

Các câu lệnh điều kiện (nếu)

{{#công ty}}

       Công ty: {{company}}

{{/công ty}}

Mustache cho phép bạn hiển thị có điều kiện một số văn bản bằng cách bao bọc nó trong một phần, bắt đầu bằng thẻ “#” và kết thúc bằng thẻ “/”. Trong trường hợp này, chúng tôi chỉ tạo ra “Company: SOME_COMPANY_NAME” nếu biến công ty có mặt. Trong các trường hợp khác, khi biến được đặt tên là giá trị boolean true/false, chúng tôi chỉ hiển thị phần nếu biến là true.

Mustache thực sự không có câu lệnh if/else, nhưng nó cho phép bạn sử dụng “^” để có được điều ngược lại của một số điều kiện, có hiệu ứng tương tự như câu lệnh else. Ví dụ, phần này của mẫu mới thêm “(none)” trong trường hợp không chắc là không có tệp nào được đính kèm, điều mà mẫu mặc định trước đó không làm:

Tệp đính kèm:

Đính kèm:

{{#danh_sách_đính_kèm}}

{{.}}

{{/danh sách đính kèm}}

{{^danh_sách_đính_kèm}}

(không có)

{{/danh sách đính kèm}}

Tại đây, nếu không có mục nào trong attachment_list, chúng tôi sẽ hiển thị “(none)” trong phần {{^attachment_list}}.

Vòng lặp (cho)

Mới:

{{#nhóm sự kiện}}

{{eventgroup_instance}} {{time_noticed}} {{severity}} {{message}}

{{/nhóm sự kiện}}

Các vòng lặp của Mustache cũng bắt đầu bằng phần “#”, tương tự như các câu lệnh điều kiện của nó. Nếu phần này dành cho danh sách các mục, nó sẽ xuất ra nội dung của phần đó cho từng mục trong danh sách.

Trong một vòng lặp, bạn tự động ở trong ngữ cảnh của mục hiện tại và có thể truy cập trực tiếp vào các mục con của mục đó. Nếu bạn muốn truy cập vào chính mục đó, hãy sử dụng {{.}}, như trong ví dụ attachment_list ở trên. Ví dụ này thực ra là từ một vòng lặp bên trong, trong đó vòng lặp bên ngoài nằm trên mỗi nút có cảnh báo cần gửi, đó là lý do tại sao chúng ta truy cập trực tiếp vào eventgroups thay vì node_event[‘eventgroups’] cũ. Các biến khả dụng

Thông tin chung

Các giá trị được cấu hình trong liên hệ cụm isi.

công ty
vị trí
tên_chính
email chính
điện thoại chính1
điện thoại chính2
tên_phụ
email phụ
điện thoại phụ1
điện thoại thứ cấp2

Thông tin cụm

tên cụm
hướng dẫn cụm
người gửi_một_phiên_bản
người gửi_serial

Thông tin nhóm sự kiện

Các nhóm sự kiện được chia theo nút, trong một danh sách gọi là node_event_list. “Nút” có devid 0 thực sự chứa các nhóm sự kiện trên toàn cụm.

Ví dụ về danh sách có một nút duy nhất có một nhóm sự kiện duy nhất:

"node_event_list": [

    {

        "lnn"1,

        "devid"1,

        "node_name""cluster-1",

        "onefs_version""Isilon OneFS 9.4.0.0 (0x90400b000000002)",

        "serial_number""SERIAL_NUMBER",

        "eventgroups": [

            {

                "resolved"0,

                "specifier": {

                    "val"0,

                    "devid"1,

                    "lnn"1

                },

                "severity""C",

                "time_noticed""09/17 17:12",

                "eventgroup_instance"11,

                "message""The /var partition is near capacity (>0.0% used)",

                "causes": [

                    "100010001"

                ]

            }

        ]

    }

]

Thông tin đính kèm

Nhóm sự kiện có thể cung cấp hoặc không cung cấp tệp đính kèm email, tùy thuộc vào kích thước tệp đính kèm và liệu các tệp đính kèm đó có được tạo ngay từ đầu hay không.

Ví dụ về biến đính kèm:

“has_attachment_list”: đúng

“danh sách tệp đính kèm”: [

     “sự kiện-GUID-TIME.xml”,

    “largevarfiles.190”,

    “dfvar.190”,

     “largelogs.190”

]

“has_unattached_list”: sai

“danh sách không đính kèm”: []

Thông tin KB

URL KB được cung cấp dưới dạng danh sách các chuỗi:

“kb_url_list”: [

    “URL cơ sở tri thức cho sự kiện 100010001: \nhttp://doc.isilon.com/onefs/9.4.0/help/en-us/#ifs_r_event_100010001.html\n”

]

Kiểm tra mẫu

Một trình kiểm tra mẫu cũng được giới thiệu trong OneFS 9.4 để đảm bảo cú pháp của mẫu tùy chỉnh là chính xác. Trình kiểm tra này sẽ cố gắng xem trước mẫu trên dòng lệnh trước khi cấu hình mẫu trên kênh thực tế mà không cần tạo sự kiện thực tế. Trình kiểm tra này sẽ sử dụng thông tin cụm được xác định trong Quản lý cụm à Cài đặt chung à Nhận dạng cụm trong OneFS WebUI, nhưng sự kiện ví dụ không phải là sự kiện thực.

Sau đây là một ví dụ về việc kiểm tra mẫu mặc định tại /etc/ifs/celog_email_template.txt 

# python -m isi.celog_alerting.channels kiểm tra mẫu /etc/ifs/celog_email_template.txt

       Công ty: tên công ty

      Vị trí: sh

  Tên chính: vincent

         Điện thoại: 555123

        Điện thoại2: 555789

         Email: vincent.shen@dell.com

Tên phụ: userB

         Điện thoại: 555000

        Điện thoại2: 5558080

         Email: userB@dell.com

Tên cụm: vshen-fne68wf

GUID cụm: 005056ad9f23abc43966c50dd6c6d69d25bf

Phiên bản Sender OneFS: Isilon OneFS 9.9.0.0 (0x90900b000001095)

Số sê-ri của người gửi: SV200-004EII-TUMJ

Node vshen-fne68wf-1 (devid 1) Nhóm sự kiện

————————————————– ———————-

Phiên bản OneFS: Isilon OneFS 9.9.0.0 (0x90900b000001095)

Số sê-ri: SV200-004EII-TUMJ

————————————————– ———————-

  ID Bắt đầu Sev Tin nhắn

————————————————– ———————-

113 09/13 16:53 C Phân vùng /var/crash gần đạt dung lượng (đã sử dụng 92,5%)

Tệp đính kèm:

Đính kèm:

sự kiện.xml

dfall.401

varcrashls.401

dấu vết ngược.401

Không đính kèm do giới hạn kích thước email:

a_tập_tin_rất_lớn.txt

URL cơ sở kiến ​​thức cho sự kiện 100010002:

http://doc.isilon.com/onefs/9.9.0/help/en-us/#ifs_r_event_100010002.html

Tác giả : Vincent Shen