Merge pull request #14318 from annando/stats

Count inbound and outbound packets
This commit is contained in:
Tobias Diekershoff 2024-07-26 20:44:49 +02:00 committed by GitHub
commit aae004d3d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 63 additions and 0 deletions

View file

@ -78,3 +78,9 @@ The following will compress */var/log/friendica* (assuming this is the location
daily daily
rotate 2 rotate 2
} }
### Zabbix
To monitor the health status of your Friendica installation, you can use for example a tool like Zabbix. Please define 'stats_key' in your local.config.php in the 'system' section to be able to access the statistics page at /stats?key=your-defined-stats_key
The statistics contain data about the worker performance, the last cron call, number of reports, inbound and outbound packets, posts and comments.

View file

@ -4265,4 +4265,22 @@ class Item
Logger::warning('Post does not exist although it was supposed to had been fetched.', ['id' => $id, 'url' => $url, 'uid' => $uid]); Logger::warning('Post does not exist although it was supposed to had been fetched.', ['id' => $id, 'url' => $url, 'uid' => $uid]);
return 0; return 0;
} }
public static function incrementInbound(string $network)
{
$packets = DI::keyValue()->get('stats_packets_inbound_' . $network) ?? 0;
if ($packets >= PHP_INT_MAX) {
$packets = 0;
}
DI::keyValue()->set('stats_packets_inbound_' . $network, $packets + 1);
}
public static function incrementOutbound(string $network)
{
$packets = DI::keyValue()->get('stats_packets_outbound_' . $network) ?? 0;
if ($packets >= PHP_INT_MAX) {
$packets = 0;
}
DI::keyValue()->set('stats_packets_outbound_' . $network, $packets + 1);
}
} }

View file

@ -22,9 +22,11 @@
namespace Friendica\Module\ActivityPub; namespace Friendica\Module\ActivityPub;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Item;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\BaseApi; use Friendica\Module\BaseApi;
use Friendica\Module\Special\HTTPException; use Friendica\Module\Special\HTTPException;
@ -103,6 +105,7 @@ class Inbox extends BaseApi
$uid = 0; $uid = 0;
} }
Item::incrementInbound(Protocol::ACTIVITYPUB);
ActivityPub\Receiver::processInbox($postdata, $_SERVER, $uid); ActivityPub\Receiver::processInbox($postdata, $_SERVER, $uid);
throw new \Friendica\Network\HTTPException\AcceptedException(); throw new \Friendica\Network\HTTPException\AcceptedException();

View file

