Posts Tagged with linux

posted by qubix on December 26, 2020

Well I had this old monitoring VM that needed to go from a nagios based monitoring to a zabbix based one.

1) OS UPDATE

The first culprit was that centos 6 was EOL forever and many things didn't work or needed some kind of fix.

Well this thing was stuck now at 6.6 centos. Since ver 6 is EOL, we have to use vault repos to update to latest 6 sources

So lets change the base repo contents with these: [C6.10-base] name=CentOS-6.10 - Base baseurl=http://vault.centos.org/6.10/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-updates] name=CentOS-6.10 - Updates baseurl=http://vault.centos.org/6.10/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-extras] name=CentOS-6.10 - Extras baseurl=http://vault.centos.org/6.10/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-contrib] name=CentOS-6.10 - Contrib baseurl=http://vault.centos.org/6.10/contrib/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never [C6.10-centosplus] name=CentOS-6.10 - CentOSPlus baseurl=http://vault.centos.org/6.10/centosplus/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never

before doing anything else lets grub the EPEL repo for this centos rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-6-10.el6.elrepo.noarch.rpm yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

now lets update stuff

yum clean && yum update

ok now we have updated our system in the latest possible software

2) PHP VERSION

The second culprit was that zabbix frontend requires php 5.4 and up, but centos 6 has 5.3.3 We will not use remi repos here, they are not complete and noone knows how long will support this centos version Instead...lets install php from source! yeaaahh :P

  • install required packages for compilation yum install autoconf libtool re2c bison libxml2-devel bzip2-devel libcurl-devel libpng-devel libicu-devel gcc-c++ libmcrypt-devel libwebp-devel libjpeg-devel openssl-devel libxslt-devel -y

  • grub php 5.6.40 (latest php 5.6) and untar/unzip the contents curl -O -L https://github.com/php/php-src/archive/php-5.6.40.tar.gz

tar -xvf php-5.6.40.tar.gz cd php-src-php-5.6.40/

now lets compile php

./buildconf --force

after we buildconf, we can customize with what we want to compile php. See ./configure --help about that to satisfy your needs

lets continue with our config ./configure --prefix=/usr/local/php56 --with-apxs2=/usr/sbin/apxs --with-freetype-dir=/usr/include/freetype2 --disable-short-tags --enable-xml --enable-cli --with-openssl --with-pcre-regex --with-pcre-jit --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-exif --with-gd --enable-intl --with-mysqli --enable-pcntl --with-pdo-mysql --enable-soap --enable-sockets --with-xmlrpc --enable-zip --with-webp-dir --with-jpeg-dir --with-png-dir --enable-json --enable-hash --enable-mbstring --with-mcrypt --enable-libxml --with-libxml-dir --enable-ctype --enable-calendar --enable-dom --enable-fileinfo --with-mhash --with-incov --enable-opcache --enable-phar --enable-simplexml --with-xsl --with-pear

oops error, apxs what? (used to build to apache php module) install httpd-devel

yum install httpd-devel

ok lets run again the above aaand... oops error, freetype something... ok install freetype-devel yum install freetype-devel

finally we move on make clean make make test make install

(make test will execute maaany tests. Probably will fail in some and will ask you to submit a report to php devs)

copy development php.ini to our new shine php 5.6 install cp php.ini-development /usr/local/php56/lib/php.ini

edit it and change max_execution_time, max_post_size max_upload_size etc to what zabbix expects (16MB for post, upload, 300 for execution time) also change date.timezone to your timezone

3) A NEWER MYSQL

Fortunately we can install a recent mysql , not that archaic 5.1 that comes with centos 6.

Let's install mysql community edition 8 !

rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm yum update yum install mysql-community-server service mysqld start

Well..that was it...

4) ZABBIX INSTALLATION

By now I think I have setup my weird environment, so it is time to install zabbix!

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

Now lets copy the apache configuration file from the docs of zabbix

cp /usr/share/doc/zabbix-web-*/httpd22-example.conf /etc/httpd/conf.d/zabbix.conf

Edit the configuration file to update the timezone to something like php_value date.timezone Europe/Athens

vi /etc/httpd/conf.d/zabbix.conf

Ok now we can create the zabbix database mysql -u root -p

