GUADEC: Βοηθήστε για ένα καταπληκτικό συνέδριο! Γίνετε εθελοντής...
Φέτος, το GUADEC θα πραγματοποιηθεί στο Πανεπιστήμιο Μακεδονίας Θεσσαλονίκης στις 23-28 Αυγούστου. Είναι ένα σαββατοκύριακο συνομιλιών, ανοιχτού κώδικα, ανταλλαγής ιδεών και διασκέδασης! Πέρυσι, πολλοί ενθουσιώδεις εθελοντές βοήθησαν να κάνουμε ένα εκπληκτικό συνέδριο! Φέτος θέλουμε ξανά βοήθειά σας για να κάνουμε ακόμα καλύτερη την Ελληνική έκδοση του συνεδρίου!
Απαιτήσεις:
- ΚΑΜΙΑ δεξιότητα προγραμματισμού!
- Να είστε ευγενικοί
Μερικές από τις ευθύνες:
- Καλωσόρισμα επισκεπτών και βοήθεια στις εγγραφές
- Στήσιμο ή ξεστήσιμο στην αρχή και στο τέλος και τακτοποίηση του χώρου
- Καθοδήγηση επισκεπτών στο χώρο
- Διανομή του μικροφώνου στο κοινό
- Διατήρηση χρονομέτρου για τους ομιλητές
- Προετοιμασίες αναγκών των workshops (Δευτέρα-Τρίτη)
- Βοήθεια για τον διαμοιρασμό και έλεγχο των κουπονιών σίτισης κατά τη διάρκεια του συνεδρίου
Οφέλη:
- ΘΑ ΔΙΑΣΚΕΔΑΣΕΤΕ
- Ένα δωρεάν εισιτήριο εισόδου
- ΘΑ ΔΙΑΣΚΕΔΑΣΕΤΕ ΑΚΟΜΑ ΠΙΟ ΠΟΛΥ
Τέλεια. Είμαι μέσα Πώς να υποβάλω αίτηση;
Μπείτε στο https://discourse.gnome.org/g/guadec-volunteers και ενημερώστε μας εάν θέλετε να βοηθήσετε! Εκεί θα γίνει η οργάνωση και η συνεννόηση. Αν έχετε κάποια ερώτηση για τα διαδικαστικά (πως θα γραφτούμε, πότε θα έρθουμε, τι θα κάνουμε κλπ), εκεί θα σας δοθεί η απάντηση.
Using syslog-ng with the Elastic stack
One of the most popular destinations of syslog-ng is Elasticsearch. Any time a new language binding was introduced to syslog-ng, someone implemented an Elasticsearch destination for it. For many years, the official Elasticsearch destination for syslog-ng was implemented in Java. With the recent enhancements to the http() destination of syslog-ng, a new, native C-based implementation called the elasticsearch-http() destination is available.
Why do so many people want to send their logs to Elasticsearch? There are many reasons:
-
it is an easy-to-scale and easy-to-search data store
-
it is NoSQL: any number of name-value pairs can be stored (Hello, message parsing!)
-
Kibana: an easy-to-use data explorer and visualization solution for Elasticsearch
And why use syslog-ng on the sending side? There are very good reasons for that, too:
-
A single, high-performance and reliable log collector for all your logs, no matter if they come from network devices, local system or applications. Therefore, it can greatly simplify your logging architecture.
-
High speed data processor that parses both structured (JSON, CSV, XML) and unstructured (PatternDB) log messages. It can also anonymize log messages if required by policies or regulations, and reformat them to be easily digested by analyzers.
-
Complex filtering, to make sure that only important messages get through and that they reach the right destination.
This blog post is based on the Elasticsearch-specific parts of the syslog-ng workshop I gave recently at the Pass the SALT conference in Lille, France.
Before you begin
The elasticsearch-http() destination was introduced in syslog-ng version 3.21. To be able to use it, you need HTTP and JSON support enabled in syslog-ng. If you installed syslog-ng in a package, these features might be in separate sub-packages so you can avoid installing any extra dependencies. Depending on your distribution, the necessary package might be called syslog-ng-http (Fedora/RHEL/CentOS), syslog-ng-curl (openSUSE/SLES) or syslog-ng-mod-http (Debian, Ubuntu). Recent versions of FreeBSD ports enable these features by default.
If it is not available as part of your Linux distribution, check our 3rd party binaries page for downloads, or build it yourself from source.
Obviously, you also need Elasticsearch to be installed. The example configuration is tested to work with Elasticsearch 7.X. The minimal differences between 7.X and earlier versions from the syslog-ng configuration point of view will be noted.
Learn how to install syslog-ng and Elasticsearch 7 on RHEL/CentOS, our most popular platforms: https://www.syslog-ng.com/community/b/blog/posts/syslog-ng-and-elasticsearch-7-getting-started-on-rhel-centos
Learning syslog-ng
If you are new to syslog-ng, you can learn about the basics, its major building blocks and configuration from my blog at https://www.syslog-ng.com/community/b/blog/posts/building-blocks-of-syslog-ng. It is the generic part of the syslog-ng workshop I gave at the Pass the SALT conference in Lille.
Once you are confident with the basic concepts, it will be easier to read the documentation. It is massive (well over 300 pages, detailing all the smallest details of syslog-ng), and available at https://www.syslog-ng.com/technical-documents/list/syslog-ng-open-source-edition/
Elasticsearch
Originally, the official syslog-ng Elasticsearch driver was written in Java. It is still available, but most likely will be phased out once the new elasticsearch-http() is fine-tuned. It has several disadvantages (namely, it cannot be included in Linux distributions, and requires a lot more resources), though. The new elasticsearch-http() destination is a wrapper around the http() destination of syslog-ng,written as native C code. As it does not have any “esoteric” dependencies, it can be part of any Linux distributions. Except for extreme load, it is a lot less resource-hungry than the Java-based destination. It only uses more resources than the Java-based Elasticsearch destination in some extreme cases.
Below you can see a very basic configuration for syslog-ng, which saves logs locally and sends the same logs to Elasticsearch as well. This way you can easily check if your logs arrive to Elasticsearch.
@version:3.21
@include "scl.conf"
source s_sys { system(); internal();};
destination d_mesg { file("/var/log/messages"); };
log { source(s_sys); destination(d_mesg); };
destination d_elasticsearch_http {
elasticsearch-http(
index("syslog-ng")
type("")
url("http://localhost:9200/_bulk")
template("$(format-json --scope rfc5424 --scope dot-nv-pairs
--rekey .* --shift 1 --scope nv-pairs
--exclude DATE --key ISODATE @timestamp=${ISODATE})")
);
};
log {
source(s_sys);
destination(d_elasticsearch_http);
flags(flow-control);
};
The configuration above sends log messages to Elasticsearch using the new elasticsearch-http() destination. You need to set an index name and a URL. The type() option is also mandatory, but for Elasticsearch 7.X you should leave it empty. You can see that the Elasticsearch destination uses a complex template (namely, it uses JSON formatting and sends not only syslog data, but name-value pairs parsed from messages as well).
Name-value pairs created by out-of-box parsers of syslog-ng start with a dot. When formatted into JSON, these initial dots are turned into underscores, which is problematic with Elasticsearch. In the template above, initial dots are simply removed. While it is OK in most cases, in your specific environment it might cause problems (namely, overwriting existing name-value pairs), so double check the name of your name-value pairs before using this template.
Elasticsearch prefers the ISODATE date format over the traditional syslog date format, which is why timestamp is replaced on the last line of the template.
You can learn a lot more about configuring syslog-ng for Elasticsearch from the syslog-ng documentation. Here I would like to highlight two differences from Beats/Logstash:
-
If you want to feed a cluster of Elasticsearch nodes using syslog-ng, you have to list the nodes in the url() parameter. There is no automatic node discovery.
-
By default, syslog-ng sends all data to Elasticsearch as string, which limits how data can be used. You can use mapping on the Elasticsearch side, and you can also configure data type on the syslog-ng side: https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.16/administration-guide/9#TOPIC-956418
Testing
The configuration above sends all system logs to the Elasticsearch destination as well, so you will most likely have some sample logs in Elasticsearch very soon. If your test machine does not produce any logs within a reasonable time frame, you can use the logger utility to send a few test messages:
logger this is a test massage
Even without extra configuration, you can see results from message parsing in Elasticsearch. Recent (3.13+) versions of syslog-ng parse sudo log messages automatically. If you run any commands through sudo, you should see name-value pairs parsed from sudo messages.
What is next?
Learn what is new with Elasticsearch 7 and syslog-ng, and how to send geographical data from syslog-ng to Elasticsearch along the way: https://www.syslog-ng.com/community/b/blog/posts/syslog-ng-with-elastic-stack-7
If you have questions or comments related to syslog-ng, do not hesitate to contact us. You can reach us by email or you can even chat with us. For a long list of possibilities, check our contact page at https://syslog-ng.org/contact-us/. On Twitter I am available as @Pczanik.
Zorin OS 15 | Review from an openSUSE User
Email Consolidation
I’ve got too many email addresses.
I have:
- 2 for work
- 1 alias for opensuse.org
- 1 paid account with protonmail with 5 addresses shared in that account
- 1 very old gmail account (I signed up the first day I heard about it).
- 1 seznam account (Czech provider)
- 1 installation of mail-in-a-box with 4 domains that I own but only one real account that I use
- 1 librem.one account (this is a mistake and a disappointment)
The goal is to change all of the services, mailing lists, etc that I use to point to a single email account either directly or through aliases so that all of my email is in one place with the exception of my work email which should always stay separate. Also, to get people to only email me at the one account.
to be continued…
Chafa 1.2.0: Faster than ever, now with 75% more grit
For all you terminal graphics connoisseurs out there (there must be dozens of us!), I released Chafa 1.2.0 this weekend. Thanks to embedded copies of some parallel image scaling code and the quite excellent libnsgif, it's faster and better in every way. What's more, there are exciting new dithering knobs to further mangle refine your beautiful pictures. You can see what this stuff looks like in the gallery.
Included is also a Python program by Mo Zhou that uses k-means clustering to produce optimal glyph sets from training data. Neat!
Thanks to all the packagers, unsung heroes of the F/OSS world. Shoutouts go to Michael Vetter (openSUSE) and Guy Fleury Iteriteka (Guix) who got in touch with package info and installation instructions.
The full release notes are on GitHub.
What's next
I've been asked about sixel support and some kind of interactive mode. I think both are in the cards… In the meantime, here's a butterfly¹.