@ -22,8 +22,10 @@
namespace Friendica\Module\DFRN; namespace Friendica\Module\DFRN;
use Friendica\BaseModule; use Friendica\BaseModule;
use Friendica\Core\Protocol;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\Conversation; use Friendica\Model\Conversation;
use Friendica\Model\Item;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\Response; use Friendica\Module\Response;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
@ -45,6 +47,8 @@ class Notify extends BaseModule
throw new HTTPException\BadRequestException(); throw new HTTPException\BadRequestException();
} }
Item::incrementInbound(Protocol::DFRN);
$data = json_decode($postdata); $data = json_decode($postdata);
if (is_object($data) && !empty($this->parameters['nickname'])) { if (is_object($data) && !empty($this->parameters['nickname'])) {
$user = User::getByNickname($this->parameters['nickname']); $user = User::getByNickname($this->parameters['nickname']);

View file

@ -25,6 +25,8 @@ use Friendica\App;
use Friendica\BaseModule; use Friendica\BaseModule;
use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Protocol;
use Friendica\Model\Item;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\Response; use Friendica\Module\Response;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
@ -57,6 +59,8 @@ class Receive extends BaseModule
throw new HTTPException\ForbiddenException($this->t('Access denied.')); throw new HTTPException\ForbiddenException($this->t('Access denied.'));
} }
Item::incrementInbound(Protocol::DIASPORA);
if ($this->parameters['type'] === 'public') { if ($this->parameters['type'] === 'public') {
$this->receivePublic(); $this->receivePublic();
} else if ($this->parameters['type'] === 'users') { } else if ($this->parameters['type'] === 'users') {

View file

@ -28,6 +28,7 @@ use Friendica\Core\System;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\GServer; use Friendica\Model\GServer;
use Friendica\Model\Item;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Module\Response; use Friendica\Module\Response;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
@ -101,6 +102,7 @@ class PubSub extends \Friendica\BaseModule
$this->logger->info('Import item from Contact.', ['nickname' => $nickname, 'contact-nickname' => $contact['nick'], 'contact-id' => $contact['id']]); $this->logger->info('Import item from Contact.', ['nickname' => $nickname, 'contact-nickname' => $contact['nick'], 'contact-id' => $contact['id']]);
$feedhub = ''; $feedhub = '';
Item::incrementOutbound(Protocol::OSTATUS);
OStatus::import($xml, $importer, $contact, $feedhub); OStatus::import($xml, $importer, $contact, $feedhub);
throw new HTTPException\OKException(); throw new HTTPException\OKException();

View file

@ -26,6 +26,7 @@ use Friendica\Core\L10n;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Model\GServer; use Friendica\Model\GServer;
use Friendica\Model\Item;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Module\Response; use Friendica\Module\Response;
use Friendica\Protocol\ActivityNamespace; use Friendica\Protocol\ActivityNamespace;
@ -210,6 +211,7 @@ class Salmon extends \Friendica\BaseModule
$contact = $contact ?: []; $contact = $contact ?: [];
Item::incrementOutbound(Protocol::OSTATUS);
OStatus::import($data, $importer, $contact, $hub); OStatus::import($data, $importer, $contact, $hub);
throw new HTTPException\OKException(); throw new HTTPException\OKException();

View file

@ -26,6 +26,7 @@ use Friendica\BaseModule;
use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs; use Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Protocol;
use Friendica\Core\Worker; use Friendica\Core\Worker;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Model\Register; use Friendica\Model\Register;
@ -116,6 +117,20 @@ class Stats extends BaseModule
'comments' => intval($this->keyValue->get('nodeinfo_local_comments')), 'comments' => intval($this->keyValue->get('nodeinfo_local_comments')),
], ],
], ],
'packets' => [
'inbound' => [
Protocol::ACTIVITYPUB => intval($this->keyValue->get('stats_packets_inbound_' . Protocol::ACTIVITYPUB) ?? 0),
Protocol::DFRN => intval($this->keyValue->get('stats_packets_inbound_' . Protocol::DFRN) ?? 0),
Protocol::DIASPORA => intval($this->keyValue->get('stats_packets_inbound_' . Protocol::DIASPORA) ?? 0),
Protocol::OSTATUS => intval($this->keyValue->get('stats_packets_inbound_' . Protocol::OSTATUS) ?? 0),
],
'outbound' => [
Protocol::ACTIVITYPUB => intval($this->keyValue->get('stats_packets_outbound_' . Protocol::ACTIVITYPUB) ?? 0),
Protocol::DFRN => intval($this->keyValue->get('stats_packets_outbound_' . Protocol::DFRN) ?? 0),
Protocol::DIASPORA => intval($this->keyValue->get('stats_packets_outbound_' . Protocol::DIASPORA) ?? 0),
Protocol::OSTATUS => intval($this->keyValue->get('stats_packets_outbound_' . Protocol::OSTATUS) ?? 0),
]
],
'reports' => [ 'reports' => [
'newest' => [ 'newest' => [
'datetime' => $report_datetime, 'datetime' => $report_datetime,

View file

@ -1011,6 +1011,7 @@ class DFRN
$content_type = ($public_batch ? 'application/magic-envelope+xml' : 'application/json'); $content_type = ($public_batch ? 'application/magic-envelope+xml' : 'application/json');
$postResult = DI::httpClient()->post($dest_url, $envelope, ['Content-Type' => $content_type], 0, HttpClientRequest::DFRN); $postResult = DI::httpClient()->post($dest_url, $envelope, ['Content-Type' => $content_type], 0, HttpClientRequest::DFRN);
Item::incrementOutbound(Protocol::DFRN);
$xml = $postResult->getBodyString(); $xml = $postResult->getBodyString();
$curl_stat = $postResult->getReturnCode(); $curl_stat = $postResult->getReturnCode();

View file

@ -2971,6 +2971,7 @@ class Diaspora
$postResult = DI::httpClient()->post($dest_url . '/', $envelope, ['Content-Type' => $content_type], 0, HttpClientRequest::DIASPORA); $postResult = DI::httpClient()->post($dest_url . '/', $envelope, ['Content-Type' => $content_type], 0, HttpClientRequest::DIASPORA);
$return_code = $postResult->getReturnCode(); $return_code = $postResult->getReturnCode();
Item::incrementOutbound(Protocol::DIASPORA);
} else { } else {
Logger::notice('test_mode'); Logger::notice('test_mode');
return 200; return 200;

View file

@ -22,7 +22,9 @@
namespace Friendica\Protocol; namespace Friendica\Protocol;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Item;
use Friendica\Network\HTTPClient\Client\HttpClientAccept; use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPClient\Client\HttpClientRequest; use Friendica\Network\HTTPClient\Client\HttpClientRequest;
use Friendica\Network\Probe; use Friendica\Network\Probe;
@ -226,6 +228,7 @@ class Salmon
$return_code = $postResult->getReturnCode(); $return_code = $postResult->getReturnCode();
} }
Item::incrementOutbound(Protocol::OSTATUS);
Logger::info('slapper for ' . $url . ' returned ' . $return_code); Logger::info('slapper for ' . $url . ' returned ' . $return_code);
if (!$return_code) { if (!$return_code) {

View file

@ -29,6 +29,7 @@ use Friendica\DI;
use Friendica\Model\APContact; use Friendica\Model\APContact;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\GServer; use Friendica\Model\GServer;
use Friendica\Model\Item;
use Friendica\Model\ItemURI; use Friendica\Model\ItemURI;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses; use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses;
@ -309,6 +310,8 @@ class HTTPSignature
self::setInboxStatus($target, ($return_code >= 200) && ($return_code <= 299)); self::setInboxStatus($target, ($return_code >= 200) && ($return_code <= 299));
Item::incrementOutbound(Protocol::ACTIVITYPUB);
return $postResult; return $postResult;
} }

View file

@ -655,6 +655,7 @@ class Notifier
$delivery_queue_count++; $delivery_queue_count++;
Salmon::slapper($owner, $url, $slap); Salmon::slapper($owner, $url, $slap);
Item::incrementOutbound(Protocol::OSTATUS);
Post\DeliveryData::incrementQueueDone($target_item['uri-id'], Post\DeliveryData::OSTATUS); Post\DeliveryData::incrementQueueDone($target_item['uri-id'], Post\DeliveryData::OSTATUS);
} }
} }