Skip to content
Thomas Nagy edited this page Nov 7, 2015 · 10 revisions

Headline

World domination by running syslog-ng on SOHO wireless routers with OpenWrt/DD-WRT

Intro

Our fridges or microwave ovens may not be running syslog-ng TODAY, but our home routers sure could!

To this day, these embedded systems have constituted an rsyslog-free niche. Built-in logging is done via the minimalistic busybox which isn't exactly full-featured, though it does offer basic TCP logging without the bells and whistles, however it is also said to be buggy at times.

Why not show the world how things are done properly? We could also show off some of our neat tricks at the same time.

Few years ago, we did have a bloated syslog-ng package on OpenWrt, but it went unmaintained and our architecture also changed. We need to get back on track and improve modularity to reach a greater audience.

You can vote on implementing this as soon as possible by subscribing to the GitHub issue, joining the discussion or offer help. We could definitely find good puzzles for 2-6 people, so don't be shy.

For more information, you can also refer to the wiki on OpenWrt support for syslog-ng.

Picture

D-Link DIR-300 wireless SOHO router

Drawn wireless SOHO router

TODO: choose and compose one (two?) of these and put syslog-ng logo on their body, connect via lines

Scope of the project

  1. Assist syslog-ng & open source firmware in creeping into homes
  2. Make syslog-ng friendlier to embedded systems

Examples of competences/experience which can be put to good use

Note that if you have at least one or two of those mentioned below, you are already good to go - there's no need to know everything.

  1. syslog-ng package building for Linux
  2. Package building for OpenWrt
  3. CI setup (Travis? Jenkins? drone.io?)
  4. Syslog-ng development/maintenance
  5. Refactoring non-trivial C code bases with (inter-)dependencies
  6. C programming for glib factoring
  7. C programming for SSL factoring/replacement
  8. Autotools, Autoconf, Automake, Makefiles
  9. Robert C. Martin's principles on Clean Code
  10. Proper, secure use of crypto libraries
  11. C size optimization/profiling/analysis
  12. OpenWrt on extroot or tweaking NFS
  13. OpenWrt's internal build system
  14. How to get into the blood flow of the OpenWrt developers/community and how to stay there
  15. User community building around OpenWrt or syslog-ng
  16. OpenWrt solution deployment, designing and setting up networking and other configurations, monitoring
  17. Setting up and configuring applications to demo cool use cases
  18. Setting up a repository mirror
  19. Manual testing at home on your hardware
  20. All the above said but just for dd-wrt
  21. Editing promotional video, making animation, editing images
  22. Tech writing for wikis, blog and promo material
  23. ... (your suggestions here)

Prioritized steps of implementation

Of course, depending on the final team size and the affinity of the exact volunteers, a different path could be followed.

  1. Building a fresh VM for OpenWrt 15.05
  2. Set up an OpenWrt build environment
  3. Examine old version of package
  4. Set up old dependencies
  5. Build the old version of the package
  6. Set up or adjust dependencies for current version
  7. Try to get the current version to build with the minimal feature set
  8. Solve compilation and other environmental issues: probably takes some time and perhaps code adjustments will be needed
  9. Set up a deployment recipe for extroot
  10. Set up a reasonably meaningful test network using a wireless mesh and connect some plausible services
  11. Size profile at a high level to see where we are currently and what needs to be done to fit 4MB flash
  12. Size optimization by dependency refactoring (glib, SSL)
  13. Size optimization by increased modularization (#defines, multiple choices of libraries, slice larger modules)
  14. Adjust Linux CI to test various new configurations
  15. Set up CI packaging & testing for *WRT
  16. Mirror full point&click OpenWrt/DD-WRT images preconfigured for syslog-ng.
  17. ... (your suggestions here)

Links

  1. Discussion on the first initiative https://github.com/balabit/syslog-ng/issues/759
  2. Official OpenWrt docs http://wiki.openwrt.org/doc/howto/log.syslog-ng
  3. Official DD-WRT docs https://www.dd-wrt.com/wiki/index.php/Logging_with_DD-WRT
Clone this wiki locally