¹ Original via… Twitter? Tumblr? Imgur? Gfycat? I honestly can't remember.
GUADEC: Ποιος είναι ο τυχερός κεντρικός ομιλητής του συνεδρίου;
Αφού αποφασίσατε να έρθετε στο συνέδριο GUADEC, η επόμενη κίνηση είναι να ψάξετε στο πρόγραμμα για ποια ομιλία θέλετε να παρακολουθήσετε. Είπαμε, μην είστε ανυπόμονοι. Θα ανακοινωθεί στην ιστοσελίδα https://2019.guadec.org/. Μάλιστα θα ανακοινωθεί και η εφαρμογή που θα μπορείτε να βλέπετε το πρόγραμμα πιο εύκολα.
Η συνηθισμένη δομή όλων των συνεδρίων είναι:
1. Επίσημη έναρξη του συνεδρίου
2. Κεντρική ομιλία από ένα σημαντικό πρόσωπο που έχει κάνει την διαφορά στον χώρο
3. Ομιλίες
Στην κεντρική ομιλία, συμμετέχουν όλοι οι σύνεδροι. Στην συνέχεια ακολουθεί ένα διάλειμμα και ο καθένας πάει στην αίθουσά του για τις παρουσιάσεις-ομιλίες. Η κεντρική ομιλία μπορεί να γίνει και στο τέλος της πρώτης ημέρας, έτσι ώστε να είναι σίγουροι ότι θα είναι όλοι παρόντες.
Ποιος είναι ο τυχερός φέτος;
Το όνομά του είναι Dr Luis Falcon.
Το βιογραφικό του;
Ο Luis Falcón, M.D., B.Sc, είναι κάτοχος πτυχίου Πληροφορικής και Μαθηματικών από το Πανεπιστήμιο της Καλιφόρνιας (ΗΠΑ) και της Ιατρικής από το IUCS στο Μπουένος Άιρες (Αργεντινή). Ο Dr. Falcon είναι ένας ακτιβιστής κοινωνικών δικαιωμάτων, δικαιωμάτων των ζώων και ακτιβιστής ελεύθερου λογισμικού. Είναι ο ιδρυτής του GNU Solidario, ενός μη κερδοσκοπικού οργανισμού που παρέχει Υγεία και Εκπαίδευση με Ελεύθερο Λογισμικό. Ο Dr. Falcon είναι ο προγραμματιστής που έφτιαξε το GNU Health, του βραβευμένου Συστήματος Πληροφοριών Υγείας και Νοσοκομειακών Συστημάτων (Ιατρικού Φακέλου), πάντα με ελεύθερα δικαιώματα χρήσης. Είναι προσκεκλημένος ομιλητής σε εθνικά και διεθνή συνέδρια για το Ελεύθερο Λογισμικό, την Ηλεκτρονική Υγεία και την Κοινωνική και Προληπτική Ιατρική. Ο Dr. Falcon σήμερα ζει στις Καναρίους Νήσους, στην Ισπανία.
Περιγραφή ομιλίας του:
GNU HEALTH: Ο αγώνας για τα δικαιώματά μας για ένα παγκόσμιο και ανώτερο Σύστημα Δημόσιας Υγείας.
Η υγεία πρέπει να παραμείνει ένα αμετάκλητο ανθρώπινο δικαίωμα. Το GNU Health είναι ένα "κοινωνικό έργο" που χρησιμοποιεί την τεχνολογία και τη φιλοσοφία του Ελεύθερου λογισμικού για την παροχή ελευθερίας και ισότητας στην υγειονομική περίθαλψη.
Στην ομιλία του θα ασχοληθεί με τη σημασία του Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα στη Δημόσια Υγεία, τη διακυβέρνηση δεδομένων, την ιδιωτικότητα και την ανάγκη καθολικής εφαρμογής ενός μοναδικού αναγνωριστικού-ταυτότητας ατόμου / ασθενούς. Θα μιλήσει για τις αντιφάσεις και τους κινδύνους ιδιωτικών εταιρειών στο σύστημα δημόσιας υγείας, όπως οι υπηρεσίες "cloud", στο σύστημα δημόσιας υγείας.
Θα συνοψίσει ορισμένες βασικές πτυχές του GNU Health που ωφελούν το σύστημα δημόσιας υγείας: από τους κοινωνικοοικονομικούς καθοριστικούς παράγοντες της υγείας μέχρι την τεχνολογία αιχμής στην βιοπληροφορική και την κλινική γενετική. Επιπλέον, θα παρουσιάσει το GNU Health Federation που ενσωματώνει πληροφορίες που προέρχονται από χιλιάδες εγκαταστάσεις υγείας σε ένα σύστημα δημόσιας υγείας της χώρας και σε προσωπικές συσκευές υγείας.
Τέλος, θα επανεξετάσει ορισμένες αξιοσημείωτες περιπτώσεις εφαρμογής που έγιναν κατά τη διάρκεια αυτών των 10 ετών, την κοινότητα του GNU Health και πώς να συμμετάσχετε στο έργο της.
ΧΩΡΟΣ ΚΑΙ ΗΜΕΡΟΜΗΝΙΑ
Να δούμε τα σίγουρα. Η ομιλία θα γίνει στις 23 Αυγούστου 2019 στο κεντρικό αμφιθέατρο του Πανεπιστημίου Μακεδονίας (ισόγειο, στα δεξιά, θα δείτε τα βελάκια).
Αναμένουμε την ώρα (πάντως ή το πρωί γίνεται ή το απόγευμα, η τελευταία).
Βολεύει πάντως να είναι η τελευταία γιατί μετά θα ακολουθήσει δεξίωση, οπότε ταιριάζει με το εορταστικό κλίμα.
Debugging jenkins
We had strange near-daily outages of our internal busy jenkins for some weeks.
To get to the root cause of the issue, we enabled remote debugging with
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=ci.suse.de -Dcom.sun.management.jmxremote.password.file=/var/lib/jenkins/jmxremote.password
and attached visualvm to see what it was doing.
This showed the number of threads and memory usage in a sawtooth pattern. Every time the garbage collector ran, it dropped 500-1000 threads.
Today we noticed that every time it threw these java.lang.OutOfMemoryError: unable to create new native thread errors, the maximum number of threads was 2018… suspiciously close to 2048. Looking for the same time in journalctl showed
kernel: cgroup: fork rejected by pids controller in /system.slice/jenkins.service
So it was systemd refusing java’s request for a new thread and jenkins not handling that gracefully in all cases.
That was easily avoided with a
TasksMax=8192
Now the new peak was at 4890 live threads and jenkins served all Geekos happily ever after.
Bersama Team Excellent pada Acara Zimbra
Beberapa waktu yang lalu ada acara Zimbra partner di Jakarta. Namanya Zimbra Activ8, mengenai partner briefing terkait pengembangan produk Zimbra dimasa depan. Acaranya diadakan di The Westin Jakarta beberapa waktu yang lalu.
Acara ini juga diselenggarakan bersamaan dengan acara Customer Appreciation Lunch, undangan makan siang untuk beberapa customer Zimbra sebagai bentuk apresiasi Zimbra terhadap customer yang sudah menggunakan Zimbra Network Edition untuk keperluan messaging mereka.