oops...mysql root user already has a password set? Hmmm it seems that although I didn't run the mysql_secure_installation utility, mysql installation has set some root pass. Where can it be..maybe in /var/log/mysql.log

grep 'temporary password' /var/log/mysqld.log

and yes there was a temporary password set. I think it is a good time to run the mysql secure utility , set a new pass (the temp was expired anyway) and answer "Y" at the security options.

After that I can login to mysql to create zabbix database.

create database zabbix_db character set utf8 collate utf8_bin; GRANT ALL ON zabbix_db.* TO zabbix_dbuser@localhost IDENTIFIED BY 'some_decent_password_folks'; quit;

We can import the db schema like this cd /usr/share/doc/zabbix-server-mysql*/ zcat create.sql.gz | mysql -u zabbix_dbuser -p zabbix_db

After creating the db, update the zabbix_server.conf file with our new database, user and creds.

Ok I am ready to start everything and make them start on boot also, so lets do it service zabbix-server start service zabbix-agent start service httpd start chkconfig zabbix-server on chkconfig zabbix-agent on chkconfig httpd on chkconfig mysqld on

Now that everything is up, I'll visit our new and polished web interface to finalize setup http://mydomain.tld/zabbix/

and ofcourse..another error at the database step: Error connecting to database: No such file or directory

Wait ... zabbix web interface cannot find the mysql socket file? Let's try 127.0.0.1 instead of localhost...

...aaaand yet another error but predictable this time: Error connecting to database: Server sent charset unknown to the client. Please, report to the developers

It seems that mysql 8 has default charset "utfmb8" and that old zabbix doesn't know this. This is easily fixable though, just put these is /etc/my.cnf (if there isn't one, make it)

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 default_authentication_plugin = mysql_native_password

Restart mysqld service and this error is gone.

So, this took forever, but it is over. Or not? Wait..there is a newer version that I can use.. zabbix 4.4 which has the newer agent2.I SHOULD DO AN UPGRADE!! Oh well that is easy, install the newer rpm release and upgrade. Right? RIGHT?

rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/6/i686/zabbix-release-4.4-1.el6.noarch.rpm yum clean yum upgrade

aaand..no offer for zabbix updates other than the agent. This sucks, but lets see, where is the packages I want? Yum says nowhere but looking at the online repository I found that they are moved to the "deprecated" sub-repo.

https://repo.zabbix.com/zabbix/4.4/rhel/6/i386/deprecated/

Ok but why I don't see them? That's because this subrepo is disabled in the zabbix yum repo file

[zabbix-deprecated] name=Zabbix Official Repository deprecated - $basearch baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/6/$basearch/deprecated enabled=0

Enabled this, and now I got the binaries I need for the upgrade to go smoothly.

Let's visit the web interface to confirm everything works ok and the newer version at the bottom should say 4.4.10 instead of 4.2.8, and yes ANOTHER error because the database is older than the just upgraded zabbix.

It seems that I forgot to start the services I stopped :P and after the upgrade when the zabbix-server process starts, it checks the db and if it finds it outdate, and update begins and after a couple of minutes the interface was back online!

Now that everything is in order, just two more things:

  • If you use a firewall, you should open some necessary ports for zabbix and apache. I don't know what you use so I'll just throw some generic iptables: iptables -I INPUT -p tcp -m tcp --dport 10051 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 10050 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT /etc/init.d/iptables save

  • If you have another php installed (maybe the default 5.3.3) you can use the 5.6.40 from a .htaccess file at /usr/share/zabbix/ (make it if it is not there) like this:

AddHandler application/x-httpd-php56 .php .php5 .phtml
Wish me happy monitoring!

posted by qubix on April 1, 2018

install drush on cpanel based servers with EA4 per account

1) cpanel already has composer if EA4 /opt/cpanel/composer/bin

2) enable jailed shell access to account

3) ssh to server with account creds or keys or root and then su to user

4) composer require drush/drush:7.*

5) go to .bashrc and make an alias

alias drush-master=~/.config/composer/vendor/drush/drush/drush

6) source .bashrc to make changes immidiately availabe

7) go to drush folder and do composer install to fetch dependencies

8) drush-master status to check it is working

9) change tmp to be inside USER home just in case

go to .bashrc and put the line

TEMP=~/tmp

if you cannot edit .bashrc write this on cli EXPORT TEMP=~/tmp

