Klar, mache ich, danke.
Weil es zum Glück ein Testsystem ist, habe ich erst einmal die Runde hier gedreht. Aber der Kunde ist schon neugierig.
Klar, mache ich, danke.
Weil es zum Glück ein Testsystem ist, habe ich erst einmal die Runde hier gedreht. Aber der Kunde ist schon neugierig.
Hallo Community,
zum Glück auf einem Testsystem haben wir das Problem, dass die Tabelle agorumcoreaudit in kurzer Zeit auf über 300GB angewachsen ist.
In der MySQL-Statistik stand sogar noch 40GB und für die reale Belegung war noch ein "analyze table" nötig.
Als Ursache haben wir einen Worker identifiziert, der eigentlich keinen Arbeitsvorrat mehr hätte haben sollen
Auf anderen Installationen habe ich auch Audit-Tabellen gesehen, deren Tabellen wieder fast leer waren.
Kann man die Audit-Tabelle irgendwie "bereinigen"? Werden Einträge nach gewisser Zeit gepurgt oder zusammengefasst?
Grüße
Norbert
Danke
Von diesem Dokument und einem Blogbeitrag bin ich ausgegangen. Leider bin ich unterbrochen worden und komme einfach nicht zum Vervollständigen des Beitrags
Datensicherung: agorum core mit veeam und VMware sichern von Oliver Schulze
Hallo,
wir wollen bei uns im Haus das Backup überarbeiten. Ich habe den Blogeintrag von Oliver gelesen. So wie ich es verstehe, macht Ihr ein Flush table with Read lock.
Der Read-Lock wird aber freigegben, wenn die Verbindung
Hallo zusammen,
Wir haben Installationen, bei denen eine große Anzahl ".log"-Dateien im zookeeper zu finden sind. Zum Beispiel auch in Musterfirma-VMs
Das sind leider Transaktionslogs, die nicht einfach gelöscht werden können.
Wie kann die Agorum-Zookeper-Installation so angepasst werden, dass diese Dateien automatisch weggeräumt werden?
Ich habe auch schon selbst in den Konfigurationsdateien herumgespielt. Leider hat mich der Zookeeper ignoriert.
Letztendlich habe ich SOLR und den Zookeeper neu installiert.
Das ist besonders bei Docker-Containern unangenehm.
Wie viel Platz dabei verloren gehen kann, sieht man daran, das die Logs im Tar-GZ auf bis zu 5% eingedampft werden.
Grüße
Norbert
Bei SOLR können auch Daten zu Metriken und gesammelte Statistiken abgeholt werden. Sie können sogar gleich als PNG-Bilddateien heruntergeladen werden. Die einfachste Variante ist natürlich per Request aus Agorum heraus, denn es entfällt das Tunneln des SOLR-Ports per SSH-Port-Forwarding.
Doku bei SOLR:
Im betreffenden System läuft ein SOLR 7.7.2.
Einige Links:
https://solr.apache.org/guide/7_7/performance-statistics-reference.html
Für unseren Zweck: https://solr.apache.org/guide/7_7/metrics-history.html
Um schnell einen Überblick über die Memory-Belegung zu bekommen, wollten wir Histogramme bekommen. Dazu lautet der Link auf dem Agorum-Host:
http://localhost:8981/solr/adm…ame=solr.jvm&format=graph
Als Antwort kommt ein JSON mit base64-encodierten PNGs. Das sieht etwa so aus:
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":826},
"metrics":{
"solr.jvm":{
"data":{
"RRA:AVERAGE:0.5:1:240":{
"values":{
"memory.heap.used":"iVBORw0KGgoAAAANSUhEUgAAAkQAAADlCAIAAAA9XX9vAAAgkUlEQVR42u2dX2gc173HDUIsRmIxGCOEKULFIQQ........",
"os.processCpuLoad":"iVBORw0KGgoAAAANSUhEUgAAAkQAAADlCAIAAAA9XX9vAAAd6UlEQVR42u2db2gcVb/HA2EJ4QYplFCkh.......",
Alles anzeigen
In Agorum bleibt jetzt nur etwas Fleißarbeit, etwa so:
let StringBase64Utils = Packages.agorum.commons.string.StringBase64Utils;
// siehe client.json
function getSvc(host, path, config, query) {
let conf = {
type: 'application/xml', // Was liefern wir
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', // Was wollen wir,
'Accept-Language': 'en-US,en;q=0.5'
};
conf = Object.assign(conf, config);
let svc = apiClient(host, conf)(path);
if (query) {
svc.query(
query
);
}
return svc;
}
let path = '/solr/admin/metrics/history';
let query = {'action':'get','name':'solr.jvm','format':'graph'};
let rsp = getSvc('http://127.0.0.1:8981', path ,null,query).get();
let metrics = rsp.metrics['solr.jvm'].data;
const pngPath = '';
// das ergebnis-json parsen
// name ist so etwas wie "RRA:AVERAGE:0.5:1:240":
// memory.heap.used enthält das Base64
let heapList = Object.keys(metrics).map(it => {
return { name: it,
memory: metrics[it].values['memory.heap.used']
} ;
});
let list = heapList.map( it => {
// return mit dem dekodierten PNG
return { name: it.name,
memoryHistogramm: StringBase64Utils.decodeFromBase64Bytes(it.memory)
} ;
});
//jedes listenelement enthält ein PNG. Irgenwohin schreiben in Agorum. Damit hat man die Bildazeige gratis.
list.forEach( it => {
saveWhereEver(it.name, it.memoryHistogramm );
});
Alles anzeigen
Mit property geht's noch einfacher. Siehe letzten Post zum Round-Table im Februar. Der Request ist einfacher. Und wie man schon sieht, lassen sich auch so interessante Daten wie CPU-Load holen.