mirror of
https://github.com/moudsen/mailGraph
synced 2025-07-12 04:14:25 +02:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
01fafd98c5 | ||
![]() |
fbcc359f05 | ||
![]() |
12c9f1e331 | ||
![]() |
2a599cb777 | ||
![]() |
e40342cd94 | ||
![]() |
36fd2b1d23 | ||
![]() |
2a39f94718 | ||
![]() |
3d6ec8e735 | ||
![]() |
bfd5a1670c | ||
![]() |
ac1a6c49a7 | ||
![]() |
6e06c5b0cc | ||
![]() |
cdccef3d4d | ||
![]() |
b874e38c30 | ||
![]() |
1de203d79f |
20
README.md
20
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,13 @@ 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.
|
||||
_Please refer to the `docker` directory for the first release of the docker image on Docker Hub (hoppa66/zabbix-mailgraph)_
|
||||
|
||||
## 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
|
||||
|
1
docker/.env
Normal file
1
docker/.env
Normal file
@ -0,0 +1 @@
|
||||
RESTART_POLICY=unless-stopped
|
88
docker/Dockerfile
Normal file
88
docker/Dockerfile
Normal file
@ -0,0 +1,88 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
#########################################################################################################
|
||||
#########################################################################################################
|
||||
##
|
||||
## ZABBIX-MAILGRAPH (Dockerfile)
|
||||
## =============================
|
||||
## Dockerfile to builld and configure the zabbix-mailgraph image.
|
||||
##
|
||||
## -----------------------------------------------------------------------------------------------------
|
||||
## v0.9.1 2025/05/05 - Mark Oudsen - First public beta - Pending documentation
|
||||
## v0.9.0 2025/05/05 - Mark Oudsen - Internal test release
|
||||
## v0.1.0 2025/05/05 - Mark Oudsen - Initial build, based on idea from "dima-online
|
||||
## "https://github.com/moudsen/mailGraph/issues/50
|
||||
##
|
||||
## -----------------------------------------------------------------------------------------------------
|
||||
##
|
||||
## (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
||||
## MIT License
|
||||
## Credits: "demi-online" (https://github.com/dima-online)
|
||||
##
|
||||
#########################################################################################################
|
||||
#########################################################################################################
|
||||
|
||||
# Disable interactive functions
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Install Apache, PHP and supplimentary programs
|
||||
RUN apt-get update && \
|
||||
apt-get install -y apache2 \
|
||||
libapache2-mod-php \
|
||||
php-curl \
|
||||
php-zip \
|
||||
curl \
|
||||
git
|
||||
|
||||
# Clean out APT files
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
RUN apt-get clean -y
|
||||
|
||||
# Install Composer for PHP dependencies
|
||||
RUN cd /tmp && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
|
||||
|
||||
# Enable Apache modules
|
||||
RUN a2enmod php8.3
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# Update the PHP.ini file, enable <? ?> tags and quieten logging.
|
||||
RUN sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php/8.3/apache2/php.ini
|
||||
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php/8.3/apache2/php.ini
|
||||
|
||||
# Manually set up the apache environment variables
|
||||
ENV APACHE_RUN_USER=www-data
|
||||
ENV APACHE_RUN_GROUP=www-data
|
||||
ENV APACHE_LOG_DIR="/var/log/apache2"
|
||||
ENV APACHE_LOCK_DIR="/var/lock/apache2"
|
||||
ENV APACHE_PID_FILE="/var/run/apache2.pid"
|
||||
|
||||
# Copy the Github code into Apache site directory (run fetch_mailgraph.sh before building!)
|
||||
ADD www /var/www/site/public
|
||||
|
||||
# Copy the cleanup script into local bin
|
||||
ADD cleanup.sh /usr/local/bin/cleanup
|
||||
RUN chmod +x /usr/local/bin/cleanup
|
||||
|
||||
# Fetch dependencies via Composer
|
||||
RUN composer require phpmailer/phpmailer
|
||||
RUN composer require twig/twig
|
||||
|
||||
# Move into the site directory
|
||||
RUN mv /composer* /var/www/site/public/.
|
||||
RUN mv /vendor /var/www/site/public/.
|
||||
|
||||
# Create some directories not existing yet
|
||||
RUN mkdir /var/www/site/public/log
|
||||
RUN mkdir /var/www/site/public/tmp
|
||||
|
||||
# Fix ownership
|
||||
RUN chown www-data.www-data -R /var/www/site/public
|
||||
|
||||
# Update(/overwrite) the default apache site with the config we created
|
||||
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
# Expose the HTTP port to external
|
||||
EXPOSE 80
|
||||
|
||||
# By default, simply start apache
|
||||
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
|
44
docker/README.md
Normal file
44
docker/README.md
Normal file
@ -0,0 +1,44 @@
|
||||
## Introduction ##
|
||||
With the following instructions, mailGraph can be run in a Docker container.
|
||||
Every new version of mailGraph will also be deployed to Docker Hub.
|
||||
|
||||
WORK-IN-PROGRESS
|
||||
|
||||
## Instructions - Plain vanilla deployment ##
|
||||
- Create a directory structure on your system as follows:
|
||||
```
|
||||
mkdir /opt/Zabbix-Mailgraph
|
||||
mkdir /opt/Zabbix-Mailgraph/config
|
||||
mkdir /opt/Zabbix-Mailgraph/templates
|
||||
```
|
||||
- Create a new `config.json` in the above `config` directory and configure accordingly (refer to the wiki for more detailed instructions or use the `config.json.template` as a boilerplate).
|
||||
- Copy the `plain.template` and `html.template` into the above `templates` directory.
|
||||
- Deploy the mailGraph container, preferably using `docker-compose`:
|
||||
-- Adopt and configure the `docker-compose.yml` file to your needs;
|
||||
-- Configure `RESTART_POLICY=unless-stopped` in a file name `.env` (same directory as `docker-compose`).
|
||||
- Start the container: `docker-compose -D up`.
|
||||
- Follow best-practices on your applicable Linux version to ensure the container is started after a reboot.
|
||||
|
||||
When running:
|
||||
- mailGraph is exposed on port `9080` (point the Zabbix webhook to this location).
|
||||
- Apache logging is exposed on `/opt/Zabbix-Mailgraph/apache.log`.
|
||||
|
||||
## Testing and Debugging ##
|
||||
- Display currently running containers `docker ps`.
|
||||
- Execute `docker exec -it <container name> sh` for a shell into the container.
|
||||
- Following the instructions in the Wiki on troubleshooting and debugging, i.e.:
|
||||
-- `cd /var/www/site/public`
|
||||
-- `php mailGraph.test test`
|
||||
- When done testing, `exit` the container.
|
||||
|
||||
## Periodic cleanup of images and logs ##
|
||||
The following command must be run on a regular basis to clean up images and logs (add to cron for example):
|
||||
- `docker exec -it <container name> cleanup`
|
||||
|
||||
## Custom deployment ##
|
||||
In case you like to adjust the container to your needs, you can adopt and modiyfy the provisioned scripts and files in this directory.
|
||||
Please do not forget to modify the repository name in `build.sh` and `docker-compose.yml`.
|
||||
|
||||
## 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 with regards for mailGraph on Docker:
|
||||
- [dima-online](https://github.com/dima-online)
|
18
docker/apache-config.conf
Normal file
18
docker/apache-config.conf
Normal file
@ -0,0 +1,18 @@
|
||||
ServerName mailgraph.mydomain.com
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin me@mydomain.com
|
||||
|
||||
DocumentRoot /var/www/site/public
|
||||
|
||||
<Directory /var/www/site/public>
|
||||
Options Indexes FollowSymLinks MultiViews
|
||||
AllowOverride All
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
|
||||
</VirtualHost>
|
2
docker/build.sh
Executable file
2
docker/build.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker build -t hoppa66/zabbix-mailgraph .
|
3
docker/cleanup.sh
Normal file
3
docker/cleanup.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
cd /var/www/site/public
|
||||
php mailGraph.php cleanup
|
13
docker/docker-compose.yml
Normal file
13
docker/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
webhook:
|
||||
image: hoppa66/zabbix-mailgraph:latest
|
||||
restart: ${RESTART_POLICY}
|
||||
hostname: mailgraph
|
||||
ports:
|
||||
- "9080:80"
|
||||
volumes:
|
||||
- /opt/Zabbix-mailGraph/apache.log:/var/log/apache2:rw
|
||||
- /opt/Zabbix-mailGraph/config:/var/www/site/public/config:ro
|
||||
- /opt/Zabbix-mailGraph/templates:/var/www/site/public/templates:ro
|
3
docker/fetch_mailgraph.sh
Executable file
3
docker/fetch_mailgraph.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
rm -rf www
|
||||
git clone https://github.com/moudsen/mailGraph.git www
|
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) {
|
||||
|
118
mailGraph.php
118
mailGraph.php
@ -45,6 +45,8 @@
|
||||
// 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
|
||||
// 2.22 2025/03/19 - Mark Oudsen - Fixed #60 incorrect JSON request (boolean as text instead of bool)
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
//
|
||||
// (C) M.J.Oudsen, mark.oudsen@puzzl.nl
|
||||
@ -109,7 +111,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// CONSTANTS
|
||||
$cVersion = 'v2.20';
|
||||
$cVersion = 'v2.22';
|
||||
$cCRLF = chr(10).chr(13);
|
||||
$maskDateTime = 'Y-m-d H:i:s';
|
||||
$maxGraphs = 8;
|
||||
@ -417,52 +419,27 @@
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Check the array for information we do not want to share in any logging
|
||||
// Check the array if it contains information that should not be logged
|
||||
|
||||
function maskOutputFields($info)
|
||||
function maskKey(&$theValue, $theKey)
|
||||
{
|
||||
foreach($info as $aKey=>$aValue)
|
||||
switch($theKey)
|
||||
{
|
||||
switch($aKey)
|
||||
{
|
||||
case 'zabbix_user':
|
||||
case 'zabbix_user_pwd':
|
||||
case 'zabbix_api_user':
|
||||
case 'zabbix_api_pwd':
|
||||
case 'zabbix_api_token':
|
||||
$info[$aKey] = '<masked>';
|
||||
break;
|
||||
case 'zabbix_user':
|
||||
case 'zabbix_user_pwd':
|
||||
case 'zabbix_api_user':
|
||||
case 'zabbix_api_pwd':
|
||||
case 'zabbix_api_token':
|
||||
case 'username':
|
||||
case 'password':
|
||||
$theValue = '<masked>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return($info);
|
||||
}
|
||||
|
||||
// Check the array if it contains information that should not be logged
|
||||
|
||||
function maskOutputContent($info)
|
||||
{
|
||||
global $config;
|
||||
|
||||
foreach($info as $infoKey=>$infoValue)
|
||||
{
|
||||
if (is_array($infoValue)) { $info[$infoKey] = maskOutputContent($infoValue); }
|
||||
|
||||
foreach($config as $aKey=>$aValue)
|
||||
{
|
||||
switch($aKey)
|
||||
{
|
||||
case 'zabbix_user':
|
||||
case 'zabbix_user_pwd':
|
||||
case 'zabbix_api_user':
|
||||
case 'zabbix_api_pwd':
|
||||
case 'zabbix_api_token':
|
||||
if ($aValue==$infoValue) { $info[$infoKey] = '<masked>'; };
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
array_walk_recursive($info,'maskKey');
|
||||
return($info);
|
||||
}
|
||||
|
||||
@ -554,7 +531,7 @@
|
||||
$config = readConfig(getcwd().'/config/config.json');
|
||||
|
||||
_log('# Configuration taken from config.json'.$cCRLF.
|
||||
json_encode(maskOutputFields($config),JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||
json_encode(maskOutputContent($config),JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||
|
||||
// --- MAIL DATA ---
|
||||
|
||||
@ -721,6 +698,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
|
||||
@ -867,7 +847,7 @@
|
||||
$request = array('jsonrpc'=>'2.0',
|
||||
'method'=>'problem.get',
|
||||
'params'=>array('output'=>'extend',
|
||||
'recent'=>'true',
|
||||
'recent'=>TRUE,
|
||||
'limit'=>1),
|
||||
'auth'=>$token,
|
||||
'id'=>nextRequestID());
|
||||
@ -886,7 +866,7 @@
|
||||
$request = array('jsonrpc'=>'2.0',
|
||||
'method'=>'problem.get',
|
||||
'params'=>array('output'=>'extend',
|
||||
'recent'=>'false',
|
||||
'recent'=>FALSE,
|
||||
'limit'=>1),
|
||||
'auth'=>$token,
|
||||
'id'=>nextRequestID());
|
||||
@ -1076,6 +1056,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 +1104,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,26 +1338,30 @@
|
||||
|
||||
$result = array();
|
||||
|
||||
foreach($screenGraphs['result'][0]['screenitems'] as $anItem)
|
||||
{
|
||||
switch($anItem['resourcetype'])
|
||||
if (isset($screenGrahps['result'][0]['screenitems'])) {
|
||||
foreach($screenGraphs['result'][0]['screenitems'] as $anItem)
|
||||
{
|
||||
case 0: // Graph
|
||||
$request = array('jsonrpc'=>'2.0',
|
||||
'method'=>'graph.get',
|
||||
'params'=>array('graphids'=>$anItem['resourceid'],
|
||||
'expandName'=>1,
|
||||
'output'=>'extend'),
|
||||
'auth'=>$token,
|
||||
'id'=>nextRequestID());
|
||||
switch($anItem['resourcetype'])
|
||||
{
|
||||
case 0: // Graph
|
||||
$request = array('jsonrpc'=>'2.0',
|
||||
'method'=>'graph.get',
|
||||
'params'=>array('graphids'=>$anItem['resourceid'],
|
||||
'expandName'=>1,
|
||||
'output'=>'extend'),
|
||||
'auth'=>$token,
|
||||
'id'=>nextRequestID());
|
||||
|
||||
$screenGraph = postJSON($z_url_api,$request);
|
||||
_log('+ Graph data for screen item #'.$anItem['screenitemid'].$cCRLF.
|
||||
json_encode($screenGraph,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||
$screenGraph = postJSON($z_url_api,$request);
|
||||
_log('+ Graph data for screen item #'.$anItem['screenitemid'].$cCRLF.
|
||||
json_encode($screenGraph,JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK));
|
||||
|
||||
$result[] = array('screen'=>$anItem,'name'=>$screenGraphs['result'][0]['name'],'graph'=>$screenGraph['result'][0]);
|
||||
break;
|
||||
$result[] = array('screen'=>$anItem,'name'=>$screenGraphs['result'][0]['name'],'graph'=>$screenGraph['result'][0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
_log('> No screen items associated to this screen?');
|
||||
}
|
||||
|
||||
// --- Sort the result according to SCREEN x,y position
|
||||
@ -1598,6 +1588,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/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user