mirror of
				https://github.com/moudsen/mailGraph
				synced 2025-10-29 00:27:38 +01:00 
			
		
		
		
	Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 36fd2b1d23 | ||
|   | 2a39f94718 | ||
|   | 3d6ec8e735 | ||
|   | bfd5a1670c | ||
|   | ac1a6c49a7 | ||
|   | 6e06c5b0cc | ||
|   | cdccef3d4d | ||
|   | b874e38c30 | ||
|   | 1de203d79f | 
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							| @@ -23,10 +23,19 @@ Please refer to the Wiki how to get mailGraph installed and configured on your s | ||||
| ## Reference websites ## | ||||
| [Extensive GERMAN installation from scratch](https://znil.net/index.php?title=Zabbix_mailGraph_installieren_-_Trigger_Alerts_Emails_mit_Grafiken) - nice work from Bernard Linz | ||||
|  | ||||
| ## Announcement - Zabbix 5.x maintenance for mailGraph end-of-life - mailGraph 3.x development in progress ## | ||||
| _(2024/01/26)_ | ||||
| ## Announcements ## | ||||
| _(2025/02/04)_ | ||||
|  | ||||
| First mailGraph v3 release is underway, now supporting Zabbix 7 (in particular the new API bearer token authentication method). | ||||
| Started on coding and testing mailGraph v3. | ||||
|  | ||||
| _(2025/01/26)_ | ||||
|  | ||||
| mailGraph v2.20 now supporting Zabbix 7.0 (LTS) and Zabbix 7.2 (in particular the new API bearer token authentication method). | ||||
|  | ||||
| _(2024/12/01)_ | ||||
|  | ||||
| As per December 2024 PHP 7 and older is no longer supported. Please upgrade to a supported PHP 8 version. | ||||
| Note that mailGraph is expected to function in older PHP versions. | ||||
|  | ||||
| _(2023/11/01)_ | ||||
|  | ||||
| @@ -34,8 +43,12 @@ As per November 2023 the maintenance on mailGraph v2.x for Zabbix 5.x will stop | ||||
|  | ||||
| Principal bug fixing on mailGraph v2.x (logic failure or similar) will continue but only for Zabbix 6.x onwards. | ||||
|  | ||||
| ## Ideas and improvements ## | ||||
|  | ||||
| I'm open to new feature requests - please raise an issue for this in this Github space. | ||||
|  | ||||
| [#50 - Docker support](https://github.com/moudsen/mailGraph/issues/50) - Docker support inserted shortly after testing; will be pushed into release 3 shortly. | ||||
|  | ||||
| ## Special thank you ## | ||||
| I would like to express my gratitude to the following people that have actively contributed to bring bugs and improvements to my attention: | ||||
| - [pqvindesland](https://github.com/pqvindesland) | ||||
|   | ||||
| @@ -23,6 +23,7 @@ | ||||
|     "smtp_reply_address": "feedback@mydomain.com", | ||||
|     "smtp_reply_name": "mailGraph response mailbox", | ||||
|     "graph_match": "any", | ||||
|     "item_value_truncate": 50, | ||||
|     "period": "20m", | ||||
|     "period_header": "Last 20 minutes", | ||||
|     "retention_images": 7, | ||||
|   | ||||
							
								
								
									
										31
									
								
								config/config.json.template.api_token
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								config/config.json.template.api_token
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| { | ||||
|     "script_baseurl": "https:\/\/mydomain.com\/", | ||||
|     "cli_eventId": 0, | ||||
|     "cli_duration": 0, | ||||
|     "cli_recipient": "recipient@mydomain.com", | ||||
|     "cli_subject": "[TEST] {{ HOST_NAME|raw }}:  ({{ EVENT_SEVERITY }}) {{ EVENT_NAME|raw }}", | ||||
|     "cli_baseURL": "https:\/\/mydomain.com\/zabbix\/", | ||||
|     "cli_period": "30m", | ||||
|     "cli_period_header": "Last 30 minutes", | ||||
|     "cli_debug": 1, | ||||
|     "cli_proxy": "", | ||||
|     "zabbix_user": "alogicalusername", | ||||
|     "zabbix_user_pwd": "astrongpassword", | ||||
|     "zabbix_api_token": "TheTokenGeneratedInZabbix", | ||||
|     "subject": "{{ HOST_NAME|raw }}:  ({{ EVENT_SEVERITY }}) {{ EVENT_NAME|raw }}", | ||||
|     "smtp_server": "localhost", | ||||
|     "smtp_port": 25, | ||||
|     "smtp_security": "none", | ||||
|     "smtp_strict": "yes", | ||||
|     "smtp_from_address": "mailgraph@mydomain.com", | ||||
|     "smtp_from_name": "mailGraph", | ||||
|     "smtp_reply_address": "feedback@mydomain.com", | ||||
|     "smtp_reply_name": "mailGraph response mailbox", | ||||
|     "graph_match": "any", | ||||
|     "item_value_truncate": 50, | ||||
|     "period": "20m", | ||||
|     "period_header": "Last 20 minutes", | ||||
|     "retention_images": 7, | ||||
|     "retention_logs": 14, | ||||
|     "debug": 0 | ||||
| } | ||||
| @@ -23,6 +23,7 @@ | ||||
|     "smtp_reply_address": "feedback@mydomain.com", | ||||
|     "smtp_reply_name": "mailGraph response mailbox", | ||||
|     "graph_match": "any", | ||||
|     "item_value_truncate": 50, | ||||
|     "periods": "10m,4h,2d,7d", | ||||
|     "periods_headers": "Last 10 minutes,Last 4 hours,Last 2 days,Last 7 days", | ||||
|     "debug": 0 | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								images/mailGraph-small.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/mailGraph-small.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 55 KiB | 
| @@ -1,4 +1,4 @@ | ||||
| // mailGraph v2.16 | ||||
| // mailGraph v2.20 | ||||
|  | ||||
| // Function to test string | ||||
| function isJSON(str) { | ||||
|   | ||||
| @@ -45,6 +45,7 @@ | ||||
|     // Release 3 placeholder for Zabbix 7.0 LTS and 7.2+ | ||||
|     // ------------------------------------------------------------------------------------------------------ | ||||
|     // 2.20                            Tested in Zabbix 7.0.7 LTS and Zabbix 7.2.2 | ||||
|     // 2.21 2025/02/20 - Mark Oudsen - Added #57 enhancement for manipulation of data value truncing | ||||
|     // ------------------------------------------------------------------------------------------------------ | ||||
|     // | ||||
|     // (C) M.J.Oudsen, mark.oudsen@puzzl.nl | ||||
| @@ -109,7 +110,7 @@ | ||||
|     ///////////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|  | ||||
|     // CONSTANTS | ||||
|     $cVersion = 'v2.20'; | ||||
|     $cVersion = 'v2.21'; | ||||
|     $cCRLF = chr(10).chr(13); | ||||
|     $maskDateTime = 'Y-m-d H:i:s'; | ||||
|     $maxGraphs = 8; | ||||
| @@ -721,6 +722,9 @@ | ||||
|     $p_graph_match = 'any'; | ||||
|     if ((isset($config['graph_match'])) && ($config['graph_match']=='exact')) { $p_graph_match = 'exact'; } | ||||
|  | ||||
|     $p_item_value_truncate = 0; | ||||
|     if (isset($config['item_value_truncate'])) { $p_item_value_truncate = intval($config['item_value_truncate']); } | ||||
|  | ||||
|     // --- GLOBAL CONFIGURATION --- | ||||
|  | ||||
|     // Script related settings | ||||
| @@ -1076,6 +1080,10 @@ | ||||
|                     _log('+ Trigger screen header = '.$triggerScreenPeriodHeader); | ||||
|                 } | ||||
|                 break; | ||||
|             case 'mailGraph.valueTruncate': | ||||
|                 $p_item_value_truncate = intval($aTag['value']); | ||||
|                 _log('+ Data value truncing = '.$p_item_value_truncate); | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -1120,9 +1128,11 @@ | ||||
|     if (substr($mailData['ITEM_LASTVALUE'],0,5)=='<?xml') { $mailData['ITEM_LASTVALUE'] = '[record]'; } | ||||
|     if (substr($mailData['ITEM_PREVIOUSVALUE'],0,5)=='<?xml') { $mailData['ITEM_PREVIOUSTVALUE'] = '[record]'; } | ||||
|  | ||||
|     // Catch long elements | ||||
|     if (strlen($mailData['ITEM_LASTVALUE'])>50) { $mailData['ITEM_LASTVALUE'] = substr($mailData['ITEM_LASTVALUE'],0,50).' ...'; } | ||||
|     if (strlen($mailData['ITEM_PREVIOUSVALUE'])>50) { $mailData['ITEM_PREVIOUSVALUE'] = substr($mailData['ITEM_PREVIOUSVALUE'],0,50).' ...'; } | ||||
|     // Handling long data elements | ||||
|     if ($p_item_value_truncate>0) { | ||||
|         if (strlen($mailData['ITEM_LASTVALUE'])>$p_item_value_truncate) { $mailData['ITEM_LASTVALUE'] = substr($mailData['ITEM_LASTVALUE'],0,$p_item_value_truncate).' ...'; } | ||||
|         if (strlen($mailData['ITEM_PREVIOUSVALUE'])>$p_item_value_truncate) { $mailData['ITEM_PREVIOUSVALUE'] = substr($mailData['ITEM_PREVIOUSVALUE'],0,$p_item_value_truncate).' ...'; } | ||||
|     } | ||||
|  | ||||
|     // --------------------- | ||||
|     // --- GET HOST INFO --- | ||||
| @@ -1352,6 +1362,7 @@ | ||||
|  | ||||
|         $result = array(); | ||||
|  | ||||
|         if (isset($screenGrahps['result'][0]['screenitems'])) { | ||||
|             foreach($screenGraphs['result'][0]['screenitems'] as $anItem) | ||||
|             { | ||||
|                 switch($anItem['resourcetype']) | ||||
| @@ -1373,6 +1384,9 @@ | ||||
|                         break; | ||||
|                 } | ||||
|             } | ||||
|         } else { | ||||
|             _log('> No screen items associated to this screen?'); | ||||
|         } | ||||
|  | ||||
|         // --- Sort the result according to SCREEN x,y position | ||||
|  | ||||
| @@ -1598,6 +1612,12 @@ | ||||
|     $mailData['EVENT_DURATION'] = $p_duration; | ||||
|     $mailData['HOST_PROBLEMS_URL'] = $z_server.'zabbix.php?show=1&name=&inventory%5B0%5D%5Bfield%5D=type&inventory%5B0%5D%5Bvalue%5D=&evaltype=0&tags%5B0%5D%5Btag%5D=&tags%5B0%5D%5Boperator%5D=0&tags%5B0%5D%5Bvalue%5D=&show_tags=3&tag_name_format=0&tag_priority=&show_opdata=0&show_timeline=1&filter_name=&filter_show_counter=0&filter_custom_time=0&sort=clock&sortorder=DESC&age_state=0&show_suppressed=0&unacknowledged=0&compact_view=0&details=0&highlight_row=0&action=problem.view&hostids%5B%5D='.$mailData['HOST_ID']; | ||||
|  | ||||
|     // Handling long data elements | ||||
|     if ($p_item_value_truncate>0) { | ||||
|         if (strlen($mailData['ITEM_LASTVALUE'])>$p_item_value_truncate) { $mailData['ITEM_LASTVALUE'] = substr($mailData['ITEM_LASTVALUE'],0,$p_item_value_truncate).' ...'; } | ||||
|         if (strlen($mailData['ITEM_PREVIOUSVALUE'])>$p_item_value_truncate) { $mailData['ITEM_PREVIOUSVALUE'] = substr($mailData['ITEM_PREVIOUSVALUE'],0,$p_item_value_truncate).' ...'; } | ||||
|     } | ||||
|  | ||||
|     ///////////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|     // Compose & Send Message /////////////////////////////////////////////////////////////////////////////// | ||||
|     ///////////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|   | ||||
| @@ -101,7 +101,7 @@ | ||||
|                                 ({{ HOST_ERROR }}) | ||||
| {% endif %} | ||||
|                                 <br/> | ||||
| {% if EVENT_OPDATE|length > 0 %} | ||||
| {% if EVENT_OPDATA|length > 0 %} | ||||
|                                 Operational data: <b>{{ EVENT_OPDATA }}</b><br/> | ||||
| {% endif %} | ||||
|                                 Status: <b>{{ EVENT_STATUS }}</b><br/> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user