Team Excellent hadir mendampingi karena ada beberapa customer Excellent yang diundang. Ini juga sebagai bentuk apresiasi Excellent untuk customer yang memilih Excellent sebagai partner professional services terkait implementasi dan maintenance infrastruktur Zimbra di kantor klien.
Thanks untuk team Zimbra untuk acara yang menarik dan berkesan ini dan thanks untuk semua customer maupun rekanan yang berkenan hadir. Appreciate!
Adding timestamps to bash scripts with ts
I don’t know when I started writing a lot of bash scripts. It just seemed to happen over the last few years, possibly because bash is pretty much universally available, even on newly installed Linux systems.
Despite its benefits, one of the things I really hate about bash is
logging. Rolling my own timestamps can be a real PITA, but they’re so
useful that I can’t live without them (optimising software performance
for a living gives you a rather unhealthy obsession with how long things
take). Every script I write ends up using a different timestamp format
because I just can’t seem to remember the date command I used last.
At least, that was the old me. The new me has discovered the perfect
tool: ts from the moreutils
package.
ts prepends a timestamp to each line it receives on stdin. Adding a
timestamp in your log messages is a simple as:
$ echo bar | ts
Jul 28 22:27:51 barYou can also specify a strftime(3) compatible format:
$ echo bar | ts "[%F %H:%M:%S]"
[2019-07-28 22:34:48] barBut wait, there’s more! If a simple way to print timestamps wasn’t
enough, ts can also parse existing timestamps in the input line (by
feeding your ts-tagged logs back into ts) and preprend an additional
timestamp with cumulative and relative times between consecutive lines.
This is fantastic for answering two questions:
-
When was a log message printed relative to the start of the program? (
-s) -
When was a log message printed relative to the previous line? (
-i)
The -s option tells you how long it took to reach a certain point of
your bash script. And the -i option helps you which parts of your
script are taking the most time.
$ cat sleeper.sh && ./sleeper.sh
#!/bin/bash
FMT="[%H:%M:%S]"
for i in 1 2 3; do
echo "Step $i"
sleep $((i*10))
done | ts $FMT | ts -s $FMT | ts -i "[+%s]" | awk '
BEGIN { print "Timestamp | Runtime | Delta";
print "---------------------------" }
{
# ts(1) only prepends. Rearrange the timestamps.
printf "%s %s %s ", $3, $2, $1;
for (i=4; i <= NF; i++) {
printf "%s ", $i;
}
printf "\n";
}'
Timestamp | Runtime | Delta
---------------------------
[23:15:22] [00:00:00] [+0] Step 1
[23:15:32] [00:00:10] [+10] Step 2
[23:15:52] [00:00:30] [+20] Step 3
$Beat that, hand-rolled date timestamps.
使用 gcloud 建立 openSUSE Leap 15 GCE with startup-script 小記
- 這邊我有透過 -v 把本機上面的三個平台的設定檔掛載到容器內, 還有 .ssh 目錄 也掛載上面, 因為 google 的 SSH 金鑰 也會存放在裡面
- 這邊我有實驗過, 不可以將兩個指令用 && 串接, 會失敗, 所以就先拆開為兩行, 以後再找原因
- --project 是因為我有多個 profile 所以指定那一個專案
- 使用指定 --image-family 方式來取得最新的 image, 而不是 --image 指定某個版本 image


