> -----Original Message-----
> From: Dan Williams [mailto:dan.j.willi...@intel.com]
> Sent: Thursday, March 15, 2018 3:20 AM
> To: Qi, Fuli/斉 福利 <qi.f...@jp.fujitsu.com>
> Cc: linux-nvdimm <linux-nvdimm@lists.01.org>
> Subject: Re: [RFC PATCH v4] ndctl: monitor: add ndctl monitor daemon
> 
> On Tue, Mar 13, 2018 at 4:33 AM, QI Fuli <qi.f...@jp.fujitsu.com> wrote:
> > This is the v4 patch for ndctl monitor daemon, a tiny daemon to monitor the
> > smart events of nvdimm DIMMs. Users can run a monitor as a one-shot
> command
> > or a daemon in background by using the [--daemon] option. DIMMs to monitor
> > can be selected by [--dimm] [--bus] [--region] [--namespace] options.
> > When a smart event fires, monitor daemon will log the notification which
> > including dimm health status to syslog or a logfile by setting [--log] 
> > option.
> > The notification follows json format and can be consumed by log collectors
> > like Fluented.
> >
> > For example, a monitor daemon can be started by the following command:
> > # ndctl monitor --dimm nmem1 --log /var/log/monitor.log --daemon
> daemon-name
> >
> > Then check the monitor daemon status by using systemd:
> > # systemctl status ndctl-monitor@daemon-name.service
> >
> > To stop the monitor daemon by:
> > # systemctl stop ndctl-monitor@daemon-name.service
> >
> > Also, a monitor daemon can be started by systemd:
> > # systemctl start ndctl-monitor.service
> > Which monitors all dimms.
> >
> > In this implemention, when a ndctl monitor starts with [--daemon] option, 
> > all
> > the arguments will be saved into a temp file named as daemon-name and placed
> > under /etc/sysconfig/ndctl/ directory. The temp file would be used as an
> > EnvironmentFile by systemd, and it would be deleted automatically when the
> > systemd service is stopped.
> 
> The monitors started by hand should be kept separate from the monitors
> started by systemd. The default monitor started by systemd should get
> its configuration from /etc/ndctl.conf, and we should otherwise have a
> --conf-file option to the monitor to override the default
> configuration. Any other monitors started outside of the systemd
> should remain independent.
> 

I prefer to add an EnvironmentFile like /etc/sysconfig/ndctl/monitor to systemd
rather than add a configuration file. According to [1], environment variable
substitution is supported in systemd.service, so we can define the variables 
through 
"EnvironmentFile=/etc/sysconfig/ndctl/monitor".
In this fashion, we do not need to add any extra codes to parse the 
configuration file.

In this case, [--conf-file] option is not necessary either.
According to [2], sytemd units can be instantiated from a template file, thus 
we only
need to add a template unit file in advance. 
If user wants to run multiple monitors with different configurations, they can 
differentiate
them by adding multiple EnvironmentFiles, like 
/etc/sysconfig/ndctl/<monitor1...n>.
Then the monitors can be started by command like
"# systemctl start ndctl-monitor@<monitor1...n>.service".

When the monitors started by hand, it will do not need any configuration files,
because we can add options and parameters directly.

[1]https://www.freedesktop.org/software/systemd/man/systemd.service.html
[2]https://www.freedesktop.org/software/systemd/man/systemd.unit.html
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to