Merge branch 'update_docs_1_34'

This commit is contained in:
Isaac Connor 2021-05-10 14:53:14 -04:00
commit 726f1f616d
3 changed files with 44 additions and 22 deletions

View File

@ -11,18 +11,21 @@ How can I stop ZoneMinder filling up my disk?
--------------------------------------------- ---------------------------------------------
Recent versions of ZoneMinder come with a filter you can use for this purpose already included. Recent versions of ZoneMinder come with a filter you can use for this purpose already included.
The filter is called **PurgeWhenFull** and to find it, choose one of the event counts from the console page, for instance events in the last hour, for one of your monitors. **Note** that this filter is automatically enabled if you do a fresh install of ZoneMinder including creating a new database. If you already have an existing database and are upgrading ZoneMinder, it will retain the settings of the filter (which in earlier releases was disabled by default). So you may want to check if PurgeWhenFull is enabled and if not, enable it. The filter is called **PurgeWhenFull** and to find it, click on the word **Filters** in the header.
**Note** that this filter is automatically enabled if you do a fresh install of ZoneMinder including creating a new database. If you already have an existing database and are upgrading ZoneMinder, it will retain the settings of the filter (which in earlier releases was disabled by default). So you may want to check if PurgeWhenFull is enabled and if not, enable it.
To enable it, go to Web Console, click on any of your Events of any of your monitors. To enable it, go to Web Console, click on the word **Filters** in the UI header.
This will bring up an event listing and a filter window.
In the filter window there is a drop down select box labeled 'Use Filter', that lets your select a saved filter. Select 'PurgeWhenFull' and it will load that filter. In the filter window there is a drop down select box labeled 'Use Filter', that lets you select a saved filter. Select 'PurgeWhenFull' and it will load that filter.
Make any modifications you might want, such as the percentage full you want it to kick in, or how many events to delete at a time (it will repeat the filter as many times as needed to clear the space, but will only delete this many events each time to get there). Make any modifications you might want, such as the percentage full you want it to kick in, or how many events to delete at a time (it will repeat the filter as many times as needed to clear the space, but will only delete this many events each time to get there).
Then click on 'Save' which will bring up a new window. Make sure the 'Automatically delete' box is checked and press save to save your filter. This will then run in the background to keep your disk within those limits. Ensure that the Run filter in background checkbox is checked.
Ensure that the Delete all matches checkbox is checked.
After you've done that, you changes will automatically be loaded into zmfilter within a few minutes. Then click on 'Save'. The filter will immediately begin executing in the background to keep your disk within those limits.
Please note that that this filter will only affect the default storage location. If you have added other storage areas, you must create a PurgeWhenFull filter for each one, and specify the Storage Area as one of the parameters in the filter. You can duplicate the existing PurgeWhenFull filter by using Save As instead of Save.
Check the ``zmfilter.log`` file to make sure it is running as sometimes missing perl modules mean that it never runs but people don't always realize. Check the ``zmfilter.log`` file to make sure it is running as sometimes missing perl modules mean that it never runs but people don't always realize.
@ -46,7 +49,7 @@ Normally an event created as the result of an alarm consists of entries in one o
ZM_RUN_AUDIT: ZM_RUN_AUDIT:
The zmaudit daemon exists to check that the saved information in the database and on the file system match and are consistent with each other. If an error occurs or if you are using 'fast deletes' it may be that database records are deleted but files remain. In this case, and similar, zmaudit will remove redundant information to synchronize the two data stores. This option controls whether zmaudit is run in the background and performs these checks and fixes continuously. This is recommended for most systems however if you have a very large number of events the process of scanning the database and file system may take a long time and impact performance. In this case you may prefer to not have zmaudit running unconditionally and schedule occasional checks at other, more convenient, times. The zmaudit daemon exists to check that the saved information in the database and on the file system match and are consistent with each other. If an error occurs or if you are using 'fast deletes' it may be that database records are deleted but files remain. In this case, and similar, zmaudit will remove redundant information to synchronize the two data stores. This option controls whether zmaudit is run in the background and performs these checks and fixes continuously. This is not recommended for most systems, as zmaudit.pl is very resource intensive.
ZM_AUDIT_CHECK_INTERVAL: ZM_AUDIT_CHECK_INTERVAL:
@ -184,14 +187,27 @@ Once I did this, images started to stream for me.
Lastly, please look for errors created by the zmc processes. If zmc isn't running, then zms will not be able to get an image from it and will exit. Lastly, please look for errors created by the zmc processes. If zmc isn't running, then zms will not be able to get an image from it and will exit.
I have several monitors configured but when I load the Montage view in FireFox why can I only see two? or, Why don't all my cameras display when I use the Montage view in FireFox? I have several monitors configured but when I load the Montage view why can I only see two? or, Why don't all my cameras display when I use the Montage view?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
By default FireFox only supports a small number of simultaneous connections. Using the montage view usually requires one persistent connection for each camera plus intermittent connections for other information such as statuses. By default most browsers only support a small number of simultaneous connections to any given server. Using the montage view usually requires one persistent connection for each camera plus intermittent connections for other information such as statuses.
You will need to increase the number of allowed connections to use the montage view with more than a small number of cameras. Certain FireFox extensions such as FasterFox may also help to achieve the same result. In firefox you can increase the limit, but other browsers are not configurable in this way.
To resolve this situation, follow the instructions below: A solution for all browsers is something we call multi-port. We reconfigure apache to operate on ports other than the default of 80(http) or 443(https). You need to pick a range, let's say 30000 to 30010 in order to support 10 cameras. We add lines to your zoneminder apache config file as follows:
Listen 30000
Listen 30001
Listen 30002
Listen 30003
etc
Listen 30010
If you are using virtualhosts, you will have to add these to the VirtualHost directive as well.
Then in ZoneMinder config, Go Options -> Network and set MIN_STREAMING_PORT to 30000. Now when generating urls to stream images from ZoneMinder a port will be appended that is 30000 + MonitorId, so Monitor 1 will stream from 30001 and so on. This will allow Montage to stream from all monitors.
Alternatively if you are in fact using only Firefox, you can increase the limit as follows:
Enter ``about:config`` in the address bar Enter ``about:config`` in the address bar

