Xin đừng bận tâm đọc câu hỏi này. syslog-ng đã được thiết lập để gửi tin nhắn RFC5424 với khung đếm octet theo mặc định. Tôi đã bối rối trước hành vi của một thành phần khác. Câu hỏi này không hợp lệ.
Tôi có cấu hình syslog-ng OSE (v3.31.2):
phiên bản @: 3.29
@bao gồm "scl.conf"
nguồn s_mạng {
udp(ip(0.0.0.0) cổng(514));
};
đích d_network_telegraf {
nhật ký hệ thống (cổng "telegraf" (601) vận chuyển (tcp));
};
nhật ký {
nguồn(s_mạng);
đích (d_network_telegraf);
};
Mục đích là chuyển tiếp RFC3164 các thông báo nhật ký hệ thống được định dạng nhận được trên cổng UDP 514 và chuyển tiếp chúng dưới dạng RFC5424 tin nhắn được định dạng thành telegraf trên cổng TCP 601.
Với cấu hình này, syslog-ng dường như đang phát ra các tin nhắn được chuyển tiếp dưới dạng RFC5424 với khung không trong suốt (nhồi octet) (tin nhắn bắt đầu bằng ký tự ASCII <). Thật không may, telegraf mong muốn nhận được tin nhắn với khung đếm octet (tin nhắn bắt đầu bằng một chữ số). RFC6587 bao gồm những.
Mặc dù có thể định cấu hình telegraf để tạo khung không trong suốt, nhưng điều này dường như không hoạt động chính xác. Trước khi tìm hiểu kỹ vấn đề đó, tôi muốn thử giải pháp thay thế, đó là định cấu hình syslog-ng để xuất thông báo RFC5424 với khung đếm octet. Dù sao thì đây rõ ràng là kiểu khung được đề xuất.
Tuy nhiên, tôi không thể tìm thấy bất cứ điều gì trong tài liệu syslog-ng về điều này. Trong hầu hết các trường hợp, tài liệu thảo luận về việc sử dụng nhật ký hệ thống
lái xe cho đầu vào
, không phải đầu ra
, và gần như có không đề cập đến đếm octet.
Có thể cấu hình syslog-ng theo cách này không?
CHỈNH SỬA
Đây là cấu hình chính xác tôi đang sử dụng:
phiên bản @: 3.29
@bao gồm "scl.conf"
tùy chọn {
tạo thư mục (có);
flush-lines(1);
thời gian mở lại (60);
};
nguồn s_local {
hệ thống();
nội bộ();
};
nguồn s_mạng {
udp(ip(0.0.0.0) cổng(514));
};
đích đến d_local {
tệp ("/data/syslog-ng/var/log/message");
tệp ("/data/syslog-ng/var/log/messages-kv.log" mẫu ("$ISODATE $HOST $(format-welf --scope all-nv-pairs)\n") frac-digits(3 ));
};
đích d_network_files {
tệp ("/data/syslog-ng/var/log/message-mạng");
tệp ("/data/syslog-ng/var/log/messages-network-kv.log" mẫu ("$ISODATE $HOST $(format-welf --scope all-nv-pairs)\n") chữ số frac (3));
};
đích d_network_telegraf {
nhật ký hệ thống (cổng "telegraf" (601) vận chuyển (tcp));
};
nhật ký {
nguồn(s_mạng);
đích (d_network_telegraf);
đích (d_network_files);
};
Đây là một tin nhắn được gửi bởi logger -i -d --server localhost đây là thử nghiệm
đến syslog-ng qua cổng UDP 514:
0000 02 42 ac 15 00 09 02 42 69 3a f6 78 08 00 45 00 .B.....Bi:.x..E.
0010 00 a6 79 e7 40 00 40 11 68 2b ac 15 00 01 ac 15 ..y.@[email protected]+......
0020 00 09 b4 bd 02 02 00 92 58 d8 3c 31 33 3e 31 20 ........X.<13>1
0030 32 30 32 31 2d 31 31 2d 31 38 54 31 32 3a 34 31 2021-11-18T12:41
0040 3a 35 39 2e 39 34 33 39 36 35 2b 31 33 3a 30 30 :59.943965+13:00
0050 20 6b 6f 72 69 6d 61 6b 6f 20 64 61 76 69 64 20 korimako david
0060 36 38 38 31 34 30 20 2d 20 5b 74 69 6d 65 51 75 688140 - [timeQu
0070 61 6c 69 74 79 20 74 7a 4b 6e 6f 77 6e 3d 22 31 tính chất tzKnown="1
0080 22 20 69 73 53 79 6e 63 65 64 3d 22 31 22 20 73 " isSynced="1" s
0090 79 6e 63 41 63 63 75 72 61 63 79 3d 22 37 39 37 yncAccuracy="797
00a0 30 30 30 22 5d 20 74 68 69 73 20 69 73 20 61 20 000"] đây là
00b0 74 65 73 74 kiểm tra
Và đây là một tin nhắn được chụp giữa syslog-ng và telegraf (cổng TCP 601):
0000 02 42 ac 15 00 07 02 42 ac 15 00 09 08 00 45 00 .B.....B......E.
0010 00 ec ba 61 40 00 40 06 27 70 ac 15 00 09 ac 15 ...a@.@.'p......
0020 00 07 a7 ab 02 59 be 1c 32 98 d1 f9 90 93 80 18 .....Y..2.......
0030 01 f6 59 19 00 00 01 01 08 0a 0c 3e 2a 2d 7a e2 ..Y........>*-z.
0040 58 de 3c 31 33 3e 31 20 32 30 32 31 2d 31 31 2d X.<13>1 2021-11-
0050 31 37 54 32 33 3a 34 31 3a 35 39 2b 30 30 3a 30 17T23:41:59+00:0
0060 30 20 31 37 32 2e 32 31 2e 30 2e 31 20 31 20 2d 0 172.21.0.1 1 -
0070 20 2d 20 2d 20 32 30 32 31 2d 31 31 2d 31 38 54 - - 2021-11-18T
0080 31 32 3a 34 31 3a 35 39 2e 39 34 33 39 36 35 2b 12:41:59.943965+
0090 31 33 3a 30 30 20 6b 6f 72 69 6d 61 6b 6f 20 64 13:00 korimako d
00a0 61 76 69 64 20 36 38 38 31 34 30 20 2d 20 5b 74 cuồng nhiệt 688140 - [t
00b0 69 6d 65 51 75 61 6c 69 74 79 20 74 7a 4b 6e 6f imeQuality tzKno
00c0 77 6e 3d 22 31 22 20 69 73 53 79 6e 63 65 64 3d wn="1" isSynced=
00d0 22 31 22 20 73 79 6e 63 41 63 63 75 72 61 63 79 "1" đồng bộ Độ chính xác
00e0 3d 22 37 39 37 30 30 30 22 5d 20 74 68 69 73 20 = "797000"] cái này
00f0 69 73 20 61 20 74 65 73 74 0a là một thử nghiệm.
Bạn có thể thấy rằng thông báo bắt đầu ở byte 66 (0x42), bắt đầu bằng một <
nhân vật (<13>1 2021...
). Theo RFC6587, điều này được hiểu không phải là tạo khung đếm bộ tám mà là thay thế: tạo khung không minh bạch.
Nhật ký đầy đủ của syslog-ng cho sự kiện này là:
[2021-11-17T23:41:59.944928] Mục nhật ký đến; line='<13>1 2021-11-18T12:41:59.943965+13:00 korimako david 688140 - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="797000"] đây là thử nghiệm'
[2021-11-17T23:41:59.987236] Tin nhắn đi; message='2021-11-17T23:41:59.944+00:00 172.21.0.1 HOST=172.21.0.1 HOST_FROM=172.21.0.1 LEGACY_MSGHDR="1 " MESSAGE="2021-11-18T12:41:59.943965+13:00 korimako david 688140 - [timeQuality tzKnown=\"1\" isSynced=\"1\" syncAccuracy=\"797000\"] đây là thử nghiệm" PROGRAM=1 SOURCE=s_network\x0a'
[2021-11-17T23:41:59.987403] Tin nhắn đi; message='17 tháng 11 23:41:59 172.21.0.1 1 2021-11-18T12:41:59.943965+13:00 korimako david 688140 - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="797000"] this là một thử nghiệm\x0a'
[2021-11-17T23:42:31.994550] Đã thiết lập kết nối nhật ký hệ thống; fd='12', server='AF_INET(172.21.0.7:601)', local='AF_INET(0.0.0.0:0)'
[2021-11-17T23:42:31.994946] Tin nhắn đi; message='<13>1 2021-11-17T23:41:59+00:00 172.21.0.1 1 - - - 2021-11-18T12:41:59.943965+13:00 korimako david 688140 - [timeQuality tzKnown="1 " isSynced="1" syncAccuracy="797000"] đây là thử nghiệm\x0a'
[2021-11-17T23:42:36.996059] EOF xảy ra khi không hoạt động; fd='12'
[2021-11-17T23:42:36.996187] Đã đóng kết nối nhật ký hệ thống; fd='12', server='AF_INET(172.21.0.7:601)', time_reopen='60'
[2021-11-17T23:43:36.996635] Đã thiết lập kết nối nhật ký hệ thống; fd='12', server='AF_INET(172.21.0.7:601)', local='AF_INET(0.0.0.0:0)'
CẬP NHẬT 1: Tôi đã tìm thấy giá trị đếm octet bị thiếu ở đầu thông báo - giá trị này nằm trong khung TCP trước đó. Tôi nghĩ rằng điều này có nghĩa là đầu ra từ syslog-ng rốt cuộc đang sử dụng khung đếm octet. Tôi hiện đang tích cực gỡ lỗi nguồn telegraf vì tôi nghĩ rằng nó đang nhận được tin nhắn nhưng lại đóng kết nối do nhầm lẫn sau đó. Tôi sẽ cập nhật điều này khi tôi khám phá thêm.
CẬP NHẬT 2: Tôi đã xác định rằng plugin nhật ký hệ thống telegraf có lỗi hoặc lỗi trong tài liệu của nó và đang ngắt kết nối mọi kết nối TCP đến không hoạt động trong hơn 5 giây. Đây không phải là vấn đề phân tích cú pháp đơn thuần là thời gian chờ.
Do đó, không có vấn đề gì với syslog-ng và toàn bộ câu hỏi này là vô hiệu.