Làm thế nào để bạn kích hoạt syslogd để chấp nhận các kết nối đến trên Snow Leopard từ các logger từ xa?


11

Làm cách nào để tôi có được syslogd để chấp nhận các kết nối đến từ các máy chủ từ xa trên Snow Leopard?

Tôi muốn tập trung ghi nhật ký sao cho các thiết bị và hệ thống khác nhau gửi nhật ký đến syslogd của Snow Leopard, thường treo trên UDP 514. Tuy nhiên, tôi không thể để chúng được chấp nhận thành công bởi syslogd tốt. Tôi đã gõ vào hộp Snow Leopard để xác minh rằng các gói đang được chuyển đến cổng 514 - chúng là như vậy. Tôi đã kiểm tra rằng syslogd đang nghe trên 514 - không phải vậy.

Googling xung quanh nói với tôi rằng, trên các phiên bản OSX cũ hơn (bạn không thích cách mọi thứ thay đổi quá nhanh trên OSX), người ta chỉ cần thêm một lá cờ vào trình nền syslogd để cho phép điều khiển từ xa; một đã làm điều này trong com.apple.syslogd.plist. Tuy nhiên, daemon syslogd không có cờ (ít nhất là trong trang man của nó) gợi ý mọi thứ từ xa.

Giải pháp cho vấn đề này là gì?

Thứ yếu, nhập khẩu ít hơn nhưng câu hỏi có liên quan: 'newsyslog' là gì? Tôi thấy một tập tin plist nhưng nó không chạy (rõ ràng).

Cảm ơn


Có ai biết câu trả lời không? Tôi có một xu hướng để hỏi những câu hỏi chưa được trả lời.
Emmel

Câu trả lời:


5

Tôi đã không thử điều này, nhưng tôi đã tìm trong bảng liệt kê cho syslogd (/ System / L Library / LaunchDaemons / com.apple.syslogd.plist) và thấy phần này đã nhận xét:

<!--
        Un-comment the following lines to enable the network syslog protocol listener.
-->
<!--
        <key>NetworkListener</key>
        <dict>
                <key>SockServiceName</key>
                <string>syslog</string>
                <key>SockType</key>
                <string>dgram</string>
        </dict>
-->

Xóa các bình luận và sau đó tải lại dịch vụ:

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

và bạn có khả năng trên con đường của bạn.


Trả lời câu hỏi phụ của bạn - newsyslogtương tự như logrotate thường thấy trên các hệ thống linux. man newsyslog(hoặc trực tuyến ) sẽ cho bạn biết nhiều hơn.

Như được cài đặt với Snow Leopard, nó được chạy cứ sau 30 phút launchdcho mỗi bit này trong phần chính của nó:

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>

Tuyệt vời! Đó chính xác là câu trả lời tôi đang tìm kiếm. Tôi chỉ thử nghiệm nó và vâng, xác nhận nó hoạt động. Cảm ơn, Doug.
Emmel

11

Lưu ý rằng nếu bạn đang cố gắng thực hiện việc này trên máy Snow Leopard Server (ít nhất là với 10.6.4), bạn sẽ thấy rằng không có phần nhận xét nào trong / System / L Library / LaunchDaemons / com.apple.syslogd .plist (và rằng tệp plist được lưu trữ ở định dạng nhị phân).

Tuy nhiên, sao chép và dán khóa mà Doug trích dẫn ở trên sẽ thực hiện thủ thuật, mặc dù trước tiên, bạn sẽ cần phải chuyển đổi định dạng của tệp thành văn bản:

sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... và có lẽ bạn nên chuyển đổi nó trở lại sau đó (chuyển đổi xảy ra tại chỗ):

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... Sau đó tải lại daemon launchd theo hướng dẫn của Doug.

Sau đó, tập tin đầy đủ nên đọc như sau:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnableTransactions</key>
    <true/>
    <key>HopefullyExitsLast</key>
    <true/>
    <key>Label</key>
    <string>com.apple.syslogd</string>
    <key>MachServices</key>
    <dict>
        <key>com.apple.system.logger</key>
        <true/>
    </dict>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/syslogd</string>
    </array>
    <key>Sockets</key>
    <dict>
        <key>AppleSystemLogger</key>
        <dict>
            <key>SockPathMode</key>
            <integer>438</integer>
            <key>SockPathName</key>
            <string>/var/run/asl_input</string>
        </dict>
        <key>BSDSystemLogger</key>
        <dict>
            <key>SockPathMode</key>
            <integer>438</integer>
            <key>SockPathName</key>
            <string>/var/run/syslog</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
        <key>NetworkListener</key>
        <dict>
            <key>SockServiceName</key>
            <string>syslog</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
</dict>
</plist>

Thêm một lưu ý: nếu, giống như tôi, bạn muốn gửi các đầu ra syslog của trạm gốc AirPort (và / hoặc Viên nang thời gian ') đến máy chủ của bạn, họ sử dụng cơ sở 0, không thể thay đổi . Điều này có nghĩa là chúng sẽ được tự động đăng nhập vào /var/log/appfirewall.log vì mục nhập mặc định sau trong /etc/syslog.conf:

local0.*                                               /var/log/appfirewall.log

Trên phiên bản Máy chủ của HĐH, bạn có thể thay đổi tên tệp thành AirPort.log một cách an toàn sau khi bạn đã ban hành lệnh sau:

sudo touch /var/log/AirPort.log

... vì Tường lửa ứng dụng của Apple (socketfilterfw) bị tắt theo mặc định (và nên tắt trên máy chủ. IP ipww là tất cả những gì bạn thực sự muốn). Tôi không chắc liệu có thể cấu hình lại socketfilterfw để sử dụng một tiện ích nhật ký hệ thống khác không.


1
Chỉ cần những gì tôi đang tìm kiếm, câu trả lời hoàn hảo!
lừa dối

Đã thử nghiệm vào ngày 10.6.7 và hoạt động tốt. Cảm ơn!
Alexandre L kể

Đây chính xác là những gì tôi đã cố gắng làm! Cụ thể, hãy lấy 4 AEBS của tôi để đăng nhập vào Xserve đang chạy SLS của tôi. Nhiều đánh giá cao!
Dennis Wurster

Tôi thường thêm -udp_in arg để tôi có thể biết từ lệnh ps nếu tôi có nó chạy như một trình nghe từ xa. <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr

Các hướng dẫn này hoạt động tốt trên Mountain Lion (không phải máy chủ)
Nelson

6

Một phương pháp khác cho phép truy cập mạng vào syslogd trên Snow Leopard là sử dụng chương trình dòng lệnh PlistBuddy,

sudo /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.syslogd.plist
add :Sockets:NetworkListener dict
add :Sockets:NetworkListener:SockServiceName string syslog
add :Sockets:NetworkListener:SockType string dgram
save
quit

Và sau đó khởi động lại daemon,

sudo launchctl unload com.apple.syslogd.plist 
sudo launchctl load com.apple.syslogd.plist 

Bạn có thể sử dụng lsof để kiểm tra xem syslogd hiện đang nghe trên cổng syslog tiêu chuẩn, 514,

$ sudo lsof -i:514
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
launchd     1 root   44u  IPv6 0x0e459370      0t0  UDP *:syslog
launchd     1 root   56u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog
syslogd 24319 root    5u  IPv6 0x0e459370      0t0  UDP *:syslog
syslogd 24319 root    6u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog

Giải pháp này dường như cũng hoạt động ở Yosemite. Cảm ơn bạn.
Steve Powell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.