View File

@ -4,7 +4,7 @@ Filtering Events
Filters allow you to define complex conditions with associated actions in ZoneMinder. Examples could include: Filters allow you to define complex conditions with associated actions in ZoneMinder. Examples could include:
* Send an email each time a new event occurs for a specific monitor * Send an email each time a new event occurs for a specific monitor
* Delete events that are more than 10 days old * Delete events that are more than 10 days old
And many more. And many more.
@ -29,14 +29,17 @@ Here is what the filter window looks like
events later and also make sure archived events don't get deleted, for example events later and also make sure archived events don't get deleted, for example
.. todo :: .. todo ::
fill in what update used disk space, copy all matches, move all matches do. For the "create video" filter, put in more details on how it works, any dependencies etc. For the "create video" filter, put in more details on how it works, any dependencies etc.
* Update used disk space: * Update used disk space: calculates how much disk space is currently taken by the event and updates the db record.
* Create video for all matches: creates a video file of all the events that match * Create video for all matches: creates a video file of all the events that match
* Execute command on all matches: Allows you to execute any arbitrary command on the matched events. You can use replacement tokens as subsequent arguents to the command, the last argument will be the absolute path to the event, preceeded by replacement arguents. eg: /usr/bin/script.sh %MN% will excecute as /usr/bin/script.sh MonitorName /path/to/event. * Create video for all matches: ffmpeg will be used to create a video file (mp4) out of all the stored jpgs if using jpeg storage.
* Execute command on all matches: Allows you to execute any arbitrary command on the matched events. You can use replacement tokens as subsequent arguents to the command, the last argument will be the absolute path to the event, preceeded by replacement arguents. eg: /usr/bin/script.sh %MN% will excecute as /usr/bin/script.sh MonitorName /path/to/event. Please note that urls may contain characters like & that need quoting. So you may need to put quotes around them like /usr/bin/scrupt.sh "%MN%".
* Delete all matches: Deletes all the matched events. * Delete all matches: Deletes all the matched events.
* Copy all matches: * Email details of all matches: Sends an email to the configured address with details about the event.
* Move all matches: * Copy all matches: copies the event files to another location, specified in the Copy To dropdown. The other location must be setup in the Storage Tab under options.
* Message details of all matches: Uses an email to SMS gateway to send an SMS message for each match.
* Move all matches: copies the event files to another location, specified in the Move To dropdown. The other location must be setup in the Storage Tab under options. The files will be delete from the original location.
* Run filter in background: When checked, ZoneMinder will make sure the filter is checked regularly. For example, if you want to be notified of new events by email, you should make sure this is checked. Filters that are configured to run in the background have a “*” next to it. * Run filter in background: When checked, ZoneMinder will make sure the filter is checked regularly. For example, if you want to be notified of new events by email, you should make sure this is checked. Filters that are configured to run in the background have a “*” next to it.
* Run filter concurrently: Allows this filter to run in its own thread thereby letting other filters run in parallel. * Run filter concurrently: Allows this filter to run in its own thread thereby letting other filters run in parallel.
@ -78,10 +81,13 @@ Here is what the filter window looks like
* %EPIMOD% Path to image containing object detection, suitable for use in img tags * %EPIMOD% Path to image containing object detection, suitable for use in img tags
* %EPIMODG% Path to image containing object detection animated gif version, suitable for use in img tags * %EPIMODG% Path to image containing object detection animated gif version, suitable for use in img tags
* %EI1% Attach first alarmed event image * %EI1% Attach first alarmed event image
* %EI1A% Attach first alarmed event analysis image
* %EIM% Attach (first) event image with the highest score * %EIM% Attach (first) event image with the highest score
* %EIMA% Attach (first) event analysis image with the highest score
* %EIMOD% Attach image containing object detection * %EIMOD% Attach image containing object detection
* %EIMODG% Attach image containing object detection animated gif version * %EIMODG% Attach image containing object detection animated gif version
* %EV% Attach event mpeg video * %EV% Attach event mpeg video
* %EVM% Attach event mpeg video in phone format
* %MN% Name of the monitor * %MN% Name of the monitor
* %MET% Total number of events for the monitor * %MET% Total number of events for the monitor
* %MEH% Number of events for the monitor in the last hour * %MEH% Number of events for the monitor in the last hour
@ -111,12 +117,11 @@ How filters actually work
-------------------------- --------------------------
It is useful to know how filters actually work behind the scenes in ZoneMinder, in the event you find your filter not functioning as intended: It is useful to know how filters actually work behind the scenes in ZoneMinder, in the event you find your filter not functioning as intended:
* the primary filter processing process in ZoneMinder is a perl file called ``zmfilter.pl`` which retrieves filters from the Filters database table * Each filter set to run in the background will be run in it's own process called ``zmfilter.pl`` which retrieves filters from the Filters database table
* zmfilter.pl runs every FILTER_EXECUTE_INTERVAL seconds (default is 20s, can be changed in Options->System) * zmfilter.pl runs every FILTER_EXECUTE_INTERVAL seconds (default is 20s, can be changed in Options->System)
* in each run, it goes through all the filters which are marked as "Run in Background" and if the conditions match performs the specified action * after each interval the filter will query the database and apply the action to each matching event.
* zmfilter.pl also reloads all the filters every FILTER_RELOAD_DELAY seconds (default is 300s/5mins, can be changed in Options->System) * zmfilter.pl also reloads the filter every FILTER_RELOAD_DELAY seconds (default is 300s/5mins, can be changed in Options->System)
* So if you have just created a new filter, zmfilter will not see it till the next FILTER_RELOAD_DELAY cycle * In previous versions of ZoneMinder filter changes would not take immediate effect, but now the web ui will start/stop/restart filters as appropriate upon editing a filter.
* This is also important if you are using "relative times" like 'now' - see :ref:`relative_caveat`
Relative items in date strings Relative items in date strings

View File

@ -27,6 +27,7 @@ S3 storage setup
You must use s3fs to mount the S3 bucket in your fs tree. Telling ZoneMinder that the location is S3 will let it use You must use s3fs to mount the S3 bucket in your fs tree. Telling ZoneMinder that the location is S3 will let it use
more efficient code to send and delete the event data. more efficient code to send and delete the event data.
The Do Deletes option tells ZoneMinder whether to actually perform delete operations when deleting events. S3fs systems often do deletes in a cron job or other background task and doing the deletes can overload an S3 system.
Refer to this guide for installation and configuration of s3fs - https://github.com/s3fs-fuse/s3fs-fuse Refer to this guide for installation and configuration of s3fs - https://github.com/s3fs-fuse/s3fs-fuse