you can see the change in drush-master status

10) now go to ~/public_html/sites/default/

execute drush status and see that drush sees your website

posted by qubix on February 9, 2018

You want to flush your DNS cache in linux? Well it is very very easy :]

Let's say you use systemd-resolve:

easy!


$ systemd-resolve --flush-caches

Let's say you use anything else (nscd, dnsmasq, named etc)

easier!

just restart the service


$ systemctl restart nscd (or dnsmasq, named etc)

or if you do not use systemd, you could try


service nscd restart

cheers!

PS: you probably need to have root privileges to execute the above commands

posted by qubix on November 1, 2017

θέλοντας να προσθέσω έναν client σε έναν nagios Monitoring server, ακολούθησα την τυπική διαδικασία:

-install nagios plugins -install nrpe -check nrpe config -open firewall ports etc

όλα παίζουν σωστά λοιπόν, NOT!!
μετά από λίγα λεπτά στον monitoring server άρχισαν να βαράνε τα νταούλια του nagios για unknown problems και τέτοια αγχωτικά.

Ξανακοιτάω τα πακέτα, τίποτα όλα κομπλέ..
βάζω το nrpe να βαστάει debug log και δεν βλέπω κάτι ενδιαφέρον:

[1509568185] Running command: /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/home
[1509568185] Command completed with return code 3 and output:
[1509568185] Return Code: 3, Output: NRPE: Unable to read output

Οπότε λέω να δοκιμάσω να τρέξω την εντολή να δω τι βγάζει.Άλλωστε από το log φαίνεται πως ο remote server κάνει την κλήση, αλλά εδώ κολλάει.
$ /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/home

-bash: /usr/lib64/nagios/plugins/check_procs: No such file or directory

What?? Τι είν τούτο? Αφού έβαλα τα πακέτα nagios-plugins και nagios-plugins-nrpe...
και φυσικά αυτά ΔΕΝ εγκαθιστούν τα plugins του nagios...
Απότι φαίνεται στο centos 7 υπάρχουν χωριστά πακέτα, ένα για κάθε plugin. 2 ώρες χαμένες από τη ζωή μου...

Ε τα έβαλα και ησύχασα :]

posted by qubix on May 15, 2017

Ξαφνικά χωρίς λόγο και αιτία, το webmail δεν δείχνει κανένα email, τα emails κολλάνε στην ουρά και όταν κοιτάς το log βλέπεις ένα κάρο debug info σχεδόν ακατανόητο.

Φυσικά μιλάμε για τον dovecot server που αναλαμβάνει τις συνδέσεις pop/imap.
Το κλειδί εδώ είναι μέσα στο χάος του log να βρούμε το σημείο που αρχίζει το πρόβλημα. Αν λοιπόν δούμε τη γραμμή:

Panic: file mail-index-sync-keywords.c: assertion failed

τα πράγματα ξεκαθαρίζουν γρήγορα. Ο dovecot μας λέει πως δεν μπορεί να κάνει sync το index του mailbox.
Ο λόγος είναι πως το αρχείο dovecot.index είναι corrupted και η λύση απλή:
σβήνουμε το αρχείο dovecot.index και κάνουμε εκ νέου ένα login στο webmail για να ξαναδημιουργηθεί!

posted by qubix on June 22, 2016

αν αναρωτιέστε γιατί δεν μπορείτε να στείλετε email από το νέο vps σας σε webmin, μην ψάχνετε πολύ μακρυά. Στο /var/log/mail.warn αν δείτε την παρακάτω γραμμή:

warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory

o server σας λέει πως δεν μπορεί να βρει τον sasl daemon, συνεπώς δεν μπορεί να κάνει authentication. Ο λόγος είναι πως λείπει το αρχείο

/var/run/saslauthd

το οποίο προσπαθεί να προσπελάσει για να διαπιστώσει αν τρέχει ο δαίμονας.

Στην πραγματικότητα το αρχείο βρίσκεται στο

/var/spool/postfix/var/run/saslauthd

οπότε με ένα symlink θα διορθωθεί το πρόβλημα:

ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd

posted by qubix on May 6, 2016

Well...for some reason ssh failed to bind to any port other than 22

Lets check first to what port we are trying to bind to


$ cat /etc/ssh/sshd_config | grep -i port

$ Port 5678

Ok now let's check what the logs said (yes it's systemd...)


$ journalctl -u sshd.service

systemd[1]: Starting OpenSSH server daemon...
 sshd[10158]: error: Bind to port 5678 on 0.0.0.0 failed: Permission denied.
 sshd[10158]: error: Bind to port 5678 on :: failed: Permission denied.
 sshd[10158]: fatal: Cannot bind any address.

Permission denied? I bet it is because selinux is in enforce mode! So the solution is to add the port we want to the selinux policy about ssh.

Firstly lets install the policy utils


$ yum install policycoreutils-python

Check current policy for ssh


$ semanage port -l | grep ssh

ssh_port_t        tcp      22

And add to it our desired port


$ semanage port -a -t ssh_port_t -p tcp 5678

ready!

posted by qubix on April 30, 2016

Αν διαχειρίζεστε cpanel server και λάβετε email σχετικά με κάποιο process upcp που ήδη τρέχει τα πράγματα είναι απλά:

μην πάτε να κλείσετε το process! Εκτός από κάποιες κουφές περιπτώσεις όπου το cpanel update process έχει κολλήσει από την προηγούμενη φορά που έτρεξε, το πιθανότερο είναι απλά να έχει ξεμείνει κάποιο process του crond.

Τρέξτε

ps aux | grep crond

και αν δείτε παραπάνω από ένα process ή σκοτώστε αυτό που νομίζετε πως είναι περιττό ή σκοτώστε τα όλα και τρέξτε ξανά το crond

easy ;)

posted by qubix on March 26, 2016

Ως γνωστόν με διάφορες κάρτες wifi της intel όπως 4859, 5100, 5300 κλπ υπάρχει το θέμα πως ότι linux distro και να βάλεις απλά έχεις ταχύτητα χελώνας.

Ο λόγος είναι πως o iwlwifi driver έχει διάφορα θέματα (για παράδειγμα κακή υποστήριξη n πρωτοκόλλου) και ως εκ τούτου στο thinkpad laptop μου, σε σύγκριση με τα windows, η ταχύτητα είναι 5 φορές μικρότερη περίπου.

Μετά από ψάξιμο, βρήκα κάποια λύση:

sudo rmmod iwlwifi
sudo modprobe iwlwifi 11n_disable=1 bt_coex_active=0 power_save=0 auto_agg=0 swcrypto=1

Τι κάνουν αυτά ρωτάτε?

11n_disable=1 απενεργοποιεί το n support
bt_coex_active=0 απενεργοποιεί το bluetooth
power_save=0 η κάρτα δεν μπαίνει σε powersave mode όταν δε χρησιμοποιείται
auto_agg=0 disable Aggregate MAC Protocol Data Unit (AMPDU)
swcrypto=1 enable software encryption

Δεν είναι απαραίτητο πως χρειάζεστε όλες αυτές τις παραμέτρους, το πρόβλημα μπορεί να λύνεται και μόνο πχ με 11n_disable ή με auto_agg & swcrypto

Υπάρχουν και άλλες παράμετροι με τις οποίες μπορείτε να πειραματιστείτε, περισσότερα στο forums.debian.net/viewtopic.php?f=16&t=121696

Για να κάνετε μόνιμες τις όποιες αλλαγές θέλετε κατά την φόρτωση του driver στην εκκίνηση 1) φτιάχτε, αν δεν υπάρχει, το αρχείο
/etc/modprobe.d/iwlwifi.conf
Γράψτε σε αυτό κάτι σαν το παρακάτω (σύμφωνα με τις ανάγκες σας)
options iwlwifi 11n_disable=1

Στο επόμενο boot, θα ισχύουν οι ρυθμίσεις που θα βάλετε στο αρχείο αυτό

posted by qubix on March 22, 2016

Ίσως γνωρίζετε το vinagre, το default app στο gnome για remote desktop connections. Είναι πολύ απλό στη χρήση, υποστηρίζει rdp,vnc,ssh, spice και είναι αρκετά γρήγορο.

Σε περίπτωση λοιπόν που την πατήσετε σαν εμένα που πήγα να δω ένα κολλημένο vm και δεν μπορούσα να επανέλθω στο desktop μου με τίποτα, το ..μαγικό key για να πάρετε πίσω τον έλεγχο του mouse είναι το.. F10


hyperworks